在IEEE754中阶码E=e+127,与阶码用移码表示不一样啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在IEEE754中阶码E=e+127,与阶码用移码表示不一样啊?相关的知识,希望对你有一定的参考价值。

首先明确一点在脑子里面:用移码表示阶码和用IEEE754标准表示阶码是两回事,IEEE754标准中表示阶码的偏移值是127,而移码表示阶码时偏移值是128
其次为什么是127:当阶码E为全0且尾数M也为全0时,表示的真值X为零,结合符号位S为0或1,有正零和负零之分。当阶码E为全1且尾数M也为全0时,表示的真值X为无穷大(∞),结合符号位S为0或1,有+∞和-∞之分。这样,在32位浮点数表示中,要除去E用全0和全1(255)表示零和无穷大的特殊情况,因此,阶码E的取值范围变为1~254,指数的偏移量不选128(10000000B),而选127(01111111B)。对于32位规格化浮点数,真正的指数值e为-126~+127,因此,数的绝对值的范围是2-126~2127≈10-38~1038。
参考技术A 通常把一个真值表示成0.1xxxxxxxx 乘以2的e次方,阶码变成移码是e+128;
ieee754中表示为1.xxxxxxx 乘以2的e+127次方,实际上就是把尾数左移1位,阶码-1,格式上把尾数中的第一个1隐藏,与原来的真值大小没有改变。
参考技术B 的确是不一样的,我也曾困扰过。
推荐你按规定来吧,不要纠结,用阶码的真值加上偏移量就行了。
参考技术C 我的想法是,因为计算机在运行时标准最好统一,然后如果采用加128的话,这样会导致符号位的二义性,所以为了保证符号位的标准尽可能的统一采用了这个127而不是128 参考技术D

阶码 E = 指数 e + 偏移量。

偏移量,为什么是 127?

IEEE754 中规定:

 当阶码 E 为全 0,且尾数M 也为全 0 时,表示数值 X = ±0。

 当阶码 E 为全 1,且尾数M 也为全 0 时,表示数值 X 为 ±∞。

---------------------

那么,当数值 X 非零也非无穷大时,

 阶码 E 的取值,就必须在范围内:1~254。

但是,X 的指数 e 是补码,范围是:-128~127。

对比一下,偏移量,真不好选!

 如果选 128,指数 e 中的-128、+127 就不能用了。

 如果选 127,指数 e 中的-128、-127 就不能用了。

否则,将会出现 E = 0 或 E = 255。

---------------------

IEEE 最终选择了 127,大概是投硬币决定的吧。

以上是关于在IEEE754中阶码E=e+127,与阶码用移码表示不一样啊?的主要内容,如果未能解决你的问题,请参考以下文章

关于IEEE754标准浮点数阶码的移码

关于IEEE754中的浮点数的阶码的表示问题

IEEE754浮点数表示法中阶码的范围是多少?

求解IEEE754短实数零的表示

ieee754单精度浮点数 表示方法

OS - ​为什么偏移值为2^(n-1)-1而不是 2^(n-1)呢?