IEEE754 浮点数阶码为什么需要偏置 bias

首先你应该知道原码,补 码,反 码,移 码,浮点数的表示方法。

移码 = 一个数值 + 偏置数(bias)

在 IEEE754 浮点数中,机器上存储的阶码(二 进制数,用原码表示,无符号位)用 e 表示,转化成真 值的阶码用 E 表示,真值中阶码 E = e - bias

为什么需要 bias 呢,直接说答案:

1. 使指数以无符号形式存储

以 单 精 度 浮点型 float 为例,e 由 8bit **二进制原码(无符号)**表示,但这样的小数不能表示 (-1,1)中的数,因为阶码总是正数。那怎么办呢?用补码表示 e?麻烦,还要考虑符号!

所以不如减去一个偏置量 127(为什么是 127?不是 128?IEEE754 为什么单精度浮点数的偏置常数用 127 而不是 128,126 等等_一蓑嫣雨任平生的博客 - CSDN 博客_偏置常数),这样就能表示负的 E(如果没有偏置,那么 e=E),此时 E = e -127,而 e 范围为(0000 0001 - 1111 1110 即 1-254,0000 0000 和 1111 1111 单独用来表示非规格化值),最终 E 的范围(1-127 到 254-127)=(-126,127)。

若是不用偏置,用补码表示 e(此时 e=E),E 范围为(1111 1111-0111 1111)= (-128, 127)(其中 1000 0000 用来表示 - 128,人为规定的,多加了一个最小值,不知道请看后面链接 (详解_手写过程)原码,补码,反码,int,char 等取值范围_一蓑嫣雨任平生的博客 - CSDN 博客_原码的取值范围

总结:可以看出用偏置也可以实现负数阶码效果,而不像补码表示 e,还要考虑符号。

2. 便于浮点数加减运算时候对阶操作

至于原因,可以看其他大佬的解释:

浮点数对阶_Free Jim 的博客 - CSDN 博客_浮点数对阶

浮点数加减运算过程:对阶、尾数运算、规格化、舍入和判溢出_理木客的博客 - CSDN 博客_对阶运算