IEEE 754(单/双)只能表示整数之后的最小整数是多少?
我的猜测是它发生在指数为 254(11111110b 单)时。这样,无论在尾数中放入什么,该数字都将是整数。我只是想确认这一点,以及 2 的幂等值是什么。
IEEE 754(单/双)只能表示整数之后的最小整数是多少?
我的猜测是它发生在指数为 254(11111110b 单)时。这样,无论在尾数中放入什么,该数字都将是整数。我只是想确认这一点,以及 2 的幂等值是什么。
假设“之后”是指幅度更大且时间不晚的数字,2 23表示 32 位二进制浮点数,2 52表示 64 位二进制浮点数。(这些是具有这些类型名称float
的double
最常见的编程语言实现。)
这是因为 32 位和 64 位格式的有效位分别有 24 位和 53 位。因此,在 32 位格式中,如果高位通过指数缩放为 2 22,则低位将为 2 –1(从 22 到 –1,包括 24 个位置)。由于有效数字包含缩放为非整数值的位,因此完整表示的值可能是非整数。如果高位被缩放到 2 23或更大,那么低位的值至少为 2 0。
因此,如果一个整数小于 2 23,则最多为 2 23 –1,这意味着它的高位被缩放为 2 22,因此低位为 2 –1。实际上, 2 23 –½ 完全可以表示为float
。
同样的道理也适用于double
。