为什么Integer.MIN_VALUE是-2 ^ 32而Integer.MAX_VALUE是2 ^ 31-1?

zho*_*wei 0 java

我在JDK中看到Integer.MIN_VALUE是0x80000000.考虑到原始是0x80000000,那么相反的是0x8fffffff,最后补码是0x8fffffff +( - 1)= -2 ^ 32?那么-2 ^ 32是否是1000 0000 0000 0000 0000 0000 0000 0000 in bit?

Era*_*ran 5

使用32位,您可以表示2 ^ 32个整数.

  • 2 ^ 31是否定的
  • 2 ^ 31 - 1是积极的
  • 1是0

如果你总结它们,你会得到2^31 + 2^31 - 1 + 1 = 2^32.

因此,最大(最正)整数是2^31-1和最小(最负)整数是-2^31.