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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于IEEE754标准浮点数阶码的移码相关的知识,希望对你有一定的参考价值。

1、为什么和定点数的移码偏置值不同,定点数是2^n,浮点数是2^n-1
2、而且为什么范围是1~254(8位),按理说不应该是0~255吗?

对于阶码为0或255的情况,IEEE754标准有特别的规定:如果 E 是0 并且 M 是0,则这个数的真值为±0(正负号和数符位有关) 如果 E = 255 并且 M 是0,则这个数的真值为±∞(同样和符号位有关) 如果 E = 255 并且 M 不是0,则这不是一个数(NaN)。短浮点数和长浮点数(不含临时浮点数)的存储在尾数中隐含存储着一个1,因此在计算尾数的真值时比一般形式要多一个整数1。对于阶码E的存储形式因为是127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将E当成二进制真值进行存储。例如:将数值-0.5按IEEE754单精度格式存储,先将-0.5换成二进制并写成标准形式:-0.5(10进制)=-0.1(2进制)=-1.0×2-1(2进制,-1是指数),这里s=1,M为全0,E-127=-1,E=126(10进制)=01111110(2进制),则存储形式为:1 01111110 000000000000000000000000=BF000000(16进制)这里不同的下标代表不同的进制。 参考技术A

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

偏移量,为什么是 127?

IEEE754 中规定:

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

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

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

在一般情况下,阶码 E,就要避免出现全 0 全 1。

那么,阶码 E 的取值范围是:  1~254。

但是,指数 e 的取值范围是:-128~127。

注意到了吗? e 比 E 多两个值!

那么,这个偏移量,真不好选!

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

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

否则,将会出现 E 为全 0 或全 1。

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

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

以上是关于关于IEEE754标准浮点数阶码的移码的主要内容,如果未能解决你的问题,请参考以下文章

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

ieee754单精度浮点数 表示方法

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

IEEE754是啥

IEEE-754浮点数标准

将十进制数表示成ieee754标准的32浮点规格化数 27/64