1.2.2 不同数制间的转换
由于计算机内部使用二进制,要让计算机处理十进制数,必须先将其转化为二进制数才能被计算机所接受,而计算机处理的结果又需还原为人们所习惯的十进制数。
1.二进制数转换为十进制数
二进制数转换为十进制数的方法就是将二进制数的每一位数按权系数展开,然后相加。即将二进制数按式(1-1)展开,然后进行相加,所得结果就是等值的十进制数。
【例1-1】把二进制数11011.01转换为十进制数。
(11011.01)2=1×24+1×23+0×22+1×21+1×20+0×2-1+1×2-2
=16+8+0+2+1+0+0.25
=(27.25)10
2.十进制数转换为二进制数
将十进制数转换为二进制数是进制转换间比较复杂的一种,也是与其他进制转换的基础。这里把整数和小数转换分开讨论。
(1)整数的转换
十进制整数转换为二进制整数的方法为“除基取余法”,即将被转换的十进制数用2连续整除,直至最后的商为0,然后将每次所得到的余数按相除过程反向排列,结果就是对应的二进制数。
【例1-2】将十进制数102转换为二进制数。
所以,(102)10=(1100110)2
(2)小数的转换
十进制小数转换为二进制小数的方法为“乘基取整法”,即将十进制数连续乘2得到进位,按先后顺序排列进位就得到转换后的二进制小数。
【例1-3】将十进制小数0.8125转换为相应的二进制数。
所以,(0.8125)20=(0.1101)2
3.二进制数与八进制数的转换
(1)二进制数转换为八进制数
因为二进制数和八进制数之间的关系正好是2的3次幂,所以二进制数与八进制数之间的转换只要按位展开就可以了。
【例1-4】将二进制数10101111.01101转换为八进制数。
以小数点为界,分别将3位二进制对应1位八进制如下:
010 101 111 011 010 二进制
2 5 7 . 3 2 八进制
所以,(10101111.01101)2=(257.32)8。
注意
从小数点开始,往左为整数,最高位不足3位的,可以在前面补0;往右为小数,最低位不足3位的,必须在最低位后面补0。
(2)八进制数转换为二进制数
按每1位八进制对应3位二进制展开即得到对应的二进制数。
【例1-5】将八进制数457.264转换为二进制数。
(457.264)8=(100 101 111 . 010 110 100)2
转换后的二进制最高位和最低位无效的0可以省略。
4.二进制数和十六进制数之间的转换
(1)二进制数转换为十六进制数
转换方法与前面所介绍的二进制数转换为八进制数类似,唯一的区别是4位二进制对应1位十六进制,而且十六进制除了0~9这10个数符外,还用A~F表示它另外的6个数符。
【例1-6】将二进制数111000111.00101转换为十六进制数。
0001 1100 0111 . 0110 1000 二进制
1 C 7 . 2 8 八进制
从小数点开始,往左为整数,最高位不足4位的,可以在前面补0;往右为小数,最低位不足4位的,必须在最低位后面补0。所以,(111000111.00101)2=(1C7.28)16。
(2)十六进制数转换为二进制数
按每1位十六进制对应4位二进制展开即得到对应的二进制数。
【例1-7】将十六进制数5DF.6A转换为二进制数。
(5DF.6A)16=(0101 1101 1111.0110 1010)2
转换后的二进制最高位和最低位无效的0可以省略。
5.十进制数与八进制数、十六进制数之间的相互转换
按式(1-1)所给出的表达关系,可以将任意进制数转换为十进制数。通常,十进制和八进制及十六进制之间的转换不需要直接进行,可用二进制作为中间量进行相互转换。如要将一个十进制数转换为相应的十六进制数,可以先将十进制数转换为二进制数,然后直接根据二进制数写出对应的十六进制数,反之亦然。表1-2-2列出了常用进制之间的转换。
表1-2-2 十进制、二进制、八进制、十六进制转换表