Отсутствует 1 бит во время двоичного преобразования в десятичное в 8

Я написал простой метод в 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 ответ

Вы выполняете итерацию по количеству бит в данном номере 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);
            }
        } 
Другие вопросы по тегам