谈起二进制与十进制之间的相互转换,很多人都忘记其转换的算法了,因为现在都可以借助计算器来转换了。
但是,有的时候,我们还得需要掌握必要的理论算法,方知其转换的来龙去脉。下面,就为你详细介绍,二进制数和十进制数的整数部分、小数部分的相互转换。
①二进制整数部分转十进制
理论依据:从最后一位开始算(从右往左),依次列为第0、1、2...n位,即第n位的数(0或1)乘以2的n次方。
比如:二进制数1101,从右往左数,1为0位,0为1位,1为2位,1为3位。
因此,上述的二进制,转换为十进制,计算过程是这样的:
1×20+0×21+1×22+1×23
即1乘以2的零次方+0乘以2的1次方+1乘以2的零2次方+1乘以2的3次方等于13
这个13就是十进制数。
②二进制小数部分转十进制
关于小数部分,方法类似,从高位开始往低位算(从左往右),依次为1、2、3……m位,即第m位的数乘以2的负m次方。
比如:0.1011这个二进制数,1为1位,0为2位,1为3位,1为4位。
因此,上述的二进制小数,计算过程是这样的:
1×2-1+0×2-2+1×2-3+1×2-4
即1乘以2的负1次方+0乘以2的负2次方+1乘以2的负3次方+1乘以2的负4次方,其经过为:0.6875
这个0.6875就是十进制数。
③十进制整数转二进制
理论依据:用2辗转相除至结果为1,将余数和最后的1从下向上倒序写就是结果。
将302转换成二进制的数。
302/2 = 151 余0 (注意这个0将写在二进制数的最后面,即最右边,最低位嘛)
151/2 = 75 余1
75/2 = 37 余1
37/2 = 18 余1
18/2 = 9 余0
9/2 = 4 余1
4/2 = 2 余0
2/2 = 1 余0 (注意这个1将写在二进制数的最前面,即最右边,最高位嘛)
故302转换成二进制的数为100101110
④十进制小数转二进制
对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。
如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位
如:0.25的二进制
0.25*2=0.5 取整是0
0.5*2=1.0 取整是1
即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位)
0.8125的二进制
0.8125*2=1.625 取整是1
0.625*2=1.25 取整是1
0.25*2=0.5 取整是0
0.5*2=1.0 取整是1
即0.8125的二进制是0.1101(第一次所得到为最高位,最后一次得到为最低位)