【问题标题】:Why does the sign bit not affect the Integer.MAX_VALUE but affects the MIN Value?为什么符号位不影响 Integer.MAX_VALUE 但影响 MIN 值?
【发布时间】:2013-04-29 17:55:36
【问题描述】:
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);

打印:

2147483647
-2147483648

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

【问题讨论】:

  • 0n的不同值的数量是n + 1。从0Integer.MAX_VALUE的不同值的数量是2^31。

标签: java integer max min


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      相关资源
      最近更新 更多