private void displayBinary() {
int value = 123;
for (int i = 128; i > 0; i = i / 2) {
if ((value & i) != 0) System.out.print("1 ");
else
System.out.print("0 ");
}
}
上述方法以二进制形式成功写出123,程序输出 0111101。 但是,如果我在if语句中将!= 0更改为== 1,则输出0000001.由于二进制只有0和1,为什么后者不起作用?
答案 0 :(得分:1)
你没有使用base-2号码;您仍在使用基地10 int
。
从这里开始,迭代的所有数字(除了最后一个)都将失败if
条件,因为它们不等于1.
答案 1 :(得分:0)
因为当你使用按位AND时,位(数字)的位置很重要。 1000在十进制或二进制中不等于1。
答案 2 :(得分:0)
(值& i)当它不是0时,将在1,2,4,8,16,32,64和128之间变化,具体取决于您正在测试的位。