为什么归一化数值的最高位始终为1?

5

来自维基百科中的尾数条目

在二进制中工作时,尾数的特征是其二进制位(比特)宽度。因为对于规范化数字,最高有效位始终为1,所以这一位通常不会被存储,并称为“隐藏位”。根据上下文,隐藏位可能或可能不计入尾数的宽度。例如,相同的IEEE 754双精度格式通常被描述为具有包括隐藏位在内的53位尾数或不包括隐藏位在内的52位尾数。隐藏位的概念仅适用于二进制表示。IEEE 754将精度p定义为尾数中的数字位数,包括任何隐式前导位(例如,双精度格式的精度p为53)。

为什么规范化数字的最高有效位始终为1?能否举个例子解释一下?

3个回答

7
在二进制中,唯一的数字是0和1,前导零不重要(例如1101与00001101相同,额外的零没有任何意义)。因此,最高有效位必须是1,因为这是唯一的其他可能性。
由于您知道最高有效位必须是1,所以您可以省略它而不会丢失任何信息。这很有用,因为它允许您获得额外的精度位。
例外情况是数字0,但是在浮点数中(以及其他特殊情况,如NaN和+/-无穷大),通过将偏置指数设置为0来处理。

谢谢!解释得很好。 - Zigii Wong

5
这并非完全正确,对于特殊值如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,因此也不需要存储,可以假定它已经存在。


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