为什么下面的程序代码向控制台输出值-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?
如果你能给我解释得更详细些,我会很高兴的.如果你能用图片配上答案,那就太棒了.
我希望我的问题不是愚蠢的.