朋友们。
你能解释一下为什么下面的程序代码向控制台输出值-32吗?
int num = 0xFFFFFFE;
for(int i=0; i < 4; i++) {
num = num << 1;
System.out.println(num);
}
程序产生以下结果:
536870908
1073741816
2147483632
-32
我知道当二进制数移至最高位(第31位)时,该值变为负数。
我不太明白为什么是-32。 为什么不是-16或-8,即结果是-32?
如果您能更详细地向我解释这一点,我会很高兴。如果你能在答案中附上图片,那就太好了。
我希望我的问题不是愚蠢的。