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

时间:2016-10-06 14:54:55

标签: javascript binary floating-point ieee-754

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

0 11111111111 1111111111111111111111111111111111111111111111111111

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

3 个答案:

答案 0 :(得分:2)

指数是308,因为它的1.7976931x 10 ^ 308,也是1x 2 ^ 1024。

答案 1 :(得分:2)

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

请记住,1024是二进制指数,但308是否定指数。

答案 2 :(得分:2)

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

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

01111111 11101111 11111111 11111111 11111111 11111111 11111111 11111111

即。 0符号位,2046为指数值(请注意,1023表示实际为零指数,因此2046表示指数为1023),尾数为全1({{ 1}}二进制,第一个隐藏),换句话说1.11111(52 times)

转换为十进制,1.11111(52 times)*2^1023(2-(2^-52))*2^1023

对于双/浮点格式,您可以在wiki找到非常精确的信息。

相关问题