来自Significand entry in Wikipedia:
当使用二进制时,有效数字的特征在于其宽度 以二进制数字(位)。因为最重要的位总是1 对于标准化数字,通常不存储该位 称为“隐藏位”。根据上下文,隐藏位可以 或者可能不计入有效数字的宽度。对于 例如,通常使用相同的IEEE 754双精度格式 描述为具有53位有效数,包括隐藏的 bit,或52位有效数字,不包括隐藏位。这个概念 隐藏位仅适用于二进制表示。 IEEE 754 将精度p定义为数字中的位数 有效数,包括任何隐含的前导位(例如,精度,p,...) 双精度格式是53)。
为什么标准化数字的最高位总是1?有人可以用一个例子解释一下吗?
答案 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
,也不需要存储,可以假定它存在。