整数最小值的二进制表示

3
在Java中,Integer.MIN_VALUE的二进制表示为10000000000000000000000000000000。为什么不是10000000000000000000000000000001呢?因为将其补码加一后得到的结果比10000000000000000000000000000000大一,但超出了int类型的范围,所以会发生溢出,导致结果变成10000000000000000000000000000000

我不太理解你问题中的最后一句话:"因为将其二进制补码加一后会比10000000000000000000000000000000大一?" - Nier
1个回答

6

int在Java中是一个有符号的32位数字,意味着第32位像你说的一样代表负数,在十进制中为-(2^31),在二进制中为:

10000000000000000000000000000000
^ → "negative bit"

但在有符号系统中,剩余的31位仍然是“正”位,因此:

10000000000000000000000000000001 → -2^31 + 1

-2^31 + 1-2^31 大。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接