如何根据比特数计算小数位精度?

7
我正在学习浮点数格式(IEEE)。 在单精度浮点数格式中,书中提到尾数有24位,因此具有6.5个十进制数字的精度,并且7.22个十进制数字的精度。 我不明白如何计算小数位的精度。 有人能为我解释一下吗?

1个回答

10

使用24位,假设有1位为符号位,则可以表示的最大十进制数为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)

其中b是位数,d是十进制数字的数量,则:

d=b * log(2)
d~=b * .3010

因此,24位为24 * .3010 = 7.224。


2
我只是想补充一下,关于符号位的观点是无效的。尾数是24位,而符号位不是尾数的一部分。事实上,如果你查看位,它应该是[符号位、指数、尾数]。请参见标准在这里。符号位始终作为IEEE 754标准的一部分存在,因此数字总是有符号的。总之,所有的24位都用来表示尾数,所以如问题中所述,log10=7.22。 - Westy92
@westy92 我在谈论整数。是的,对于浮点数,一些位被分配给指数。这个数量影响我们可以记录的数字范围,但不影响精度位数。对于那些不知道的人,分配给实际数字的比特,而不是指数或符号的比特称为“尾数”,这对我们在这里的目的很重要。 - Jay
1
@westy92 噢,回想起来我发现问题特别问到 IEEE 浮点数。所以是的,符号位没有包括在 24 位中。 - Jay
@Jay 尽管使用24位可以获得7.22个十进制数字的精度(24 * log₁₀ 2),但十进制数字的正确精度仅为6½。请参见下面问题的注释以获取正确答案的重复内容。 - legends2k
@Jay同意,我已经从问题中删除了评论。感谢您的澄清,否则我仍然会困惑于轮换和精度之间的区别! - legends2k
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接