繁体   English   中英

IEEE 754中有多少整数

[英]how many whole numbers in IEEE 754

我想弄清楚在ieee 754中存在多少不同的整数。我得到的数字是1778384895但我找不到任何资源来检查自己。 非常感谢提前。

我将假设单精度浮点数。

我们得到零,虽然可以表示为负零,但仍然只是整数零,所以我把它算作一个。

指数小于127的数字不是整数。

Exponent   Free bits   # Numbers
127        0           1
128        1           2
129        2           4
...
149        22          2^22

这些总和达到2^23-1 如果指数大于149,则所有数字都是整数。 这是一个额外的105*2^23数字(保留指数255)。 所有这些都是积极的和消极的。

因此,总计是

1 + ((2^23 - 1) + 105 * (2^23)) * 2 = 1778384895

所以看起来你是对的。 好问题,一见钟情看起来容易得多:)

我同意Jester的回答 作为交叉检查,为了演示另一种方法,我用Java编写了一个对所有有限浮点数的强力扫描,计算整数。 Math.nextUp返回任一形式为零的最小正浮点数,因此零只计算一次。

public class Test {
  public static void main(String[] args) {
    long count = 0;
    for (float f = -Float.MAX_VALUE; f <= Float.MAX_VALUE; f = Math.nextUp(f)) {
      if (Math.rint(f) == f) {
        count++;
      }
    }
    System.out.println(count);
  }
}

它输出1778384895

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM