- 課課通計算機原理
- 江新順主編
- 3852字
- 2018-12-27 10:30:53
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轉換成二進制數是______。