课课通计算机原理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 各种数制及其转换方法

学习目标

1.掌握各种数制。

2.掌握十、二、八、十六进制数相互换算的方法。

内容提要

1.数制的基本概念

数制就是计数的规则。人们在日常工作、生活中广泛采用十进制,计算机内部采用二进制。计算机中采用数字信号表示数字,二进制的运算规则简单、物理元件的实现最容易。在二进制的基础上,计算机中也可采用八进制和十六进制。任何一种数制都有三个要素:基数、数码和位权。

(1)基数 基数是某数制所使用数码的个数。例如,二进制的基数为2;十进制的基数为10。

(2)数码 数码是数制中表示基本数值大小的不同数字符号。如十六进制有16个数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

(3)位权 位权是数制中某一位上的 1 所表示数值的大小,即该位的“权”。如十进制数423.15:4的位权是102=100,2的位权是101=10,3的位权是100=1,1的位权是10-1=0.1,5的位权是10-2=0.01。二进制数1101.01:自左起第一个1的位权是23=8,第二个1的位权是22=4,第一个0的位权是21=2,第三个1的位权是20=1,第二个0的位权是2-1=0.5,第四个1的位权是2?2=0.25。

2.常用的数制

(1)十进制 十进制数是人们在日常使用最广泛的数据,基数为10,有0、1、2、3、4、5、6、7、8、9共10个数码,计数的方法是“逢十进一”。十进制数通常用10或D进行标示,也可以默认。如(123.95)10、123.95D或123.95。

(2)二进制 二进制数的基数为2,数码只有2个:0、1,计数的方法是“逢二进一”。二进制数需要用2或B进行标示。如(1101.01)2或1101.01B。

(3)八进制 八进制数的基数为8,数码有8个:0、1、2、3、4、5、6、7,计数的方法是“逢八进一”。八进制数需要用8或Q进行标示。如(175.32)8或175.32Q。

(4)十六进制 十六进制数的基数为 16,数码有 16 个:0~F,计数的方法是“逢十六进一”。十六进制数用16或H进行标示。如(3E7.6B)16或3E7.6BH。

注意 R进制数的基数有0、1……(r?1)共R个,其第n位的位权为Rn?1

(5)8421BCD码 8421BCD严格地说并不是一种数制,它是二进制编码的十进制数,是最常用的BCD码。这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6,7, 8,9 十个数符。如123.95=0001 0010 0011.1001 0101BCD、(1001 0111 0101.0110)BCD=975.6、(1001 0111 0101.0110)8421BCD=975.6。

注意 BCD码有多种编码规则,8421BCD码只是其中最常用的一种,通常也将其简称为BCD码。BCD进行标示,有“BCD”尾标、“BCD”下标和“8421BCD”下标三种。

3.不同进制数的换算

1)非十进制数换算成十进制数的方法

任意进制(R)数M用序列的形式表示,则通式可写成XnXn?1…X1X0X?1…X?m,那么,其十进制的值为

Xn×Rn+Xn?1×Rn?1+…+X1×R1+X0×R0+X?1×R?1+…+X?m×R?m

如1101.01B=1×23+1×22+0×21+1×20+0×2?1+1×2?2=13.25。

2)十进制数换算成二进制数的方法

十进制数换算成二进制时,一般将整数部分与小数部分分别进行换算。整数部分采用“除以二逆向取余”,小数部分则采用“乘以二正向取整”,然后将结果组合起来。

十进制数(尤其比较大时)可以借助DB转换表快速换算成二进制。DB转换表可以自行制作,见表1-2-1。

表1-2-1 DB转换对照表

如求 1678.9D=______B,令 M=1678.9,由于 M<4096、M<2048,所以相应的二进制位取0,但M>1024,相应的二进制位取1,然后取M=1678.9-1024=654.9;又因M>512,相应的二进制位取 1,然后取 M=654.9-512=142.9,以此类推。如果没有特别要求,小数点后保持4位。则1678.9D=11010001110.1110 B

3)多种非十进制数间互相换算的方法

(1)二进制数换算成八进制数

