我用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个大小的数组将有助于前面的0填充,但是由于某些原因,它不起作用。我一遍又一遍地尽力,任何帮助都将不胜感激。谢谢!
答案 0 :(得分:0)
您要从给定数字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);
}
}