IEEE标准下十六进制转浮点数计算错误排查:45100000H指数偏差问题
十六进制转IEEE单精度浮点数的错误分析
你的计算错误出在指数位的计算规则理解错误,IEEE单精度浮点数的指数采用的是偏移127表示法,而非你使用的反码取反方式。
具体拆解修正如下:
- 十六进制
45100000H对应的完整32位二进制是:0 10001010 00100000000000000000000(拆分符号位、指数位、尾数位) - 符号位:首位
0,表示正数,这部分你是对的 - 指数位:中间8位
10001010,转换为十进制是128 + 8 + 2 = 138 - IEEE单精度浮点数的实际指数 = 指数位十进制值 - 偏移量127,也就是
138 - 127 = 11 - 尾数位:最后23位
00100000000000000000000,对应二进制小数0.001(即十进制0.125),加上浮点数隐含的整数部分1,得到1.125
最终结果就是+1.125 * 2^11,和正确答案一致。
内容的提问来源于stack exchange,提问作者Tony Cheng
相关产品推荐
相关产品推荐

