Отсутствует 1 бит во время двоичного преобразования в десятичное в 8 - PullRequest
0 голосов
/ 25 октября 2018

Я написал простой метод в Java для преобразования десятичного числа в его 8-битное двоичное представление.Тем не менее, для определенных чисел он возвращает 7 бит вместо 8 бит, а для других чисел он работает отлично.

Я пытался выяснить это уже 2 часа и провёл свое исследование на этом сайте безрезультатно.Любая помощь очень ценится.Спасибо!

public static void convertBinary(int n) {
    int[] arr = new int[8]; //initialized to hold 8 bit places
    int counter = 0;
    String binary = "";

    while(n > 0) {
        arr[counter] = n % 2;
        n /= 2;
        counter++;
    }
    for(int i = counter; i >= 0; i--) {
        binary = "" + arr[i];
        System.out.print(binary);
    }
} 

Когда я вызываю convertBinary (125), я получаю 01111101, который является правильным 8-битным представлением.

Однако, когда я вызываю его как convertBinary (32), я получаю 0100000, в котором отсутствует 1 бит.Я хочу получить результат 00100000.

Я думал, что инициализация массива 8 размеров поможет с заполнением нуля спереди, но по какой-то причине это не работает.Я нахожусь в конце моего ума здесь и снова, любая помощь очень ценится.Спасибо!

1 Ответ

0 голосов
/ 25 октября 2018

Вы перебираете количество бит в данном номере 32, который имеет только 6 бит.если вы хотите, чтобы все 8 битов, итерация от длины битов, которая составляет 8.

         public static void convertBinary(int n) {
            int length = 8;
            int[] arr = new int[length]; //initialized to hold 8 bit places
            int counter = 0;
            String binary = "";

            while(n > 0) {
                arr[counter] = n % 2;
                n /= 2;
                counter++;
            }
            for(int i = length - 1; i >= 0; i--) {
                binary = "" + arr[i];
                System.out.print(binary);
            }
        } 
...