学习二进制,最好的方法就是类比。
考虑一个十进制小数0.123,我们可以用“乘10取整”法得到它的每一位小数:第一位小数是0.123*10=1.23,取整数1;第二位小数:0.23*10=2.3,取整数2……
上面的方法供你直观理解,下面我从数学的角度分析其中的原理。
现在有一个十进制小数为0.625,要把它转换为二进制小数,我们需要找到它的每一位。记这个二进制小数点后第1位是a1,第二位是a2,……,那么这个小数的值就是a1*(1/2)^(-1)+a2*(1/2)^(-2)+a3*(1/2)^(-3)+…。现在我们的目标是根据0.625找到对应的a1,a2,a3,…使得0.625=a1*(1/2)^(-1)+a2*(1/2)^(-2)+a3*(1/2)^(-3)+…
在等式两边同时乘以2,得到1.25=a1*(1/2)^(0)+a2*(1/2)^(-1)+a3*(1/2)^(-2)+…
我们发现,左边的整数部分1对应右边的a1,也就是二进制小数的第一位,于是a1=1,对于剩下的部分:
0.25=a2*(1/2)^(-1)+a3*(1/2)^(-2)+…
我们再次乘以2,得到0.5=a2*(1/2)^(0)+a3*(1/2)^(-1)+… 于是a2=0
再乘以2,得到1=a3*(1/2)^(0)+…, 于是a3=1,到这里,所有的数都消耗完了,我们找到了0.625对应的二进制小数:0.101