如何根据位数计算精度的十进制数?

Yog*_*ogi 5 floating-point precision decimal-point

我正在学习浮点格式(IEEE).在单精度浮点格式中,提到尾数有24位,因此它具有6 1/2的精度十进制数字(如"理解机器"一书)和7.22精度的十进制数字.

我不明白如何计算精度的十进制数字.有人可以赐教吗?

Jay*_*Jay 8

对于24位,假设为符号保留一位,则可以表示的最大十进制数是2 ^ 23-1 = 8388607.也就是说,你可以获得6位数,有时甚至是7位数.这通常表示为"6 1/2位".如果24位表示无符号数,则可以存储的最大值为2 ^ 24-1 = 16,777,215,或7和小数位.

当有人引用带有显式小数位的数字(如7.22十进制数字)时,他们正在做的是获取最大值的日志(基数10).所以log(16777115)= 7.22.

通常,您从给定位数获得的小数位数是:

d=log[base 10](2^b)
Run Code Online (Sandbox Code Playgroud)

其中b是位数,d是小数位数.然后:

d=b * log(2)
d~=b * .3010
Run Code Online (Sandbox Code Playgroud)

所以24位给出24*.3010 = 7.224

  • 我只是想补充一点,关于符号位的观点是无效的.尾数是24位,符号位是**不是尾数的一部分.实际上,如果你看一下这些是[sign_bit,exponent,mantissa].请参阅标准[此处](http://en.wikipedia.org/wiki/Single-precision_floating-point_format).符号位始终作为IEEE 754标准的一部分出现,因此该数字始终为_signed_.总之,所有24位用于表示尾数,因此log [10](2 ^ 24)= 7.22,如问题中所述. (2认同)