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



在java中,我知道int的大小是32位。Java不支持无符号值,因此使用一位来保存int是负数还是正数的信息。因此,剩下的31位保持该数字的值。最高的31位是(2^31(-1,这是java中t可以保持的最高值,但为什么它可以一直降到-2^31而不是-2^31-1。

这与Java没有任何关系,而是所有计算都是如何表示32位整数的。但为了回答这个问题:在2^32个可能的值中,其中一半(2^31(用于表示非负值,包括0。所以有2^31-1的值来表示正数,所以最高值是2^31-1。

另一半——2^31——都用来表示负数,所以它们一直到-2^31。

最新更新