Chr*_*ran 3 floating-point ieee-754 floating-point-precision
我继续看到64位IEEE浮点表示中有关53位精度的无意义.有人请向我解释一下,如果世界上有一点卡在其中,那么它对数字精度的贡献是什么?如果你有一个浮点单元,其中bit0被固定为1,你当然会知道它比正常情况下产生的精度要低1位.这些敏感性在哪里?
此外,只有指数,没有尾数的比例因子,完全指定数字的前导位的确切位置,因此不使用前导位.第53位和第19洞一样真实.它只是一个(有用的)拐杖来帮助人类思维和以二进制方式访问这些值的逻辑.否则要求重复计算.
声称这第53位废话的所有书籍和文章都是错的,或者我是个白痴.但是卡住的是一个卡住的位.让我们听听相反的论点.
Eri*_*hil 10
IEEE-754 64位二进制浮点对象的数学有效位1具有53位.它编码有一个52位字段的专用于有效数和从指数字段,其指示是否53的一些信息的组合RD位是0或1.
由于主有效数字段是52位,有些人将有效数字称为52位,但这是一个草率的术语.有效数字段不包含有效数字的所有信息,完整有效数字为53位.
从来没有使用有效数字的前导位(除了1以外).当指数的编码为零时,有效数的前导位为0而不是更频繁的1.
1 "有效"是首选术语,而不是"尾数".有效数是线性的,尾数是对数的.
这里的关键概念是“标准化”。在一般科学记数法中,每个值都有多种表示形式。这使得算术,尤其是比较,变得比必要的更加困难。常见的解决方案是要求有效数的最高有效位非零。例如,我使用的第一个浮点系统是以 16 为基数的,有效数的前导数字在 1 到 F 的范围内。
这对于二进制浮点有特殊效果。有效数的最高有效位是非零位。将物理表示中有限数量的位之一浪费在已知非零的位上是没有意义的。
IEEE 754 64 位二进制中的普通数具有 53 位有效数,其隐式前导位已知为 1,其余 52 位存储在物理表示中。
天下没有免费的午餐,这是有代价的。成本是对给定指数可以存储的数字的大小的限制。对于大多数指数而言,这并不重要 - 该数字只是以较小的指数存储,并且仍然具有不需要存储的前导一位。
这对于零指数来说是一个真正的限制,因为没有更小的指数可供使用。IEEE 754 二进制浮点通过以不同方式存储非常小的数值(指数为零)来解决这个问题。它们最多有 52 个有效位,全部存储,允许有前导零。这允许非常小的数值被表示为非零数,但代价是精度降低。
无穷大和 NaN 的存储方式不同,全为指数。