1.2.2 不同数制间的转换
1.几种常用的数制
日常生活中人们习惯使用十进制,有时也使用其他进制。例如,计算时间采用六十进制,1小时为60分,1分为60秒;在计算机科学中也经常涉及二进制、八进制、十进制和十六进制等;但在计算机内部,不管什么类型的数据都使用二进制编码的形式来表示。下面介绍几种常用的数制:二进制、八进制、十进制和十六进制。
(1)常用数制的特点
表1-1列出了几种常用数制的特点。
表1-1 常用数制的特点
(2)常用数制的对应关系
常用数制的对应关系如表1-2所示。
表1-2 常用数制的对应关系
(3)常用数制的书写规则
为了区分不同数制的数,常采用以下两种方法进行标识:
①字母后缀:
·二进制数用B(binary)表示。
·八进制数用O(octonary)表示。为了避免与数字0混淆,字母O常用Q代替。
·十进制数用D(decimal)表示。十进制数的后缀D一般可以省略。
·十六进制数用H(hexadecimal)表示。
例如,10011B、237Q、8079和45ABFH分别表示二进制、八进制、十进制和十六进制。
②括号外面加下标。例如,(10011)2、(237)8、(8079)10和(45ABFH)16分别表示二进制、八进制、十进制和十六进制。
2.常用数制间的转换
(1)将r进制转换为十进制
将r进制(如二进制、八进制和十六进制等)按位权展开并求和,便可得到等值的十进制数。
【例1-1】将(10010.011)2转换为十进制数。
(10010.011)2=1×24+1×21+1×2-2+1×2-3
=(18.375)10
【例1-2】将(22.3)8转换为十进制数。
(22.3)8=2×81+2×80+3×8-1
=(18.375)10
【例1-3】将(32CF.4B)16转换为十进制数。
(32CF.4B)16=3×163+2×162+C×161+F×160+4×16-1+B×16-2
=3×163+2×162+12×161+15×160+4×16-1+11×16-2
=(13007.292969)10
(2)将十进制转换为r进制
将十进制转换为r进制(如二进制、八进制和十六进制等)的方法如下:
整数的转换采用“除以r取余”法,将待转换的十进制数连续除以r,直到商为0,每次得到的余数按相反的次序(即第一次除以r所得到的余数排在最低位,最后一次除以r所得到的余数排在最高位)排列起来就是相应的r进制数。
小数的转换采用“乘以r取整”法,将被转换的十进制纯小数反复乘以r,每次相乘乘积的整数部分若为1,则r进制数的相应位为1;若整数部分为0,则相应位为0,由高位向低位逐次进行,直到剩下的纯小数部分为0或达到所要求的精度为止。
对具有整数和小数两部分的十进制数,要用上述方法将其整数部分和小数部分分别进行转换,然后用小数点连接起来。
【例1-4】将(18.38)10转换为二进制数。
先将整数部分“除以2取余”。
因此,(18)10=(10010)2。
再将小数部分“乘以2取整”。
因此,(0.38)10=(0.01100)2。
最后得出转换结果:(18.38)10=(10010.01100)2。
(3)八进制、十六进制与二进制之间的转换
由于8=23,16=24,所以一位八进制数相当于三位二进制数,一位十六进制数相当于四位二进制数。
①二进制数转换为八进制数或十六进制数:以小数点为界向左和向右划分,小数点左边(整数部分)从右向左每三位(八进制)或每四位(十六进制)一组构成一位八进制或十六进制数,位数不足三位或四位时最左边补0;小数点右边(小数部分)从左向右每三位(八进制)或每四位(十六进制)一组构成一位八进制或十六进制数,位数不足三位或四位时最右边补0。
【例1-5】将(10010.0111)2转换为八进制数。
因此,(10010.0111)2=(22.34)8。
【例1-6】将(10010.0111)2转换为十六进制数。
因此,(10010.0111)2=(12.7)16。
②八进制数或十六进制数转换为二进制数:把一位八进制数用三位二进制数表示,把一位十六进制数用四位二进制数表示。
【例1-7】将(22.34)8转换为二进制数。
因此,(22.34)8=(10010.0111)2。
【例1-8】将(12.7)16转换为二进制数。
因此,(12.7)16=(10010.0111)2。
以上介绍了常用数制间的转换方法。其实,使用Windows操作系统提供的“计算器”可以很方便地解决整数的数制转换问题。方法如下:
①选择“开始”→“所有程序”→“附件”→“计算器”命令,启动计算器。
②选择计算器“查看”→“科学型”命令。
③单击原来的数制。
④输入要转换的数字。
⑤单击要转换成的某种数制,得到转换结果。