【问题标题】: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?有人可以举个例子吗?
【问题讨论】:
标签:
algorithm
floating-point
exponent
mantissa
【解决方案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,也不需要存储,可以假定它存在。