Отсутствует 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);
}
}