为什么在Java -2 ^ 31中而不是-2 ^ 31-1中int的最小值

问题描述

在Java中,我知道int的大小为32位。 Java不支持无符号值,因此使用一位保留关于int是负数还是正数的信息。因此剩余的31位保留数字的值。 31个最高位可以达到(2 ^ 31)-1,这是Java中in t可以容纳的最大值,但是为什么它可以一直下降到-2 ^ 31而不是-2 ^ 31-1。 / p>

解决方法

这与Java无关,它是所有计算如何表示32位整数的方式。但是要回答这个问题:在2 ^ 32个可能的值中,其中2个(31 ^)中的一半用于表示负数值,其中包括 0。有2 ^ 31-1个值代表正数,因此最高为2 ^ 31-1。

另一半-2 ^ 31-都用来表示负数,因此它们一直下降到-2 ^ 31。