¿Cómo pasar de decimal a binario en Java?

Estoy haciendo un programa con arrays que convierte un número binario a un decimal y después que vuelva a ser binario, tratando cada una de las posiciones del número binario, mirando si es 0 o 1 y realizando la operación correspondiente en base a dicha posición. De binario a decimal lo conseguí, aunque salen ceros de mas creo que esta bien, y ahora para pasar de decimal a binario me he atascado, la manera de resolverlo es dividiendo el numero que se ponga para pasar a binario entre 2 y el cociente otra vez entre 2, así hasta que el cociente sea menor que 2, y el número binario son los residuos de esas operaciones, dejo lo que hice a ver si alguien me puede ayudar.

public class CalculadoraBinaria {

    /**
     * @param args
     */
    public static void main(String args[]) {

        //De binario a decimal

        double[] binario = {1000};
        int exp = 0;
        double decimal = 0;

        for(int i = 0; i < binario.length; i++) {
            for(exp = 0; exp < 4; exp++) {
                decimal = binario[i] * (int)Math.pow(2, exp);
            }
        }
        System.out.println("El número binario 1000 en decimal es: " + decimal);

        //De decimal a binario

        double[] decimal2 = {8000};
        double binario2 = 0;
        for(int n = 0; n < decimal2.length; n++) {
            binario2 = decimal2[n] % 2;
        }
        System.out.println(binario2);

    }

}
5
задан 09.11.2016, 21:34
3 ответа

Давайте говорить, что у нас есть следующее десятичное число: 13. Чтобы происходить десятичного в бинарный мы должны разделять все частные между двумя и потом брать останки наоборот, вместе с последним частным, с правой стороны до левой стороны.

Делая деление:

13|2
  └───
1  6 |2
     └───
   0  3 |2
        └───
      1  1

А следовательно 13(10) он равно как 1101(2)

Сказанный это, мы идем анализировать, как мы можем делать это. Мы, должно быть, возьмем все останки больше последнее частное. В свою очередь, мы будем должны хранить предыдущее частное, чтобы мочь доставать в свою очередь снова оставшуюся часть. Мы будем хранить останки в одном ArrayList<String> чтобы мочь вводить элементы в начале String. Позже мы это обратим в String, чтобы это печатать.

С кодом, в этом случае, я буду включать это в функции для того, чтобы он смог быть более модульным в будущем:

public static String obtenerBinario(int numero){
   ArrayList<String> binario = new ArrayList<String>();
   int resto;
   String binarioString = "";

   do{
      resto = numero%2;
      numero = numero/2;
      binario.add(0, Integer.toString(resto));
   }while(numero > 2); //Haremos el bucle hasta que el cociente no se pueda dividir mas

   binario.add(0, Integer.toString(numero)); //Cogeremos el ultimo cociente

   //Cogemos cada uno de los elementos del ArrayList y los juntamos en un String
   for(int i = 0; i < binario.size(); i++){
       binarioString += binario.get(i);
   }
   return binarioString;
 }

Таким образом, если у тебя есть array, ты можешь повторять из-за каждого из элементов array доставая Вашего бинарного. Например, для следующих чисел:

int[] array = {13, 150, 20, 5};

for(int i = 0; i < array.length; i++){
   System.out.println(obtenerBinario(array[i]));
}

Мы получили бы следующий вывод:

1101
10010110
10100
101
5
ответ дан 24.11.2019, 12:40
  • 1
    В конце концов har и # 233; схвати и # 237; так как с arrays мне осложняется достаточно с десятичным...: int decimal2 = 8; String binario2 = " "; while (decimal2 > 0) {binario2 = decimal2 % 2 + binario2; decimal2 = decimal2/2;} – DrWho 10.11.2016, 14:23

Как происходить десятичного в бинарный в Java?

Я не ломаюсь голова с алгоритмами, если я не нуждаюсь в том, чтобы сделать это. Просто я использую то, что уже доступно в стандартном книжном магазине.

Код:

public static void main(String[] args) {
    int decimalInicial = 8;

    // de decimal a binario
    String binario = Integer.toBinaryString(decimalInicial);
    System.out.println(binario); // 1000

    // de binario a decimal
    int decimalConvertido = Integer.parseInt(binario, 2);
    System.out.println(decimalConvertido); // 8
}

Результат:

1000
8

6
ответ дан 24.11.2019, 12:40

Так как, чтобы конвертировать десятичного в бинарный, будут осложнять ты да, ты хочешь сделать это беря число как array, он был бы более легким да взятия все число, так как, как ты упомянул об этом:

способ это решать - разделяя число, которое кладется, чтобы происходить в бинарный между 2 и частным снова между 2, я схватил до тех пор, пока частное не будет меньше, что 2 Здесь оставил тебе пример, как он был бы кодом:

public static void main(String[] args) {

        int numero, exp, digito;
        double binario;
        Scanner sc = new Scanner(System.in);

        do{  
            System.out.print("Introduce un numero entero >= 0: ");
            numero = sc.nextInt();
        }while(numero<0);

        exp=0;
        binario=0;
        while(numero!=0){
                digito = numero % 2;            
                binario = binario + digito * Math.pow(10, exp);   
                exp++;
                numero = numero/2;
        }
        System.out.printf("Binario: %.0f %n", binario);
    }

Я надеюсь, что он подает тебя для того, что ты ищешь.

1
ответ дан 24.11.2019, 12:40