1.2.2 各种数制的转换

由于计算机内部使用二进制,要让计算机处理十进制数,必须先将其转化为二进制数才能被计算机所接受,而计算机处理的结果又需还原为人们所习惯的十进制数。

1.二进制数转换为十进制数

二进制数转换为十进制数的方法就是将二进制数的每一位数按权系数展开,然后相加。即将二进制数按式(1-1)展开,然后进行相加,所得结果就是等值的十进制数。

【例1-3】把二进制数1101.01转换为十进制数。

(1101.01)2=1×23+1×22+0×21+1×20+0×2-1+1×2-2

=8+4+0+1+0+0.25

=(13.25)10

2.十进制数转换为二进制数

将十进制数转换为二进制数是进制转换间比较复杂的一种,也是与其他进制转换的基础。这里把整数和小数转换分开讨论。

(1)整数的转换

十进制整数转换为二进制整数的方法为除基取余法,即将被转换的十进制数用2连续整除,直至最后的余数为0或1,然后将每次所得到的商按相除过程反向排列,结果就是对应的二进制数。

【例1-4】将十进制数173转换为二进制数。

将173用2进行连续整除:

所以,(173)10=(10101101)2

(2)小数的转换

十进制小数转换为二进制小数的方法为乘基取整法,即将十进制数连续乘2得到进位,按先后顺序排列进位就得到转换后的小数。

【例1-5】将十进制小数0.8125转换为相应的二进制数。

余数为0,转换结束。所以,(0.8125)10=(0.1101)2

3.二进制数与八进制数的转换

(1)二进制数转换为八进制数

因为二进制数和八进制数之间的关系正好是2的3次幂,所以二进制数与八进制数之间的转换只要按位展开就可以了。

【例1-6】将二进制数110100101.001011转换为八进制数。

以小数点为界,分别将3位二进制对应1位八进制如下:

所以,(110100101.001011)2=(645.13)8

注意:从小数点开始,往左为整数,最高位不足3位的,可以在前面补零;往右为小数,最低位不足3位的,必须在最低位后面补0。

(2)八进制数转换为二进制数

先将需要转换的八进制数从小数点开始,分别向左和向右按每1位八进制对应3位二进制展开即得到对应的二进制数。

【例1-7】将八进制数357.264转换为二进制数。

(357.264)8=(011101111.010110100)2

转换后的二进制最高位和最低位无效的0可以省略。

4.二进制数和十六进制数之间的转换

(1)二进制数转换为十六进制数

转换方法与前面所介绍的二进制数转换为八进制数类似,唯一的区别是4位二进制对应1位十六进制,而且十六进制除了0~9这10个数符外,还用A~F表示它另外的6个数符。

【例1-8】将二进制数11000111.00101转换为十六进制数。

从小数点开始,往左为整数,最高位不足4位的,可以在前面补零;往右为小数,最低位不足4位的,必须在最低位后面补0。所以,(11000111.00101)2=(0C7.28)16

注意:在给出十六进制数的前面加上“0”是因为这个十六进制数的最高位为字符C,用0作为前缀以示与字母区别。

(2)十六进制数转换为二进制数

先将需要转换的十六进制数从小数点开始,分别向左和向右按每1位十六进制对应4位二进制展开即得到对应的二进制数。

【例1-9】将十六进制数5DF.6A转换为二进制数。

(5DF.6A)16=(010111011111.01101010)2

转换后的二进制最高位和最低位无效的0可以省略。

5.十进制数与八进制数、十六进制数之间的相互转换

表1-3列出了常用进制之间的转换。只要按式(1-1)所给出的表达关系,就可以用数学方法证明并得到相应的转换方法。通常,十进制和八进制及十六进制之间的转换不需要直接进行,可用二进制作为中间量进行相互转换。如要将一个十进制数转换为相应的十六进制数,可以先将十进制数转换为二进制数,然后直接根据二进制数写出对应的十六进制数,反之亦然。

表1-3 十进制、二进制、八进制、十六进制转换表