双精度浮点。为什么最大指数是1023

问题描述 投票:0回答:1

当我们有一个二进制 Intel 处理器和一个由 64 位表示的双精度浮点数,其中 1 位用于符号,52 位用于尾数,11 位用于指数。

我不明白为什么

e_max = 2^10 - 1 = 1023
不应该是2^11,因为有11位专用于它。

如何由此得出最小表示的浮点数的顺序是 10^(-308) 和最大的 10^(308)?

感谢您的任何澄清或解释!

floating-point binary numbers double
1个回答
0
投票

...为什么 e_max = 2^10 - 1 = 1023 不应该是 2^11,因为有 11 位专用于它。

考虑负指数。

使用 binary64 编码,编码后的指数具有 有偏差 指数,即从 0 到 2047 的 11 位无符号整数。(0 和 2047 的有偏差指数具有特殊含义。)

应用 -1023 的偏移量后,编码的指数范围为 [-1023 ... 1024]。这允许非常大的值,如 10308 和较小的值,如 10-308

© www.soinside.com 2019 - 2024. All rights reserved.