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

Javascript 什么位模式表示双精度浮点的最大值?,javascript,binary,floating-point,ieee-754,Javascript,Binary,Floating Point,Ieee 754,我想知道最大值是如何用64位双精度浮点表示的。我假设它用指数和尾数中的所有1表示,如下所示: 0 11111111111 1111111111111111111111111111111111111111111111111111 如果是这样,那么为什么Number.MAX_VALUE=1.7976931348623157e+308显示308的指数,而不是从11111解码的1024?位模式不同吗?指数是308,因为它是1.7976931x10^308,也就是1x2^1024。指数是308,因为它是

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

0 11111111111 1111111111111111111111111111111111111111111111111111

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

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

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

指数是308,因为308是1024/log10/log2


请记住,1024是一个二进制指数,而308是一个二元指数。

指数是308,因为308是1024/log10/log2


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

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

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

01111111 11101111 11111111 11111111 11111111 11111111 11111111 11111111
即0符号位,2046作为指数值注意,1023实际上表示零指数,因此2046表示1023的指数,尾数为1.1111152倍,在二进制中,第一个是隐藏的,换句话说,1.1111152倍*2^1023

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


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

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

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

01111111 11101111 11111111 11111111 11111111 11111111 11111111 11111111
即0符号位,2046作为指数值注意,1023实际上表示零指数,因此2046表示1023的指数,尾数为1.1111152倍,在二进制中,第一个是隐藏的,换句话说,1.1111152倍*2^1023

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


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

不确定您得到的确切信息,但是Number.MAX\u VALUE.toString2.length//1024@squint,对不起,它显示了什么?最大值二进制表示法使用1024位,这似乎就是您要找的。@斜视,谢谢,但这很混乱。数字只能有64位,1024位从何而来?…哦,科学记数法中表示的最大数字可以有1024个二进制位置,但精度不高。不确定具体是什么,但Number.max_VALUE.toString2.length//1024@squint,对不起,它显示了什么?最大值二进制表示使用1024位,这似乎就是你要找的东西。@斜视,谢谢,但这很让人困惑。数字只能有64位,1024位从何而来?…哦,科学记数法中表示的最大数字可以有1024个二进制位置,但精度不高。max-1是常规数字的最大指数-谢谢,所以指数应该是1023,不是二进制的1024?2046作为指数值-你必须减去1023@Maximus:这是一个很好的答案-你知道这是正确的@马克西姆斯:是的,1023的值是中间值,即零指数。我更新了答案以使其更清晰。@ZbynekVyskovsky-kvr000,你能补充一下答案吗?1.1111152乘以*2^1023如何转换为十进制的1.7976931348623157e+308?Max-1是常规数字的最大指数-谢谢,所以指数应该是1023,不是二进制的1024?2046作为指数值-你必须减去1023@Maximus:这是一个很好的答案-你知道这是正确的@马克西姆斯:是的,1023的值是中间值,即零指数。我更新了答案以使其更清晰。@ZbynekVyskovsky-kvr000,您能在答案中添加1.1111152乘以*2^1023如何转换为十进制的1.7976931348623157e+308吗?