Convertir de binario a decimal y viceversa en Java

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.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.