整数到二进制数组

2022-09-02 22:59:01

我正在尝试将整数转换为7位布尔二进制数组。到目前为止,代码不起作用:如果我输入说要转换的整数8,而不是0001000,我得到1000000,或者说15,我应该得到0001111但我得到1111000。char 数组的长度与二进制数组不同,并且位置错误。

public static void main(String[] args){

    String maxAmpStr = Integer.toBinaryString(8);
    char[] arr = maxAmpStr.toCharArray();
    boolean[] binaryarray = new boolean[7];
    for (int i=0; i<maxAmpStr.length(); i++){
        if (arr[i] == '1'){             
            binaryarray[i] = true;  
        }
        else if (arr[i] == '0'){
            binaryarray[i] = false; 
        }
    }

    System.out.println(maxAmpStr);
    System.out.println(binaryarray[0]);
    System.out.println(binaryarray[1]);
    System.out.println(binaryarray[2]);
    System.out.println(binaryarray[3]);
    System.out.println(binaryarray[4]);
    System.out.println(binaryarray[5]);
    System.out.println(binaryarray[6]);
}

任何帮助是值得赞赏的。


答案 1

真的没有必要为此处理字符串,只需对您感兴趣的7位进行按位比较即可。

public static void main(String[] args) {

    int input = 15;

    boolean[] bits = new boolean[7];
    for (int i = 6; i >= 0; i--) {
        bits[i] = (input & (1 << i)) != 0;
    }

    System.out.println(input + " = " + Arrays.toString(bits));
}

答案 2

我会用这个:

private static boolean[] toBinary(int number, int base) {
    final boolean[] ret = new boolean[base];
    for (int i = 0; i < base; i++) {
        ret[base - 1 - i] = (1 << i & number) != 0;
    }
    return ret;
}

以 7 为基数的数字 15 将产生 {false, false, false, true, true, true, true} = 0001111b

数字 8,基数 7 {假, 假, 假, 真, 假, 假, 假} = 0001000b