Hola a todos, hoy os voy a enseñar a como convertir una cifra binaria a decimal y viceversa en Java.
Si queremos pasar de decimal a binario, es proceso normal es el siguiente:
- Cogemos el modulo de 2 de ese numero.
- Multiplicamos ese numero por 10 elevado al indice correspondiente.
- Lo sumamos al total.
- Dividimos el numero entre 10.
- Repetimos el proceso anterior hasta llegar a 0.
El código para pasar de decimal a binario:
/** * Convierte de decimal a binario. Solo positivos * * @param decimal Decimal a convertir * @return numero en formato binario, -1 si el numero es negativo */ public static long decimalABinario(int decimal) { long binario = 0; int digito; final int DIVISOR = 2; for (int i = decimal, j = 0; i > 0; i /= DIVISOR, j++) { digito = i % DIVISOR; binario += digito * Math.pow(10, j); } return binario; }
Si queremos pasar de decimal a binario, es proceso normal es el siguiente:
- Cogemos el modulo de 10 de ese numero.
- Multiplicamos ese numero por 2 elevado al indice correspondiente.
- Lo sumamos al total.
- Dividimos el numero entre 10.
- Repetimos el proceso anterior hasta llegar a 0.
- Si en cualquier momento, la cifra no es cero o uno, retornamos un -1 para indicar que esta mal.
El código para convertir de binario a decimal:
/** * Convierte de decimal a binario. Solo positivos * * @param binario Binario a convertir en formato numerico * @return numero en formato decimal, -1 si no es un numero binario */ public static int binarioADecimal(long binario) { int decimal = 0; int digito; final long DIVISOR = 10; for (long i = binario, j = 0; i > 0; i /= DIVISOR, j++) { digito = (int) (i % DIVISOR); if (digito != 0 && digito != 1) { return -1; } decimal += digito * Math.pow(2, j); } return decimal; }
Os enseño un pequeño ejemplo:
public class ConversionBinarioDecimal { public static void main(String[] args) { int numero = 140; long binario = decimalABinario(numero); System.out.println(numero + " en binario es: " + binario); int decimal = binarioADecimal(binario); System.out.println(binario + " en decimal es: " + decimal); } /** * Convierte de decimal a binario. Solo positivos * * @param decimal Decimal a convertir * @return numero en formato binario, -1 si el numero es negativo */ public static long decimalABinario(int decimal) { long binario = 0; int digito; final int DIVISOR = 2; for (int i = decimal, j = 0; i > 0; i /= DIVISOR, j++) { digito = i % DIVISOR; binario += digito * Math.pow(10, j); } return binario; } /** * Convierte de decimal a binario. Solo positivos * * @param binario Binario a convertir en formato numerico * @return numero en formato decimal, -1 si no es un numero binario */ public static int binarioADecimal(long binario) { int decimal = 0; int digito; final long DIVISOR = 10; for (long i = binario, j = 0; i > 0; i /= DIVISOR, j++) { digito = (int) (i % DIVISOR); if (digito != 0 && digito != 1) { return -1; } decimal += digito * Math.pow(2, j); } return decimal; } }
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta