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.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *