二进制小数快速转成十进制小数的方法

例:0.0100101二进制转换成十进制为0.2890625。

二进制小数快速转成十进制小数的方法_第1张图片

直接说方法:

将小数部分提取出来为0100101并将其看成二进制整数,转换成十进制就是1+4+32=37,答案即为37/128=0.2890625。128为二进制整数最高位64的两倍。

二进制小数快速转成十进制小数的方法_第2张图片

再如0.101100100101二进制转换成十进制为0.696533203125。

二进制小数快速转成十进制小数的方法_第3张图片

还是将小数部分提取出来为101100100101当作二进制的整数,十进制就是1+4+32+256+512+2048=2853,2853/4096=0.696533203125。4096为最高位2048的两倍。

二进制小数快速转成十进制小数的方法_第4张图片

本人语言匮乏,实在不知该怎么解释。(如果想要想清楚我觉得可以从正方形的占比角度思考,上述方法的除数就是占有面积,被除数就是总面积,还有小数部分的值总是小于1,1就是最高位的两倍,因为111(二进制)就是2³*2-1),总同样我也不知道是否有人解释过这样的方法,但我在网上找二进制小数转十进制方法时总觉得有些繁琐。也没见到像我这样的方法(或许是我找的不全),于是在这里分享了自己的做法。

你可能感兴趣的:(数据结构)