大学计算机基础(第三版)
上QQ阅读APP看书,第一时间看更新

1.2.2 数制的转换

1.非十进制转换为十进制

按权展开求和,各个数码与相应位权相乘以后再相加即为对应的十进制数。

【例1-2】将二进制数(10011.101)2、八进制数(504.1)8、十六进制数(18D.6)16转换为十进制数。

解:(10011.101)2=1×24+0×23+0×22+1×21+1×20+1×2-1+0×2-2+1×2-3

=16+2+1+0.5+0.125=(19.625)10

(504.1)8=5×82+0×81+4×80+1×8-1=320+4+0.125=(324.125)10

(18D.6)16=1×162+8×161+13×160+6×16-1=256+128+13+0.375=(397.375)10

2.十进制转换为非十进制

整数部分和小数部分分别遵循不同的转换规则。将十进制数转换为R进制数的过程如下:

整数部分:除以R取余法,即整数部分不断除以R取余数,直到商为0为止,最先得到的余数为最低位,最后得到的余数为最高位。

小数部分:乘R取整法,即小数部分不断乘以R取整数,直到乘积为0或达到有效精度为止,最先得到的整数为最高位(最靠近小数点),最后得到的整数为最低位。

转换规则可简记为:以小数为基准,整数部分除以R取余数,直到商为0,所得余数从右往左依次排列;小数部分乘R取整数,直到小数为0或达到有效精度为止,所得整数从左至右依次排列。

【例1-3】将(183.625)10分别转换成二进制、八进制和十六进制数。

解:若十进制数既有小数部分,又有整数部分,则将它们分别转换后再合起来。

整数(183)10转换成其他R进制的方法,除R取余:

整数部分转换结果为:(183)10=(10110111)2=(267)8=(B7)16

小数(0.625)10转换成其他R进制的方法,乘R取整:

小数部分转换结果为(0.625)10=(0.101)2=(0.5)8=(0.A)16;所以,最终转换结果为(183.625)10=(10110111.101)2=(267.5)8=(B7.A)16

提示

有的十进制小数不能精确转换为相应的非十进制小数,即出现“除不尽”现象,此时可根据要求保留一定的小数位数。

3.八进制、十六进制转换为二进制

由23=8和24=16可以看出每位八进制数可用3位二进制数表示,每位十六进制数可用4位二进制数表示。所以,将八进制或十六进制转换为二进制时,只要将八进制数或十六进制数的每一位表示为3位或4位二进制数,去掉整数首部的0或小数尾部的0即可得到二进制数。

【例1-4】将(372.531)8和(19A76.78)16转换为二进制数。

解:(372.531)8=(011 111 010.101 011 001)2=(11 111 010.101 011 001)2

(19A76.78)16=(0001 1001 1010 0111 0110.0111 1000)2

=(1 1001 1010 0111 0110.0111 1)2

4.二进制转换为八进制、十六进制

由8=23和16=24可以得知,二进制转换为八进制或十六进制时,需要以小数点为中心,分别向左、右每3位或4位分成一组,不足3位或4位的,整数部分在左边补零,小数部分在右边补零。然后,将每组数用一位对应的八进制数或十六进制数代替即可。

【例1-5】将(11011011110111.110001)2转换为八进制数和十六进制数。

解:当由二进制数转换成八进制数或十六进制数时,只需要把二进制数按照3位一组或4位一组转换成八进制数或十六进制数即可。

转换结果为(011 011 011 110 111.110 001)2=(33367.61)8;(0011 0110 1111 0111.1100 0100)2=(36F7.C4)16