【发布时间】:2009-08-26 12:32:57
【问题描述】:
摘自一本书:
浮点值由 24 位 有符号尾数和 8 位有符号 指数。精度大约为七位十进制数字。 价值观 范围 -3.402823 × 10^38 到 3.402823 × 10^38
如何计算这个范围?有人能解释一下二进制算术吗?
【问题讨论】:
摘自一本书:
浮点值由 24 位 有符号尾数和 8 位有符号 指数。精度大约为七位十进制数字。 价值观 范围 -3.402823 × 10^38 到 3.402823 × 10^38
如何计算这个范围?有人能解释一下二进制算术吗?
【问题讨论】:
您需要阅读"What Every Computer Scientist Should Know About Floating-Point Arithmetic",它将解释浮点数的存储方式,这也将回答您的问题。
【讨论】:
我肯定会阅读理查德指出的文章。但如果您需要更简单的解释,我希望这会有所帮助:
基本上,正如您所说,有 1 个符号位,8 位用于指数,23 位用于小数。 然后,使用这个等式(来自Wikipedia)
N = (1 - 2s) * 2^(x-127) * (1 + m*2^-23)
其中s 是符号位,x 是指数(减去 127 偏差),m 是被视为整数的小数部分(上面的等式将整数转换为适当的分数值)。
注意,0xFF 的指数值被保留以表示无穷大。所以实际值的最大指数是0xFE。
你看到最大值是
N = (1 - 2*0) * 2^(254-127) * (1 + (2^23 - 1) * 2^-23)
N = 1 * 2^127 * 1.999999
N = 3.4 x 10^34
最小值将相同,但设置了符号位,这将简单地否定该值以给您-3.4 X 10^34。
【讨论】: