3.1.2 各进位计数制之间的转换
将数值由一种数制转换成另一种数制称为数制间的转换。
1.十进制数与二进制数之间的转换
十进制数转换成非十进制数时,可以分成两个部分(整数部分和小数部分)分别进行转换。下面以十进制数转换成二进制数为例讲述具体的转换方法,其他进制的数转换成二进制数与十进制数转换成二进制数的方法相同,可以依此类推。
(1)十进制整数转换成二进制整数
转换方法:除2取余法。把被转换的十进制整数反复地除以2,直到商为0,所得余数(从下往上读起)就是这个数的二进制表示。
【例3-1】将十进制数221转换为二进制数。
图3-1 例3-1解题过程
用221除以基数2,直到商为0为止,如图3-1所示。
结果为221D=11011101B。
(2)十进制小数转换成二进制小数
转换方法是:乘2取整法。即用十进制小数乘以基数2,取出乘积的整数,若乘积的小数部分不为0或还没有达到所要求的精度,则继续用小数部分乘以基数2,直到乘积为0或达到所要求的精度为止,最后将所取出的整数自上而下排列,作为转换后的小数。
【例3-2】将十进制数0.375转换为二进制数。
用0.375乘以基数2,取出整数,直到乘积的小数部分为0为止,如图3-2所示。
图3-2 例3-2解题过程
结果为0.375D=0.011B。
【例3-3】将十进制数125.24转换为二进制数(精确到小数点后3位)。
125.24包含有整数和小数,因此将整数部分和小数部分分开转换,如图3-3所示。
图3-3 例3-3解题过程
小数部分进行转换时,不一定能够完全转换,存在转换误差。为了减小转换误差,像十进制中的四舍五入法一样,二进制也有0舍1入法,称为下舍上入法。这样一来,得到的结果为125.24D≈1111101.0011B。
(3)二进制数转换成十进制数
任何一个二进制数的值都可以用它的按位权展开式表示。
【例3-4】将二进制数(10101.11)2转换成十进制数。
(10101.11)2=1×24+0×23+1×22+0×21+1×20+1×2-1+1×2-2=(21.75)10
2.二进制数与十六进制数之间的转换
十六进制数的基数16与二进制数的基数2之间的关系是16=24,因此1位十六进制数可以用4位二进制数来表示;反之,每4位二进制数可以组合为1位十六进制数。
可见,当需要将十六进制数转换为二进制数时,可以按位将每1位十六进制数展开为对应的4位二进制数(可参见表3-1)。同理,当需要将二进制数转换为十六进制数时,可以按位将每4位二进制数组合为对应的1位十六进制数。例如:
0A57B.C3H=1010010101111011.11000011B
10110101.11B=10110101.1100B=0B5.CH
3.二进制数与八进制数之间的转换
与上述的原理相同,由于八进制数的基数8与二进制数的基数2之间的关系是8=23。因此,1位八进制数可以用3位二进制数来表示;反之,每3位二进制数可以组合为1位八进制数。
可见,当需要将八进制数转换为二进制数时,可以按位将每1位八进制数展开为对应的3位二进制数(可参见表3-1)。同理,当需要将二进制数转换为八进制数时,可以按位将每3位二进制数组合为对应的1位八进制数。
注意
组合二进制数时,整数部分按从低位到高位的顺序组合,而小数部分按从高位到低位的顺序组合。当位数不足3位时,可补0填充,因为这样补0不会影响原数据的数据值。例如:
573.26Q=101111011.010110B
10110101.11B=010110101.110B=265.6Q
八进制数和十六进制数之间的转换:可以以二进制数为桥梁,即将需要转换的源数据按位展开为二进制数,然后将得到的二进制数按位组合为目的进制的数。