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

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

本文关键字:最大值 双精度浮点数 表示 模式 什么      更新时间:2023-09-26

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

0 11111111111 1111111111111111111111111111111111111111111111111111

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

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

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

01111111 11101111 11111111 11111111 11111111 11111111 11111111 11111111

0符号位,2046为指数值(注意,1023实际上表示零指数,因此2046表示1023的指数),尾数为1 (1.11111(52 times)是二进制,第一个是隐藏的),即1.11111(52 times)*2^1023

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

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

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

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

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