例:0.0100101二进制转换成十进制为0.2890625。
![](https://img-blog.csdnimg.cn/img_convert/4a1ac952cae54b8e6e3088365327a2f0.png)
直接说方法:
将小数部分提取出来为0100101并将其看成二进制整数,转换成十进制就是1+4+32=37,答案即为37/128=0.2890625。128为二进制整数最高位64的两倍。
![](https://img-blog.csdnimg.cn/img_convert/973a388677f6096d470bcba0f247b45d.png)
再如0.101100100101二进制转换成十进制为0.696533203125。
![](https://img-blog.csdnimg.cn/img_convert/f71bf763a0c256335d40c806fa050a76.png)
还是将小数部分提取出来为101100100101当作二进制的整数,十进制就是1+4+32+256+512+2048=2853,2853/4096=0.696533203125。4096为最高位2048的两倍。
![](https://img-blog.csdnimg.cn/img_convert/7eb90db1001f5c1b238daec56f36e1af.png)
本人语言匮乏,实在不知该怎么解释。(如果想要想清楚我觉得可以从正方形的占比角度思考,上述方法的除数就是占有面积,被除数就是总面积,还有小数部分的值总是小于1,1就是最高位的两倍,因为111(二进制)就是2³*2-1),总同样我也不知道是否有人解释过这样的方法,但我在网上找二进制小数转十进制方法时总觉得有些繁琐。也没见到像我这样的方法(或许是我找的不全),于是在这里分享了自己的做法。