![大学计算机基础(Windows 7+Office 2010)(第二版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/724/26177724/b_26177724.jpg)
1.2.2 不同数制间的转换
1.几种常用的数制
日常生活中人们习惯使用十进制,有时也使用其他进制。例如,计算时间采用六十进制,1小时为60分,1分为60秒;在计算机科学中也经常涉及二进制、八进制、十进制和十六进制等;但在计算机内部,不管什么类型的数据都使用二进制编码的形式来表示。下面介绍几种常用的数制:二进制、八进制、十进制和十六进制。
(1)常用数制的特点
表1-1列出了几种常用数制的特点。
表1-1 常用数制的特点
![](https://epubservercos.yuewen.com/A46F72/14615814104455306/epubprivate/OEBPS/Images/img00020002.jpg?sign=1739294767-0o3OvwwvdUYNIezbNPTmYR98P8vZGnit-0-b7ee02ab853eac50c4da8fa662d60085)
(2)常用数制的对应关系
常用数制的对应关系如表1-2所示。
表1-2 常用数制的对应关系
![](https://epubservercos.yuewen.com/A46F72/14615814104455306/epubprivate/OEBPS/Images/img00021001.jpg?sign=1739294767-ENqU0uoBLus89Pk2rW7rhlYSBy8l23uZ-0-d6d7cc3f58383d2b059d6e8fa5a4cb81)
(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取余”。
![](https://epubservercos.yuewen.com/A46F72/14615814104455306/epubprivate/OEBPS/Images/img00022001.jpg?sign=1739294767-5EsgmBFbQSpWX9tsjzTNOpqIDM2EeSxN-0-a19fcc09e9fea0c2f401cd51247bffef)
因此,(18)10=(10010)2。
再将小数部分“乘以2取整”。
![](https://epubservercos.yuewen.com/A46F72/14615814104455306/epubprivate/OEBPS/Images/img00022002.jpg?sign=1739294767-KzjEclq4PhiRzsxDW97PZC6wjMEjb5FZ-0-e030814fbfd3b86f55bacad9f7422dda)
因此,(0.38)10=(0.01100)2。
最后得出转换结果:(18.38)10=(10010.01100)2。
(3)八进制、十六进制与二进制之间的转换
由于8=23,16=24,所以一位八进制数相当于三位二进制数,一位十六进制数相当于四位二进制数。
①二进制数转换为八进制数或十六进制数:以小数点为界向左和向右划分,小数点左边(整数部分)从右向左每三位(八进制)或每四位(十六进制)一组构成一位八进制或十六进制数,位数不足三位或四位时最左边补0;小数点右边(小数部分)从左向右每三位(八进制)或每四位(十六进制)一组构成一位八进制或十六进制数,位数不足三位或四位时最右边补0。
【例1-5】将(10010.0111)2转换为八进制数。
![](https://epubservercos.yuewen.com/A46F72/14615814104455306/epubprivate/OEBPS/Images/img00022003.jpg?sign=1739294767-D6yvTygpdjSks7b7X2J1frU6h6B4YS5v-0-0b7602a1331ef2c69f70d82cc734c483)
因此,(10010.0111)2=(22.34)8。
【例1-6】将(10010.0111)2转换为十六进制数。
![](https://epubservercos.yuewen.com/A46F72/14615814104455306/epubprivate/OEBPS/Images/img00022004.jpg?sign=1739294767-Rle1sw8xWogteB40EHBlFHMj20QYyggR-0-3b16035c0ab1fd7f31df0e56ef9a109a)
因此,(10010.0111)2=(12.7)16。
②八进制数或十六进制数转换为二进制数:把一位八进制数用三位二进制数表示,把一位十六进制数用四位二进制数表示。
【例1-7】将(22.34)8转换为二进制数。
![](https://epubservercos.yuewen.com/A46F72/14615814104455306/epubprivate/OEBPS/Images/img00023001.jpg?sign=1739294767-RNIEQVQWiXwjHbotO7JlPi3TbkVu2ap9-0-ec0653b89259c83e809b67c77e82500f)
因此,(22.34)8=(10010.0111)2。
【例1-8】将(12.7)16转换为二进制数。
![](https://epubservercos.yuewen.com/A46F72/14615814104455306/epubprivate/OEBPS/Images/img00023002.jpg?sign=1739294767-iuMFbyYs7d6ZYTHPkwsMTZWB8Ihlh153-0-e3a719f46767859742aa9d3b87e103aa)
因此,(12.7)16=(10010.0111)2。
以上介绍了常用数制间的转换方法。其实,使用Windows操作系统提供的“计算器”可以很方便地解决整数的数制转换问题。方法如下:
①选择“开始”→“所有程序”→“附件”→“计算器”命令,启动计算器。
②选择计算器“查看”→“科学型”命令。
③单击原来的数制。
④输入要转换的数字。
⑤单击要转换成的某种数制,得到转换结果。