为啥归一化数的最高位总是 1?

Posted

技术标签:

【中文标题】为啥归一化数的最高位总是 1?【英文标题】:Why the most significant bit for a normalized number is always 1?为什么归一化数的最高位总是 1? 【发布时间】:2012-08-20 13:36:44 【问题描述】:

来自Significand entry in Wikipedia:

在二进制中工作时,有效数字的特征在于它的宽度 二进制数字(位)。因为最高有效位始终为 1 对于归一化数,该位通常不存储,而是 称为“隐藏位”。根据上下文,隐藏位可能 或者可能不计入有效数字的宽度。为了 例如,相同的 IEEE 754 双精度格式通常是 描述为具有 53 位有效数字,包括隐藏 位或 52 位有效数,不包括隐藏位。观念 隐藏位只适用于二进制表示。 IEEE 754 将精度 p 定义为 有效数,包括任何隐含的前导位(例如精度、p、 双精度格式为 53)。

为什么标准化数字的最高有效位始终为 1?有人可以举个例子吗?

【问题讨论】:

【参考方案1】:

二进制中唯一的数字是 0 和 1,前导零不重要(例如 1101 与 00001101 相同,多余的零不添加任何内容)。因此,最重要的数字必须是 1,因为这是唯一的另一种可能性。

由于您知道最高有效位必须为 1,因此您可以省略它而不会丢失任何信息。这很有用,因为它可以让您获得额外的精度。

这个例外是数字 0,但这是通过将偏置指数设置为 0 以浮点数处理的(以及其他特殊情况,如 NaN 和 +/- 无穷大)。

【讨论】:

谢谢!很好的解释。【参考方案2】:

这并不完全正确,对于 0、NaN、Infinity 和非正规值等特殊值没有前导 1。

但是,是的,当它是一个“正常”的数字时,您可以随时重写它,使尾数从 1 开始。只需增加指数即可。等价物也存在于十进制中,如果值不为零,您始终可以编写一个数字,以便它以单个非零数字开头:

  0.5 = 5.0 E-01
  0.05 = 5.0 E-02
  50 = 5.0 E+01
  500 = 5.0 E+02
  etcetera.

区别在于这个单个数字在二进制中是 1。所以它不必存储,可以推断。这会增加一点精度。足以使浮点处理器逻辑复杂化以恢复计算中的 1。

【讨论】:

【参考方案3】:

前导零在数字的任何表示中都不携带有用信息,因此不需要存储它们。因此,在二进制表示中,最左边的有效数字始终是1,也不需要存储,可以假定它存在。

【讨论】:

以上是关于为啥归一化数的最高位总是 1?的主要内容,如果未能解决你的问题,请参考以下文章

特征归一化——l2归一化的优势

归一化处理

为啥要对 SVM 特征向量进行余弦归一化?

归一化法有啥优点和缺点

使用Sklearn的MinMaxScaler做最简单的归一化

归一化单位,为啥我们在数值积分中使用它们? [关闭]