问题:为什么要阶码真值+127而不是+128呢?
因为8个二进制位能表示指数的取值范围为[-128,127],现在将指数变成移码表示,即将区间[-128,127]正向平移到正数域,区间里的每个数都需要加上128,从而得到阶码范围为[0,255]。
由于计算机规定阶码全为0或全为1两种情况被当作特殊值处理(全0被认为是机器零,全1被认为是无穷大),去除这两个特殊值,阶码的取值范围变成了[1,254]。
如果偏移量不变仍为128的话,则根据换算关系公式[x]阶=X+128得到指数的范围变成[-127,126],指数最大只能取到126,显然会缩小浮点数能表示的取值范围。
所以IEEE754标准规定单精度的阶码偏移量为2^{8-1} -1 (即127),这样能表示的指数范围为[-126,127],指数最大值能取到127