关于 IEEE754 中, 一般教材提到阶码都是用移码表示, 计算规则却是偏置值 + 阶数.
举个栗子:
fr=iks&word=%BD%D7%C2%EB+%D2%C6%C2%EB&ie=gbk
比如说 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 即实际的阶数) 次方已超过短浮点数可表示的范围, 算为无穷大.
来源: https://www.cnblogs.com/xunzhaorendaxia/p/9332353.html