- 數字電子技術基礎(第2版)
- 張志良編著
- 2468字
- 2024-05-23 17:17:46
1.2 數制與編碼
1.2.1 二進制數和十六進制數
數制即計數進位制。人們習慣于用十進制數,但有些場合也用其他進制數,如時間計數時,分秒的進位用60,即六十進制。在數字電路和計算機中,通常采用二進制數和十六進制數。
1.十進制數(Decimal Number)
主要特點如下。
①基數是10。有10個數碼(數符):0、1、2、3、4、5、6、7、8、9。
②進位規則是“逢十進一”。
所謂基數,是指計數制中所用到數碼的個數。如十進制共有0~9十個數碼,基數是10,進位規則是“逢十進一”。當基數為M時,便是“逢M進一”。在進位計數制中常用“基數”來區別不同的進位數。
十進制整數,其數值可表達為

[N]10中的下標10表示數N是十進制數,十進制數也可用[N]D表示。更多情況下,下標10或D可省略不標。
10i-1、10i-2、…、101、100稱為十進制數各數位的權。
例如,1234=1×103+2×102+3×101+4×100
2.二進制數(Binary Number)
主要特點如下。
①基數是2。只有兩個數碼:0和1。
②進位規則是“逢二進一”。
二進制整數,其數值可表達為

[N]2中的下標2表示數N是二進制數,二進制數也可用N B表示,尾綴B一般不能省略。
2i-1、2i-2、…、21、20稱為二進制數各數位的權。
例如,10101011 B=1×27+0×26+1×25+0×24+1×23+0×22+1×21+1×20=171
為什么要在數字電路和計算機中采用二進制數呢?
①二進制數只有兩個數碼0和1,可以代表兩個不同的穩定狀態,如燈泡的亮和暗、繼電器的合和開、信號的有和無、電平的高和低、晶體管的飽和導通和截止。因此,可用電路來實現兩種狀態。
②二進制基本運算規則簡單,操作方便。
但是二進制數也有其缺點,數值較大時,位數過多,不便于書寫和識別。因此,在數字系統中又常用十六進制數來表示二進制數。
3.十六進制數(Hexadecimal Number)
主要特點如下。
①基數是16。有16個數碼:0、1、…、9、A、B、C、D、E、F。其中A、B、C、D、E、F分別代表10、11、12、13、14、15。
②進位規則是“逢十六進一”。
十六進制整數,其數值可表達為

[N]16中的下標16表示數N是十六進制數,十六進制數也可用N H表示,尾綴H一般不能省略。
16i-1、16i-2、…、161、160稱為十六進制數各位的權。
例如,AB H=10×161+11×160=160+11=171
十六進制數與二進制數相比,大大縮小了位數,縮短了字長。一個4位二進制數只需要用1位十六進制數表示,一個8位二進制數只需用兩位十六進制數表示,轉換極其方便,例如,上例中AB H=10101011 B=171。
十六進制數、二進制數、十進制數對應關系表如表1-1所示。
表1-1 十六進制數、二進制數和十進制數對應關系表

需要指出的是,除二進制數、十六進制數外,早期數字系統中還推出過八進制數,現早已淘汰不用。
1.2.2 不同進制數間相互轉換
1.二進制數、十六進制數轉換為十進制數
二進制數、十六進制數轉換為十進制數只需按式(1-2)、式(1-3)展開相加即可。為了便于快速轉換,讀者應熟記二進制數和十六進制數部分常用位權(如表1-2所示),對進一步學習數字電路后續內容大有幫助。
2.十進制整數轉換為二進制數
十進制整數轉換為二進制數用“除2取余法”。即用2依次去除十進制整數及除后所得的商,直到商為0止,并依次記下除2時所得余數,第一個余數是轉換成二進制數的最低位,最后一個余數是最高位。
表1?2 常用位權

【例1-1】將十進制數41轉換為二進制數。
解:

