带小数的十进制数字和2进制数字相互转换的逻辑
不同进制是指不同位置上数字对应的权值不同。
2进制对应的权值是以2为底的指数20,21....等
1001001转换为十进制的话是1+8+64=73
从10进制向2进制转换:
整数部分“除2取余”,小数部分“乘2取余”
乘二取整是针对十进制小数部分转换为二进制的方法,而整数部分为除二取余,具体如下:
-
将整数部分辗转相除2,将余数倒序排列,即整数部分的二进制数
-
将小数部分辗转相乘2,将乘积的个位数部分正序排列,即小数部分的二进制数
例:
将32.12转换为二进制数
整数部分:
32÷2=16余0
16÷2=8余0
8÷2=4余0
4÷2=2余0
2÷2=1余0
1÷2=0余1
将余数倒序排列,为10 0000
小数部分:
0.12×2=0.24(个位0)
0.24×2=0.48(个位0)
0.48×2=0.96(个位0)
0.96×2=1.92(后续运算只取小数部分进行,若出现个位数,则对应的二进制位数为1)
0.92×2=1.84(个位1)
0.84×2=1.68(个位1)
0.68×2=1.36(个位1)
接下来可以无限计算下去,取约数,小数部分为0.0001111
所以32.12D=10 0000.0001111