为什么IEEE浮点数使用偏置形式计算指数?

时间:2010-04-10 08:39:38

标签: binary computer-science

让我们说,对于c中的 float 类型,根据IEEE浮点规范,有8位用于分数字段,并且计算为首先采用这些8位并将其转换为无符号数字,然后减去BIASE,即2 ^ 7 - 1 = 127,结果是指数范围从-127到128(含)。但是为什么我们不能将这些8位模式视为有符号数,因为结果范围是[-128,127],几乎与前一个相同。

1 个答案:

答案 0 :(得分:16)

偏差的目的是使指数以无符号形式存储,从而更容易进行比较。来自Wikipedia

  

通过安排字段使标志   位是最重要的位   位置,偏见的指数   中间,然后至少是尾数   有效位,结果值   无论如何都会正确订购   解释为浮点或   整数值。这允许高速   浮点数的比较   使用定点硬件。

基本上,浮点数是:

[sign] [unsigned exponent (aka exponent + bias)] [mantissa]

This website提供了有关为什么这样做的优秀信息 - 特别是,比较浮点比较函数的实现。

此外,没有关于浮点奇怪的完整答案可以不提及“What Every Computer Scientist Should Know About Floating-Point Arithmetic”。数学时间长,密集且有点沉重,但它是长期密集的数学金(或类似的东西)。