手动将二进制浮点数(0.11001100)转换为十进制的方法确认
二进制浮点数0.11001100转十进制的计算确认
你的计算方向完全反了,二进制小数转十进制的规则是:**小数点后从左到右的每一位,分别对应2-1、2-2、2-3……以此类推**,而不是从右往左对应20开始的指数。
正确的计算逻辑
对于二进制数 0.11001100,小数点后每一位的权重对应如下:
- 第1位(左起):1 → 权重
2^-1 - 第2位:1 → 权重
2^-2 - 第3位:0 → 权重
2^-3 - 第4位:0 → 权重
2^-4 - 第5位:1 → 权重
2^-5 - 第6位:1 → 权重
2^-6 - 第7位:0 → 权重
2^-7 - 第8位:0 → 权重
2^-8
正确计算式
(1*2^-1) + (1*2^-2) + (0*2^-3) + (0*2^-4) + (1*2^-5) + (1*2^-6) + (0*2^-7) + (0*2^-8)
计算结果
代入数值计算:
0.5 + 0.25 + 0 + 0 + 0.03125 + 0.015625 = 0.796875
你之前的错误在于把小数点后的位当成了从右往左对应正指数/零指数,这是整数转二进制的规则,和小数转十进制的规则完全相反。
内容的提问来源于stack exchange,提问作者vold3x
相关产品推荐
相关产品推荐

