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

印刷:

2147483647
-2147483648

为什么最大值为 2^31 -1(符号位为 0,不加到数字的值上),而最小值仅为 -2^31(符号位为 1,加到数值中)然后??)。

4

2 回答 2

5

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

于 2013-05-06T01:48:35.860 回答
0

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

于 2013-05-06T01:46:45.647 回答