您的位置:首页 > 理论基础

关于IEEE754浮点数阶码

2016-11-02 16:46 190 查看
问题:

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

回答:

IEEE754浮点数表示方法:(-1)^s * 1.M * 2^(E-127)

对于阶码为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(2进制)=BF000000(16进制)
这里不同的下标代表不同的进制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息