为什么可以用单精度浮点数表示的最大指数是 127(而不是 128)?

计算科学 浮点 数字
2021-12-29 08:57:56

一位同学告诉我,我们可以用单精度浮点数表示的最小指数(指数使用 8 位)是126最大的是127.

我知道指数是用过量或偏差表示法表示的,也就是说,我们用正二进制数表示所有指数,包括负指数,我们通过对实际指数(可以是负数)求和来获得偏差在单精度浮点系统中,偏差为2# of bits in exponent - 11,在我们的例子中是2811=271=1281=127.

为了从有偏差的指数中获得十进制指数,我们可以减去127.

现在,自从0在这个系统中有一个特殊的表示,第一个有偏指数是1, 所以1127=126.

但我不明白为什么最大指数不是128,因为,同样,第一个有偏指数将是1.

我错过了什么?

1个回答

指数127保留用于表示零和非正规数,以及指数+128保留用于表示无穷大和 NaN,如下所述:https ://en.wikipedia.org/wiki/Single-precision_floating-point_format#Exponent_encoding

所以对于归一化的数字,指数范围是[126,127].