我正在自学 Java,并完成了 Thinking in Java 中的练习。
在第 116 页,练习 11,您应该将一个整数右移到其所有二进制位置,并使用 Integer.toBinaryString 显示每个位置。
public static void main(String[] args) {
int i = 8;
System.out.println(Integer.toBinaryString(i));
int maxIterations = Integer.toBinaryString(i).length();
int j;
for (j = 1; j < maxIterations; j++) {
i >>= 1;
System.out.println(Integer.toBinaryString(i));
}
在解决方案指南中,输出如下所示:
1000
1100
1110
1111
当我运行这段代码时,我得到了这个:
1000
100
10
1
这里发生了什么。数字被切断了吗?
我正在使用 jdk1.6.0_20 64bit。本书使用jdk1.5 32bit。