0

我对IEEE754双精度感到困惑,我考虑了两个问题:
1. 为什么区间 -2 54 , -2 54 +2, -2 54 +4...2 54中的每个数字都是可表示的?

2.为什么 2 54 +2 不可表示?

你能帮助我吗 ?我了解 IEEE754的工作方式- 但是,我看到它时遇到问题。

4

1 回答 1

3

IEEE 754 双精度的有效位(或尾数)有 53 位。−2 54可以精确表示为

mantissa: 1.00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00 (bin)
exponent: 54
sign:     1

现在让我们暂时忘记符号位。与此解释无关。所以假设我们有 +2 54

使用这个指数,有效数的最低(最右边)位的值为 2 -52 * 2 54 = 4。因此 2 54 + 4 被编码为:

mantissa: 1.00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 01 (bin)
exponent: 54                                                             ^
                                                                lowest bit

但两者之间没有任何价值。所以你不能编码 2 54 + 2

为什么这对−2 54 + 2不是问题?因为这与−(2 54 − 2)相同,并且表示为:

mantissa: 1.11111 11111 11111 11111 11111 11111 11111 11111 11111 11111 11
exponent: 53 !!
sign:     1

指数 53 意味着您有 2 -52 * 2 53 = 2 的步长。接下来的 0 值是:

mantissa: 1.11111 11111 11111 11111 11111 11111 11111 11111 11111 11111 10
exponent: 53
sign:     1

这是-2 54 + 4,或者实际上是-(2 54 - 4)。你可以这样继续下去,直到达到 -2 53

于 2016-09-03T07:59:10.213 回答