它的浮点精度是52还是53位?

时间:2013-08-23 18:27:34

标签: floating-point ieee-754 floating-point-precision

我继续看到64位IEEE浮点表示中有关53位精度的无意义。有人请向我解释一下,如果世界上有一点卡在其中,那么它对数字精度的贡献是什么?如果你有一个浮点单元,其中bit0被固定为1,你当然会知道它比正常情况下产生的精度要低1位。这些敏感性在哪里?

此外,只有指数,没有尾数的比例因子,完全指定数字的前导位的确切位置,因此不使用前导位。第53位和第19洞一样真实。它只是一个(有用的)拐杖来帮助人类思维和以二进制方式访问这些值的逻辑。否则要求重复计算。

要求这第53位废话的所有书籍和文章都是错的,或者我是个白痴。但是卡住的是一个卡住的位。让我们听听相反的论点。

3 个答案:

答案 0 :(得分:10)

IEEE-754 64位二进制浮点对象的数学有效数和 1 有53位。它使用专门用于有效数字的52位字段和来自指数字段的一些信息进行编码,这些信息指示53 rd 位是0还是1。

由于主有效位字段是52位,有些人将有效位数称为52位,但这是一个草率的术语。有效数字段不包含有效数字的所有信息,完整有效数字为53位。

有效数据的前导位从未被使用过(除了1以外)。当指数的编码为零时,有效数的前导位为0而不是更频繁的1。


1 “有效”是首选术语,而不是“尾数”。有效数字是线性的,尾数是对数的。

答案 1 :(得分:4)

这里的关键概念是“规范化”。在一般科学记数法中,每个值都有很多表示。这使得算术,特别是比较,比必要的更难。常见的解决方案是要求有效数字的最高有效位为非零。例如,我使用的第一个浮点系统是基数16,有效数字的前导数字在1到F的范围内。

这对二进制浮点有特殊效果。有效位的最高位是非零位。没有必要在已知非零的位上浪费物理表示中有限数量的位之一。

IEEE 754 64位二进制数中的正常数字具有53位有效位数,其隐式前导位已知为1,其余52位存储在物理表示中。

没有免费午餐这样的东西,这是有代价的。成本是对给定指数存储数量的限制。对于大多数无关紧要的指数 - 数字只是以较小的指数存储,并且仍然带有一个不需要存储的前导位。

这将是零指数的真正限制,因为没有更小的指数可供使用。 IEEE 754二进制浮点通过以不同的方式存储具有零指数的非常小的幅度数来解决该问题。它们最多有52个有效位,全部存储,允许前导零。这样可以将非常小的数字表示为非零数字,但代价是精度降低。

无穷大和NaN的存储方式不同,所有的指数都是指数。

答案 2 :(得分:0)

它没有卡住。指数将移动"卡住"咬了一下,所以它没有卡在1个位置。此外,零已经有一个表示,因此除零之外的任何值必须至少有1位,因此您不必存储该0前导位。因此,隐含的1位将使标准化更容易,并为该值引入更高的精度。

相关问题