我对IEEE754双精度感到困惑,我考虑了两个问题:
1.
为什么区间 -2 54 , -2 54 +2, -2 54 +4...2 54中的每个数字都是可表示的?
2.为什么 2 54 +2 不可表示?
你能帮助我吗 ?我了解 IEEE754的工作方式- 但是,我看到它时遇到问题。
我对IEEE754双精度感到困惑,我考虑了两个问题:
1.
为什么区间 -2 54 , -2 54 +2, -2 54 +4...2 54中的每个数字都是可表示的?
2.为什么 2 54 +2 不可表示?
你能帮助我吗 ?我了解 IEEE754的工作方式- 但是,我看到它时遇到问题。
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。