什么位模式代表双精度浮点数的最大值?

What bit pattern represents the max value for double precision floating point?

我想知道最大值是如何用 64 位双精度浮点数表示的。我假设它在指数和尾数中用全 1 表示,如下所示:

0 11111111111 1111111111111111111111111111111111111111111111111111

如果是,那为什么 Number.MAX_VALUE = 1.7976931348623157e+308 显示 308 的指数,而不是从 11111111111 解码的 1024?位模式是否不同?

指数是 308,因为它是 1.7976931x10^308,也是 1x2^1024.

指数是 308,因为 308 是 1024 / (log 10 / log 2)

记住 1024 是二进制指数,而 308 是二进制指数。

308 是十进制指数,而 double 使用 2 的幂。

其次,最大值指数保留给无穷大和 NaN。 Max-1 是正则数的最大指数。因此最大数量写为:

01111111 11101111 11111111 11111111 11111111 11111111 11111111 11111111

0 符号位,2046 作为指数值(请注意,1023 实际上表示指数为零,因此 2046 表示 1023 的指数),尾数全为(1.11111(52 times) 在二进制中,第一个被隐藏),换句话说 1.11111(52 times)*2^1023.

转换成十进制是(2-(2^-52))*2^1023,大约是1.79769313486231*10^308

对于 double/float 格式,您可以在 wiki 上找到非常精确的信息。