将二进制数以小数点为界,分别向左、向右,每3位分为一组,不足3位时用0补足。整数在最高位前补0,小数在最低位后补0。然后将每组的3位二进制数值转换成八进制数即可。如求11010001110.1110B=______Q。换算如下:

11010001110.1110B=011,010,001,110.111,000B=3216.70Q

(2)八进制数换算成二进制数

按原数的顺序,将每位八进制数等值换算为3位二进制数即可。

(3)二进制数换算成十六进制数

与二进制数换算成八进制数方法相似。将二进制数以小数点为界,分别向左、向右,每4位分为一组,不足4位时用0补足。整数在最高位前补0,小数在最低位后补0。然后将每组4位二进制数值转换成十六进制数即可。如求11010001110.1110B=______H。换算如下:

11010001110.1110B=0110,1000,1110.1110B=68E.EH

(4)十六进制数换算成二进制数

与八进制数换算成二进制数方法相似。按原数的顺序,将每位十六进制数等值换算为4位二进制数即可。

注意 对于十进制数换算成八进制数、十六进制数,采用间接换算方法往往事半功倍。即先将十进制数换算成二进制数,然后由二进制数再换算成八进制数或十六进制数。以二进制数作为中间体,可以很方便地实现八进制数与十六进制数相互间换算。

例题解析

【例1-2-1】(江苏省单招考题2013年)8421BCD码10010110的真值是( )。

A.+96D

B.+226Q

C.+96H

D.-16D

分析 本题考查重点是 8421BCD 码、不同数制相互转换。BCD 码是二进制编码的十进制数,即十进制数中的每一位用4位二进制数表示。8421BCD码:10010110=1001,0110B=96D,所以其真值为+96D。

答案 A

【例1-2-2】(江苏省单招考题2012年)下列不同进制数中,最大的数是( )。

A.10111001B

B.257Q

C.97D

D.BFH

分析 本题重点是考查不同进制数的换算。基本方法是将答案A、B、D换算成十进制数,然后比较大小。10111001B=185D、257Q=175D、BFH=191D。

由于答案B、D分别是八进制、十六进制,比较容易换算成二进制。因此,可将答案B、C、D换算成二进制后比较大小。

答案 D

拓展与变换 由于97D<128D,估算出答案C对应的二进制数最多是7位,而不可能比答案A大可以先排除。这样只需要在答案A、B和D三者中找出最大的数。

【例1-2-3】下列表示法是错误的是( )。

A.(131.6)10

B.(532.6)5

C.(100.101)2

D.(267.6)8

分析 本题考查重点是数制、基数、数码等基本概念。答案B是五进制,共有5个数码0、1、2、3、4,却出现数码5、6,这是错误的。答案A、B和C分别是十、二、八进制,数码没有出现错误。

答案 B

【例1-2-4】( )(江苏省单招考题2008年)一个四位的二进制数的最大值是“1111”,其值为15,因而,四位的二进制数最多可表示15种状态。

分析 四位二进制编码:0000、0001、0010、…、1110、1111,共有16种状态,即24=16。

答案

【例1-2-5】( )若要表示0~99999的十进制数,使用二进制最少需用17位。

分析 本题重点是考查二进制编码,即多少位二进制可以表示0~99999共100000种状态。可以假设需要X位,则2X≥100000,解此不等式,得X≥17,则X的最小值为17。

答案

拓展与变换 本题可以采用估算的办法:100000=100×1000,即

64×1024<100×1000<128×1024

216<100×1000<217

就是说,216 种编码少于100000种,而217种编码大于100000种。因此,至少需要17位二进制才能满足0~99999的表示。

【例1-2-6】(江苏省单招考题2009年)某R进制数(627)R=407,则R=________。

A.8

B.9

C.12

D.16

分析 本题的考查重点是对数制的理解与掌握。根据 6×R2+2×R+7=407,解一元二次方程得R1=8、R2= ?25(舍去)。

答案 A

拓展与变换 以上解析也是最基本的思路。在解答本题时,如果R≥10,则6×R2≥600,完全可以快速地排除答案C和D。同样,如果R=9,则6×R2≥480,又可以快速排除答案B。

【例1-2-7】( )某进制数152,它与十六进制数6AH相等,该数是八进制。

