为什么符号位不会影响Integer.MAX_VALUE但会影响MIN值?

Pra*_*mer 2 java integer max min

System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
Run Code Online (Sandbox Code Playgroud)

打印:

2147483647
-2147483648
Run Code Online (Sandbox Code Playgroud)

为什么最大值为2 ^ 31 -1(符号位为0并且不添加到数字的值),而最小值仅为-2 ^ 31(符号位为1并且确实添加到值然后??).

das*_*ght 5

以这种方式考虑:您拥有尽可能多的二进制模式,其符号位设置为符号位设置1为的二进制模式的数量0.但是,您还需要表示零,既不是正面也不是负面.由于零被表示为全零的模式,因此它从可用给定位数表示的正数集合中减去,因此可表示的负数的计数将大一.