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

时间:2013-05-06 01:39:11

标签: java integer max min

System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);

打印:

2147483647
-2147483648

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

符号位不会添加到值。您可以使用32位表示2 ^ 32个不同的值。 Hovewer,其中一个值是0;所以有2 ^ 31个负值,2 ^ 31 - 1个正值和0,这些都加起来有2 ^ 32个不同的值。由于0的符号位也是0,因此正值的数量自然比负值的数量少一个。