【发布时间】:2010-06-09 16:35:15
【问题描述】:
我正在自学 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 64 位。本书使用jdk1.5 32bit。
【问题讨论】:
-
您的结果是简单地右移数字的正确行为。 “解决方案”应该说明什么,我不明白。