带小数的十进制数字和2进制数字相互转换的逻辑

不同进制是指不同位置上数字对应的权值不同。

2进制对应的权值是以2为底的指数20,21....等

1001001转换为十进制的话是1+8+64=73

从10进制向2进制转换:

整数部分“除2取余”,小数部分“乘2取余”

乘二取整是针对十进制小数部分转换为二进制的方法,而整数部分为除二取余,具体如下:

  1. 将整数部分辗转相除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

原文地址:https://www.cnblogs.com/fcelebrity/p/9767718.html