System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
印刷:
2147483647
-2147483648
为什么最大值为 2^31 -1(符号位为 0,不加到数字的值上),而最小值仅为 -2^31(符号位为 1,加到数值中)然后??)。
这样想:符号位设置1
为 的二进制模式的数量与符号位设置为 的二进制模式的数量一样多0
。但是,您还需要表示零,它既不是正数也不是负数。由于零被表示为全零的模式,它从可以用给定位数表示的正数集合中减去,因此可表示的负数的计数将增加一。
符号位不会添加到值中。您可以用 32 位表示 2^32 个不同的值。但是,这些值之一是 0;所以有 2^31 个负值、2^31 - 1 个正值和 0 个,它们加起来就是 2^32 个不同的值。由于 0 的符号位也为 0,因此正值的数量比负值的数量少 1 是很自然的。