Javascript 要获得1字节浮点的无穷大,我需要添加的最小值是多少
我正试图了解由于溢出,我需要添加多少最小值才能获得无穷大。我已经读过了。让我在这里澄清我的理解。为了简化,我将使用1字节浮点,4位表示指数,3位表示尾数:Javascript 要获得1字节浮点的无穷大,我需要添加的最小值是多少,javascript,floating-point,ieee-754,Javascript,Floating Point,Ieee 754,我正试图了解由于溢出,我需要添加多少最小值才能获得无穷大。我已经读过了。让我在这里澄清我的理解。为了简化,我将使用1字节浮点,4位表示指数,3位表示尾数: 0 0000 000 我可以在其中存储的最大正数是: 0 1110 111 当转换为科学符号时: 1.111 x 2^{7} = 11110000 我的理解是正确的,我应该添加的最小数字是00010000,以获得Infinity: 11110000 + 00010000 --------
0 0000 000
我可以在其中存储的最大正数是:
0 1110 111
当转换为科学符号时:
1.111 x 2^{7} = 11110000
我的理解是正确的,我应该添加的最小数字是00010000
,以获得Infinity
:
11110000
+ 00010000
--------
1 00000000
据我所知,任何小于00010000
的值都不会导致溢出,结果将四舍五入到11110000
。但是00010000
是浮点格式的00000001
,它是数字1
。那么,仅仅添加1
就足以导致溢出吗?中给出了答案。四舍五入到无穷大的最小值为:
c=27×(2)− ½×21-4)=1.9375×27=1.11112×27
所以你可以加上的最小值就是
c− fmax=1.11112×27− 1.1112×27=0.00012×27=23
如果我理解正确的话,在您建议的格式中会有位模式0 1010 000
更新:那么为什么会有这种特殊的切断
假设在这个二进制码之上还有另一个二进制码,那么下一个浮点数就是
x=1.0002×28
请注意,c是正好介于x和fmax之间的值。换句话说,取整到x的值取而代之的是四舍五入到无穷大,但取整到fmax的值仍然取整到相同的值。谢谢,但是如果将您计算的数值
2^3=1000
添加到11110000
中,将产生1111000
,这似乎不会导致溢出,只需将第五位设置为1,数字将四舍五入为最大值。我希望溢出会将整个尾数变成零,1
覆盖可用位。例如,如果您添加两个1字节的二进制数1111111
和0000 0001
,您会得到一个溢出1 0000
(9位不能放入,因此第一个1被丢弃)。浮点中的溢出不是这样吗?最大值是多少?在我的1字节浮点中是0 1110 111
。我假设当浮点加上两个数字时,它会将其从科学形式转换为普通形式,比如0.001 x 2^2+0.011 x 2^1=0.1+0.11
并将它们这样相加,然后它会转换回科学形式并转换为浮点形式。也许这就是我在前面的评论中提到的困惑的来源,我想你试着从整数运算的角度来考虑它:浮点溢出不同于整数溢出。如果你想了解浮点加法是如何执行的,看看下面这样的例子是的,我主要是想理解你链接的答案中指定的公式背后的原理,以及我链接的答案中的短语“你需要增加足够的MAX_值以实际影响尾数”。我在想,影响尾数实际上是导致一个类似溢出的整数。你对影响尾数的有什么看法?