因此,41=101001B
3.十進制整數轉換為十六進制數
十進制整數轉換為十六進制數用“除16取余法”,方法與“除2取余法”相同。
【例1?2】將十進制數8125轉換為十六進制數。
解:

因此,8125=1FBD H
4.二進制數與十六進制數相互轉換
前述4位二進制數與1位十六進制數有一一對應關系,如表1-1所示。相互轉換時,只要用相應的數值代換即可。二進制數整數轉換為十六進制數時,應從低位開始自右向左每4位一組,最后不足4位用零補足。
【例1?3】
【例1?4】
1.2.3 二進制數加減運算
1.二進制數加法運算
運算規則:①0+0=0
②0+1=1+0=1
③1+1=10,向高位進位1
運算方法:兩個二進制數相加時,先將相同權位對齊,然后按運算規則從低到高逐位相加,若低位有進位,則必須同時加入。
【例1?5】計算10100101 B+11000011 B
解:

因此,10100101 B+11000011 B=101101000 B
2.二進制數減法運算
運算規則:①0-0=0
②1-0=1
③1-1=0
④0-1=1,向高位借位1
運算方法:兩個二進制數相減時,先將相同權位對齊,然后按運算規則從低到高逐位相減。不夠減時可向高位借位,借1當2。
【例1?6】計算10100101 B-11000011 B
解:

因此,10100101 B -11000011 B =11100010 B(借位1)
讀者可能感到奇怪的是,二進制數減法怎么會出現差值比被減數和減數還要大的現象?在數字電路和計算機中,無符號二進制數減法可無條件向高位借位,不出現負數(二進制負數另有表達方法,不在本書討論范圍)。實際上該減法運算是110100101 B-11000011 B。
3.二進制數移位
二進制數移位可分為左移和右移。左移時,若低位移進位為0,相當于該二進制數乘2;右移時,若高位移進位為0,移出位作廢,相當于該二進制數除以2。
例如,1010 B左移后變為10100 B,10100 B=1010 B×2;1010 B右移后變為0101 B,0101 B=1010 B/2。
1.2.4 BCD碼(Binary Coded Decimal)
人們習慣上是用十進制數,而數字系統必須用二進制數分析處理,這就產生了二-十進制代碼,也稱為BCD碼。BCD碼種類較多,有8421碼、2421碼和余3碼等,其中8421 BCD碼最為常用。8421 BCD碼用[N]8421BCD表示,常簡化為[N]BCD。
1.編碼方法
BCD碼是十進制數,逢十進一,只是數符0~9用4位二進制碼0000~1001表示而已。8421 BCD碼每4位以內按二進制進位;4位與4位之間按十進制進位。其與十進制數之間的對應關系如表1-3所示。
但是4位二進制數可有16種狀態,其中1010、1011、1100、1101、1110和1111六種狀態舍去不用,且不允許出現,這6種數碼稱為非法碼或冗余碼。
2.轉換關系
(1)BCD碼與十進制數相互轉換
由表1-3可知,十進制數與8421 BCD碼轉換十分簡單,只要把數符0~9與0000~1001對應互換就行了。
【例1?7】
【例1?8】
(2)BCD碼與二進制數相互轉換
8421 BCD碼與二進制數之間不能直接轉換,通常需先轉換為十進制數,然后再轉換。
【例1?9】將二進制數01000011B轉換為8421 BCD碼。
表1?3 十進制數與8421 BCD碼對應關系

解:01000011B=67=[01100111]BCD
需要指出的是,決不能把[01100111]BCD誤認為01100111 B,二進制碼01100111 B的值為103,而[01100111]BCD的值為67。顯然,兩者是不一樣的。
【復習思考題】
1.5 為什么要在數字系統中采用二進制數?
1.6 二進制數有什么缺點?如何改善?
1.7 二進制數減法,為什么有時差值會大于被減數?
1.8 什么叫BCD碼?為什么在數字系統中要引入BCD碼?
1.9 BCD碼與二進制碼有否區別?如何轉換?