对不起,我在这里犯了一个简单的错误。在64位算术中,11位用于对指数进行编码。因此,我们有
双精度(即64位(浮点运算中的最大数字为1.111...110 x 2^(512)
(其中在基点之后有51个1
(。这个数字小于2 x 2^(512) == 2^(513) == 8^(171) < 10^(171)
。因此,当我分配x = 10^(171)
时,我期望x
将被存储为Inf
。然而,事实并非如此。在交互控制台中调用x
显示1.0000e+171
。我能想到的唯一解释是,Matlab使用超过64位来存储x
。但是快速检查whos x
发现x
存储在8个字节中。
事实上,不会被存储为Inf
的10
的最大功率是10^308
。
有人能解释一下这里发生了什么吗?
2^(11) = 2048
可能的指数,所以它们的范围从-1023
到1024
,而不是像我想的那样从-511
到512
。因此,64位算术中的最大数字是1.111…110 x 2^(1024($,这实际上是(指数有3个有效数字(10^(308.6)
,证实了我的实验结果。