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

moc*_*ino 13 binary computer-science

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

Dan*_*l G 16

偏差的目的是使指数以无符号形式存储,从而更容易进行比较.来自维基百科:

通过排列字段使得符号位处于最高有效位位置,中间的偏置指数,然后是最低有效位中的尾数,结果值将被正确排序,无论它是否被解释为浮点或整数值.这允许使用定点硬件对浮点数进行高速比较.

基本上,浮点数是:

[sign] [unsigned exponent (aka exponent + bias)] [mantissa]
Run Code Online (Sandbox Code Playgroud)

该网站提供了有关优化原因的极好信息 - 特别是比较浮点比较函数的实现.

此外,没有关于浮点奇怪的完整答案可以不提" 每个计算机科学家应该知道的关于浮点运算的东西".它的长度,密集和数学上有点沉重,但它是长期密集的数学金(或类似的东西).

  • @Pavel,仍有处理器没有FPU,fe ARMs.至少使这个操作易于对整数进行操作,可以更快地模拟FPU. (2认同)