十进制到8位二进制转换期间丢失1位

时间:2018-10-25 00:39:25

标签: java bit

我用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填充,但是由于某些原因,它不起作用。我一遍又一遍地尽力,任何帮助都将不胜感激。谢谢!

1 个答案:

答案 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);
            }
        }