为什么标准化数字的最高位总是1?

时间:2012-08-20 13:36:44

标签: algorithm floating-point exponent mantissa

来自Significand entry in Wikipedia

  

当使用二进制时,有效数字的特征在于其宽度   以二进制数字(位)。因为最重要的位总是1   对于标准化数字,通常不存储该位   称为“隐藏位”。根据上下文,隐藏位可以   或者可能不计入有效数字的宽度。对于   例如,通常使用相同的IEEE 754双精度格式   描述为具有53位有效数,包括隐藏的   bit,或52位有效数字,不包括隐藏位。这个概念   隐藏位仅适用于二进制表示。 IEEE 754   将精度p定义为数字中的位数   有效数,包括任何隐含的前导位(例如,精度,p,...)   双精度格式是53)。

为什么标准化数字的最高位总是1?有人可以用一个例子解释一下吗?

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:4)

这不完全正确,0,NaN,无穷大和非正规值等特殊值没有前导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。

答案 2 :(得分:3)

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