虽然计算机内部使用二进制来表示各种信息,但计算机与外部的交流仍采用人们熟悉和便于阅读的形式。接下来我们将讨论几种进位计数制之间的转换问题。
1 R进制数转换为十进制数
根据R进制数的按位权展开式,我们可以很方便地将R进制数转化为10进制数。
【例1】将(110.101)2、(16.24)8、(5E.A7)16转化为10进制数。
(110.101)2 =1×22 +1×21 +0×20+1×2-1 +0×2-2 +1×2-3
=6.625
(16.24)8 =1×81 +6×80 +2×8-1 +4×8-2
=14.3125
(5E.A7)16 =5×161 +14×160 +10×16-1 +7×16-2
=94.6523
2 十进制数转化为R进制数
将十进制数转化为R进制数,只要对其整数部分,采用除以R取余法,而对其小数部分,则采用乘以R取整法即可。
【例2】将(179.48)10化为二进制数。
其中,(179)10=(10110011)2(0.48)10=(0.0111101)2(近似取7位)
因此,(179.48)10=(10110011.0111101)2
从此例我们可以看出,一个十进制的整数可以精确转化为一个二进制整数,但是一个十进制的小数并不一定能够精确地转化为一个二进制小数。
【例3】将(179.48)10化为八进制数。
其中,(179)10=(263)8 ,(0.48)10=(0.365)8(近似取3位)
因此,(179.48)10=(263.365)8
【例4】将(179.48)10化为十六进制数。
其中,(179)10=(B3)16,(0.48)10=(0.7A)16(近似取2位)
所以,(179.48)10=(B3.7A)16
与十进制数转化为二进制数类似,当我们将十进制小数转换为八进制或十六进制小数的时候,同样会遇到不能精确转化的问题。
3 二进制、八进制、十六进制数之间的转换
因为8=23,所以需要3位二进制数表示1位八进制数;而16=24,所以需要4位二进制数表示1位十六进制数。由此我们可以看出,二进制、八进制、十六进制之间的转换是比较容易的。
1)二进制和八进制数之间的转换
二进制数转换成八进制数时,以小数点为中心向左右两边延伸,每三位一组,小数点前不足三位时,前面添0补足三位;小数后不足三位时,后面添0补足三位。然后将各组二进制数转换成八进制数。
【例5】将(10110011.011110101)2化为八进制。
(10110011.011110101)2 = 010 110 011.011110 101= (263.365)8
八进制转换成二进制数则可概括为“一位拆三位”,即把一位八进制写成对应的三位二进制,然后按顺序连接起来即可。
【例6】将(1234)8化为二进制数。
(1234)8=1 2 3 4=001 010 011100=(1010011100)2
2) 二进制和十六进制数之间的转换
类似于二进制转换成八进制,二进制转换成十六进制时也是以小数点为中心向左右两边延伸,每四位一组,小数点前不足四位时,前面添0补足四位;小数点后不足四位时,后面添0补足四位。然后,将各组的四位二进制数转换成十六进制数。
【例7】将(10110101011.011101)2转换成十六进制数。
(10110101011.011101)2=0101 10101011.0111 0100 =(5AB.74)16
十六进制数转换成二进制数时,将十六进制数中的每一位拆成四位二进制数,然后按顺序连接起来。
【例8】将(3CD)16转换成二进制数。
(3CD)16=3 C D=0011 11001101=(1111001101)2
关于八进制与十六进制之间的转换,通常先转换为二进制数作为过渡,再用上面所讲的方法进行转换。
【例9】将(3CD)16转换成八进制数。
(3CD)16=3 C D=0011 11001101=(1111001101)2 =001 111 001 101=(1715)8