当我们有一个二进制 Intel 处理器和一个由 64 位表示的双精度浮点数,其中 1 位用于符号,52 位用于尾数,11 位用于指数。
我不明白为什么
e_max = 2^10 - 1 = 1023
不应该是2^11,因为有11位专用于它。
如何由此得出最小表示的浮点数的顺序是 10^(-308) 和最大的 10^(308)?
感谢您的任何澄清或解释!
...为什么 e_max = 2^10 - 1 = 1023 不应该是 2^11,因为有 11 位专用于它。
考虑负指数。
使用 binary64 编码,编码后的指数具有 有偏差 指数,即从 0 到 2047 的 11 位无符号整数。(0 和 2047 的有偏差指数具有特殊含义。)
应用 -1023 的偏移量后,编码的指数范围为 [-1023 ... 1024]。这允许非常大的值,如 10308 和较小的值,如 10-308。