如何确定 32 位 IEEE 浮点值中的集合 S 中有多少个整数

Law*_*evo 0 floating-point integer single-precision

有人能给我解释一下它到底在说什么吗?我知道这基本上意味着它是单精度,具有 1 位符号、8 位指数和 23 位尾数。答案不应该是 2 * 2^8-2 * 2^23 吗?

编辑:2 * 2^8-2 * 2^23 是否确定所有 32 位 IEEE 浮点值

Eri*_*hil 5

有限正浮点数范围从 2 -149(最小次正规)到 2 128 -2 104(有限值的最大指数且有效数全为 1 位的数字)。我们可以将它们分为三类:

\n\n
    \n
  • 小于 1 的值。其中零是整数。
  • \n
  • 值从 1 到 2 24 -1。其中一些是整数,一些不是。然而,该范围内的每个整数都在浮点数集合中,因为它们最多有 24 个有效位,因此可以用 24 位有效数表示。因此,浮点数有 2 24在此区间内
  • \n
  • 2 24及以上的值。所有这些都是整数,因为其尾数中的最低有效位置至少表示 1。此范围包含指数(2)从 24 到 127 的所有浮点数以及每个允许的尾数。有效数都是以 \xe2\x80\x9c1.\xe2\x80\x9d 开头,后跟任意 23 位的有效数,因此有 2 23 个有效数。因此,这些数字共有 (127-24+1)\xe2\x80\xa22 23 个。
  • \n
\n\n

正整数的总和为 0 + 2 24 -1 + (127-24+1)*2 23。负整数的个数相同,0 加 1,总计为 1,778,384,895。

\n\n

(一旦我们找到了这个数字,它就会为我们提供一个搜索键来查找重复的问题。)

\n