分析 本题考查不同数制间相互转换方法的灵活应用。方法是将6AH换算成八进制进行观察:6AH=0110,1010B=001,101,010B=152Q。

另一种方法是假设该数是R进制,则1×R2+5×R+2=6×16+10,求出R=8,R=-13(舍去)。

答案

【例1-2-8】(江苏省单招考题2012年)已知字符A的ASCII码值为65,则字符a的ASCII码值的八进制表示为 ______。

分析 本题考查知识点有两个:一是对ASCII码表的理解与掌握;二是十进制数换算成八进制数。在ASCII码表中小写字母的值比相应大写字母的值大32,A的ASCII码值为65,则字符a的ASCII码值为65+32=97。

答案 141Q

【例1-2-9】(江苏省单招考题2010年B)十进制数19用8421BCD码表示为______。

分析 本题重点是用8421BCD码。而1的4位二进制编码是0001,9的4位二进制编码是1001,则19对应的BCD码为00011001。

00011001BCD、(00011001)BCD、(00011001)8421BCD

【例1-2-10】比2的10次方小1的十六进制数是______H。

分析 本题是考查二进制数的表示。由于210=10000000000B(即1的后面有10个0),则210-1=1111111111B(即10个1)。而1111111111B=11,1111,1111B=0011,1111,1111B=3FFH。

答案 3FF

【例1-2-11】无符号8位二进制所能表示的最大十进制数是______。

分析 因为是无符号数,其8位二进制全部为0时最小,全部为1时最大。最小的编码为00000000,其值为0;最大的编码是11111111,其值为255。8位二进制,共有28=256种状态。

答案 255

巩固练习

一、单项选择题

1.(江苏省单招考题2011年)下列四个不同进制的数中,最大的数是( )。

A.(11011001)2

B.(237)8

C.(203)10

D.(C7)16

2.下列数四个数中,最小的数为( )。

A.(101001)2

B.(52)8

C.(101001)BCD

D.(233)16

3.在下列四个数中,真值与其他三个数不相等的数是( )。

A.11011001B

B.2AH

C.331Q

D.001000010111BCD

4.以下4个数未标明属于哪一种数制,但是可以断定不是八进制数的是( )。

A.1101

B.2325

C.7286

D.4357

5.十六进制数1000转换成十进制数是( )。

A.1024

B.2048

C.4096

D.8192

6.二进制数1011.101对应的十进制数是( )。

A.9.3

B.11.5

C.11.625

D.11.10

7.某进制数152,它与十六进制数6AH相等,该数是( )。

A.二进制

B.八进制

C.二进制

D.不能确定

8.下列语句错误的是( )。

A.任何二进制整数都可以用十进制来表示

B.任何二进制小数都可以用十进制来表示

C.任何十进制整数都可以用二进制来表示

D.任何十进制小数都可以用二进制来表示

9.在十六进制数的某一位上,表示“十二”的数码符号是( )。

A.F

B.E

C.B

D.C

二、判断题

10.( )按字符的ASCII码值比较,“X”比“c”大。

11.( )十六进制中共有16个数码,最小的是0,最大数码是15。

12.( )某十六进制数用4个字节表示,可表示4位十六进制数。

13.( )现有XB、XH、XQ和XD共4个数,则最大的数是XH。

14.( )1358不可能属于八进制数。

三、填空题

15.(江苏省单招考题2010年)已知数字0的ASCII码是48,则数字9的ASCII码是______。

16.8位二进制数d3位的权是______。

17.如果7*7的结果值在某种进制下可以表示为61,则6*7的结果值相应为______。

18.(江苏省单招考题2010年)数A3.1H转换成二进制是______。

19.(江苏省单招考题2009年)十进制数25.1875对应的二进制数是______。

20.二进制数1011110.0001100111转换成十六进制数是______、八进制数是______、十进制数是______。

21.十六进制数11.4转换成二进制数是______。

22.八进制数1000转换成二进制数是______。

23.将十进制数77转换为二进制数是______。

24.十六进制数1CB.8H转换成十进制数是______。

25.将18.7转换成二进制数(保留6位小数)是______。

26.将66.6转换成二进制数是______。