为什么数字(不)代表双精度IEEE754?

时间:2016-09-02 11:34:56

标签: floating-point ieee-754 theorem

我对 IEEE754 双精度感到困惑,我考虑两个问题:
1 为什么每个数字来自区间-2 54 ,-2 54 +2,-2 54 +4 ... 2 54 < / sup>可以表示吗?

2. 为什么2 54 +2无法代表?

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

1 个答案:

答案 0 :(得分:3)

IEEE 754 double的有效数字(或尾数)中有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