浮点数阶码的计算和表示

关于IEEE754中,一般教材提到阶码都是用移码表示,计算规则却是偏置值+阶数。

举个栗子:

关于移码的一个问题,有点糊涂了

比如说IEEE 754的浮点数表示,在32位浮点寄存器中,-8.25的16进制表示是多少。
我怎么算都是C1840000H,而答案是C1040000H。
这其中的差别就在阶码上。阶码是用移码表示的。8.25也就是1000.01,就是1.00001乘以2^3.阶码是3.
问题来了。根据 移码就是补码符号位取反,3的补码是0000011.所以移码就是10000011;
可是答案里面说,移码就是127+3=130.所以是10000010;

上面的问题来源于百度知道,也是昨天困扰我的一个问题,查阅了相关资料才知道原来这里的阶码并不是直接用移码表示的,

准确来说是用阶数的移码减一表示的,所以3的移码10000011B减一即:10000010B,数值上等于 偏置值+阶数,即127+3=130(10000010B)。

这里的减一也从侧面理解了为啥阶码的数值范围是一般都是1~254 or 1~2046 。比如8位阶码的短浮点数,当阶码为1111 1111B

移码数值为+127即2的128(127+1即实际的阶数)次方已超过短浮点数可表示的范围,算为无穷大。

猜你喜欢

转载自www.cnblogs.com/xunzhaorendaxia/p/9332353.html