第1章 計算機中的數(shù)與編碼_第1頁
第1章 計算機中的數(shù)與編碼_第2頁
第1章 計算機中的數(shù)與編碼_第3頁
第1章 計算機中的數(shù)與編碼_第4頁
第1章 計算機中的數(shù)與編碼_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、微機原理及應用第一章 計算機中的數(shù)與編碼7/13/20221華東師大 通信工程系 馬潮 副教授1.1 數(shù)制與轉換1.2 有符號二進制數(shù)的表示方法及溢出問題1.3 定點數(shù)和浮點數(shù)1.4 二進制編碼的十進制數(shù)(BCD編碼)1.5 ASCII字符代碼1.6 漢字編碼第一章 計算機中的數(shù)與編碼返回主目錄7/13/20222華東師大 通信工程系 馬潮 副教授第一章 計算機中的數(shù)與編碼 計算機的最基本功能是進行數(shù)據(jù)的計算和處理加工。 數(shù)在計算機中是以器件的物理狀態(tài)來表示的。為了方便和可靠, 在計算機中采用了二進制數(shù)字系統(tǒng),即計算機中要處理的所有數(shù)據(jù),都要用二進制數(shù)字系統(tǒng)來表示,所有的字母、符號、漢字也都要

2、用二進制編碼(不是普通意義所理解的“數(shù)”)來表示。在本章中,我們將介紹計算機中數(shù)制和碼制的有關預備知識,其中有些內(nèi)容已在“計算機應用基礎”和“脈沖與數(shù)字電路”課程中講過。 由于它是學習微型計算機原理必不可少的基礎知識,所以有必要進行復習。7/13/20223華東師大 通信工程系 馬潮 副教授1.1 數(shù)和數(shù)制1.1.1 各種數(shù)制及其多項式表示法 在人們應用各種數(shù)字符號表示事物個數(shù)的長期過程中形成了各種數(shù)制。數(shù)制是以表示數(shù)值所用的數(shù)字符號的個數(shù)來命名的,如十進制、十二進制、十六進制、六十進制等。 各種數(shù)制中數(shù)字符號的個數(shù)稱為該數(shù)制的基數(shù)。一個數(shù)可以用不同計算制表示它的大小,雖然形式不同,但數(shù)的量值

3、則是相等的。在日常生活中,最常用的是十進制。7/13/20224華東師大 通信工程系 馬潮 副教授 1. 十進制數(shù) 十進制采用 09 十個數(shù)字和一個小數(shù)點符號來表示任意十進制數(shù)。例如,374.53 代表百位為 3,十位 7,個位為 4, 十分位為 5, 百分位為 3 的十進制數(shù)。同一個數(shù)字在不同的數(shù)位代表的數(shù)值是不同的。這種記數(shù)方法稱為位置記數(shù)法。 在位置記數(shù)法中,對每一個數(shù)位賦以不同的位值,稱為“權”。 對于十進制,每個數(shù)位上的權是 10 的某次冪,個位、十位及百位的權分別為 1、10 及 100。十分位、百分位的權分別為 10-1和 10-2。每個數(shù)位上的數(shù)字所表示的量是這個數(shù)字和該數(shù)位的

4、權的乘積。因此,任意十進制數(shù)可按權展開為 10 的冪多項式。例如,374.53 的多項式表示形式為:7/13/20225華東師大 通信工程系 馬潮 副教授 3102+7101+4 100 +510-1+310-2 因此,對于n位整數(shù)m位小數(shù)的任意十進制數(shù)N, 可用多項式表示如下: N10= Kn-110n-1+Kn-210n-2+K1101+K0100+K-110-1+K-210-2+K-(m-1)10-(m-1)+K-m 10-m 其中i表示數(shù)的某一位; Ki表示第i位的數(shù)字,它可以為 09 中的任一數(shù)字;m和n為正整數(shù)。式中 10 為十進制的基數(shù)。 7/13/20226華東師大 通信工程系

5、 馬潮 副教授 2. 二進制數(shù) 人們習慣用十進制計數(shù),但在電子計算機中, 數(shù)是以器件的物理狀態(tài)來表示的,計算機中通常采用穩(wěn)態(tài)電子器件作為保存信息的基本元件,因此計算機中采用二進制數(shù)最方便。 在二進制中,只有 0 和 1 兩個數(shù)字。二進制數(shù)同樣采用位置記數(shù)法, 它的基數(shù)為 2,每個數(shù)位上的權是 2 的某次冪。 對于n位整數(shù)m位小數(shù)的任意二進制數(shù)N2, 可以用多項式表示如下:7/13/20227華東師大 通信工程系 馬潮 副教授 例如:(1101.011)2=123+122+021+120+02-1+12-2+12-3 3. 十六進制數(shù) 計算機中采用二進制數(shù), 優(yōu)點是物理實現(xiàn)容易且運算特別簡單,缺

6、點是書寫冗長。因此常用十六進制(或有時用八進制)代替二進制來表示和書寫數(shù)據(jù)。在十六進制中,使用 0,1,9,A,B,C,D,E,F等十六個數(shù)字符號, 其中A、B、C、D、E、F分別與十進制中的 10、11、12、13、14、15 這 6 個數(shù)相對應。 十六進制數(shù)同樣采用位置記數(shù)法,其基數(shù) 16,每一數(shù)位上的權是 16 的某次冪。7/13/20228華東師大 通信工程系 馬潮 副教授 對于n位整數(shù)m位小數(shù)的任意十六進制數(shù)N16,可以用多項式表示如下:(Ki=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) 例如(10AF.12)16=1163+0162+10161+15160+1

7、16-1+216-2 實際表示時,一個十六進制數(shù)如果最高位數(shù)字為字母(A-F), 則字母前面必須加一個 0,以便與變量名等相區(qū)別。7/13/20229華東師大 通信工程系 馬潮 副教授 表 2.1 給出了以上四種數(shù)制的對應關系。為避免混淆, 可在數(shù)字的后面加填不同數(shù)制的區(qū)分符。 區(qū)分符可以是數(shù)字角注, 例如 53710或 537(十進制),11012(二進制),0EA216(十六進制),也可以用字母標注,其中:字母B(Binary)表示為二進制數(shù);字母D(Decimal)或不加字母表示為十進制數(shù);字母H(Hcxadccimal)表示為十六進制數(shù)。 一般來說, 對于基數(shù)為X的任一數(shù)可以用多項式表

8、示為7/13/202210華東師大 通信工程系 馬潮 副教授 Ki第i位的系數(shù),可以為 0,1,,(X-1)共X個數(shù)字符號中任一數(shù)字符號; m,n冪指數(shù),均為正整數(shù); Xi第i位的權。教科書的第1頁給出了計數(shù)制的標準定義。 7/13/202211華東師大 通信工程系 馬潮 副教授7/13/202212華東師大 通信工程系 馬潮 副教授1.1.2各種數(shù)制的相互轉換 1. 非十進制數(shù)轉換成十進制數(shù) 非十進制數(shù)轉換成十進制數(shù)比較簡單,可先將其按定義展開為多項式,再將系數(shù)及權均用十進制表示按十進制進行乘法與加法運算,所得結果即為該數(shù)對應的十進制數(shù)。 例1.1.1 將二進制數(shù) 1101.101 轉換為十

9、進制數(shù)。 轉換過程如下: 1101.101B =123+122+021+120+12-1+02-2+12-3 =8+4+1+0.5+0.125 =13.625 1101.101B=13.6257/13/202213華東師大 通信工程系 馬潮 副教授 例1.1.2 將十六進制數(shù)2AE.4轉換為十進制數(shù)。 2AE.4H =2162+10161+14160+416-1 =512+160+14+0.25 =686.25 2AE.4H=686.25 2. 十進制數(shù)轉換成非十進制整數(shù) (1) 十進制整數(shù)轉換成非十進制整數(shù) 設N為任一十進制整數(shù), 若要把它轉換成n位X進制整數(shù), 則 N = 7/13/202

10、214華東師大 通信工程系 馬潮 副教授 顯然, 等式右邊,除了最后一項K0以外,其余各項都包含基數(shù)X的因子,都能被X除盡。 所以等式兩邊同除以基數(shù)X, 余數(shù)正是要求的X進制數(shù)的最低位K0。商為 K n-1 X n-2 + K n-2 X n-3 +K 2 X 1+K1 同理,上式中各項除K1外,其余各項都包含基數(shù)X的因子,都能被X除盡。所以再將商除以X,余數(shù)正是要求的X進制數(shù)的次低位K1, 商為 K n-1X n-3+Kn-2Xn-4+K3X1+K2 如此一直進行下去, 直到商等于 0 為止,就得到一系列余數(shù),它們正是要求的X進制數(shù)的各位。7/13/202215華東師大 通信工程系 馬潮 副

11、教授 這樣我們可以把十進制整數(shù)轉換為X進制整數(shù)的方法總結為用該數(shù)或商“除以基數(shù)取余數(shù),先為低位后為高位”。 例1.1.3 將十進制數(shù) 301 轉換為二進制數(shù)。 轉換過程如下:301/2=150k0=19/2 = 4k5=1 150/2=75k1=04/2 = 2k6=075/2 = 37k2=12/2 = 1k7=0|37/2 = 18k3=11/2 = 0k8=118/2 = 9k4=0 301 = 100101101B7/13/202216華東師大 通信工程系 馬潮 副教授 (2) 十進制小數(shù)轉換成非十進制小數(shù) 設N為任一十進制小數(shù), 若要把它轉換為m位X進制小數(shù),則N= =K-1X-1+

12、K-2X-2+K-mX-m (2 - 6)等式兩邊同乘以基數(shù)X, 得到 K-1+K -2 X-1+K-3 X-2+K-mX-m+1 其中K-1為整數(shù)部分,它正好是所要求的X進制小數(shù)的最高位;而新的小數(shù)部分為 K-2X-1+K-3X-2+K-mX-m+1若再將上式乘以X便得到 K-2+K-3X-1+K-mX-m+27/13/202217華東師大 通信工程系 馬潮 副教授 K-2為整數(shù)部分,它正好是所要求的X進制小數(shù)的次高位。 如此繼續(xù)進行下去,直到小數(shù)部分為零時止。若乘積的小數(shù)部分始終不為 0,說明相對應的X進制小數(shù)為不盡小數(shù)。這時, 乘到能滿足計算機精度要求為止。 綜上所述,我們可以把十進制小

13、數(shù)轉換為相應X進制小數(shù)的方法總線為對該小數(shù)或乘以X后新的小數(shù)部分“乘以基數(shù)取整數(shù),先為高位后為低位”。 例1.1.4 將 0.6875 分別轉換為二進制及十六進制小數(shù)。 轉換為二進制的過程如下: 0.68752=1.375 K-1=1 0.3752=0.75 K-2=07/13/202218華東師大 通信工程系 馬潮 副教授 0.752=1.5 K-3=1 0.52=1.0 K-4=1 0.6875=0.1011B 轉換為十六進制的過程如下: 0.687516=11.0 K-1=B 0.6875=0.BH 例1.1.5 將 0.734 轉換為二進制小數(shù)。 轉換過程如下: 0.7342=1.46

14、8 K-1=1 0.4682=0.936 K-2=07/13/202219華東師大 通信工程系 馬潮 副教授 0.9362=1.872 K-3=1 0.8722=1.744 K-4=1 0.7442=1.488 K-5=1 0.4882=0.976 K-6=0 0.734=0.10110B 上面我們分別討論了十進制整數(shù)轉換為非十進制整數(shù)和十進制小數(shù)轉換為非十進制小數(shù)的方法。如果一個任意十進制數(shù)要轉換為非十進制數(shù), 我們可以把整數(shù)部分和小數(shù)部分分別加以轉換,然后把轉換后的整數(shù)部分和小數(shù)部分相加。7/13/202220華東師大 通信工程系 馬潮 副教授 例1.1.6 將十進制數(shù) 301.6875

15、分別轉換為二進制和十六進制數(shù)。 利用例1.1.3、 例1.1.4 的結果,得到: 301=100101101B,0.6875=0.1011B 301=12DH,0.6875=0.BH 301.6875=100101101.1011B 301.6875=12D.BH 3. 十六進制數(shù)與二進制數(shù)之間的轉換 由于 16=24, 故 1 位十六進制數(shù)相當于4 位二進制數(shù)。 這樣,十六進制數(shù)與二進制數(shù)之間的相互轉換是十分簡便的。7/13/202221華東師大 通信工程系 馬潮 副教授 二進制數(shù)轉換為十六進制數(shù)的方法是: 首先從小數(shù)點開始分別向左和向右把整數(shù)及小數(shù)部分每 4 位分成一組。 若整數(shù)最高位的一

16、組不足 4 位,則在其左邊加 0 補足 4 位;若小數(shù)最低位的一組不足 4 位,則在其右邊加 0 補足 4 位。然后, 用與每組二進制數(shù)所對應的十六進制數(shù)取代每組的 4 位二進制數(shù),即得到對應的十六進制數(shù)。 例1.1.7 二進制數(shù) 1011101001.110101 轉換為十六進制數(shù)的方法是: 二進制數(shù) 0010 1110 1001. 1101 0100十六進制數(shù) 2 E 9 . D 47/13/202222華東師大 通信工程系 馬潮 副教授 十六進制數(shù)轉換為二進制數(shù)的方法是: 用相應的 4 位二進制數(shù)取代每 1 位十六進制數(shù)。 例1.1.8 十六進制數(shù) 5C7A.3B 轉換為二進制的方法是:

17、 十六進制數(shù) 5 C 7 A . 3 B二進制數(shù) 0101 1100 0111 1010 . 0011 1011 5C7A.3BH=101110001111010.00111011B7/13/202223華東師大 通信工程系 馬潮 副教授1.1.3 二進制數(shù)的算術運算 二進制計數(shù)制不僅物理實現(xiàn)容易,而且運算方法也十進制計數(shù)制大為簡單。注意到二進制數(shù)加法是“逢二進一”和減法是“借一作二”的特點,再根據(jù)十進制數(shù)算術運算的方法,很容易理解和完成二進制數(shù)的算術運算。例1.1.9 10110101B+1111B。加法過程如下: 被加數(shù) 10110101 加數(shù) 00001111 進位 + 111111 和

18、 110001007/13/202224華東師大 通信工程系 馬潮 副教授 10110101B+111B=11000100B 由此可見,兩個二進制數(shù)相加時,每 1 位有 3 個數(shù)(本位被加數(shù)和本位加數(shù)及低位來的進位)相加,得到本位的和及向高的進位。例1.1.10 11000100B-100101B。 減法過程如下: 被減數(shù) 11000100 減數(shù) 00100101 借位 - 111111 差 10011117/13/202225華東師大 通信工程系 馬潮 副教授 11000100B-100101B=1001111B 與加法相類似, 兩個二進制相減時,每 1 位有 3 個數(shù)(本位被減數(shù),減數(shù)以及

19、從低位來的借位)參加運算, 本位被減數(shù)-本位減數(shù)-低位來的借位,即得到本位的差及向高位的借位。例1.1.11 1101B1011B。 乘法過程如下: 被乘數(shù) 1101 乘數(shù) 1011 1101 7/13/202226華東師大 通信工程系 馬潮 副教授 1101 0000+ 1101積 10001111 1101B1011B=10001111B 對筆算來說,上述乘法過程不但是很清楚而且很方便, 但對計算機來說,實現(xiàn)起來很不方便。有的微型計算機有專門的乘法指令來完成乘法運算。對于沒有乘法指令的微型計算機,乘法是采用部分積右移的辦法編制乘法運算程序來實現(xiàn)的。7/13/202227華東師大 通信工程系

20、 馬潮 副教授例1.1.12 100110B110B。除法過程如下: 0 0 0 1 1 0 1 0 01 0 100110B110B=110B余10B 有的微型計算機有專門的除法指令來完成除法運算。 對于沒有除法指令的微型計算機,常用“相減-左移”法編制除法運算程序?qū)崿F(xiàn)除法。7/13/202228華東師大 通信工程系 馬潮 副教授1.1.4二進制數(shù)的邏輯運算 二進制數(shù)的邏輯運算常用的有“與”、 “或”、 “異或”及“非”運算等四種。在組成表達式時,可分別用符號“AND”、 “OR”、 “XOR”及“NOT”作為運算符,有時也用“”、 “”、 “”作為“與”、 “或”、 “異或”的運算符, 用

21、數(shù)學上面加橫線“-”表示對該數(shù)進行非運算。二進制數(shù)的邏輯運算只按位進行運算。 1 位二進制數(shù)運算規(guī)則如下: “與”運算的規(guī)則為:7/13/202229華東師大 通信工程系 馬潮 副教授1 AND 0=00 AND 1=00 AND 0=01 AND 1=1“或”運算的規(guī)則為:0 OR 0=00 OR 0=10 OR 1=11 OR 1=17/13/202230華東師大 通信工程系 馬潮 副教授“異或”運算的規(guī)則為:0 XOR 0=01 XOR 0=10 XOR 1=11 XOR 1=0“非”運算的規(guī)則為:NOT 0=1NOT 1=0 多位二進制數(shù)進行邏輯運算時, 可以利用二進制數(shù)運算規(guī)則按接進

22、行運算。7/13/202231華東師大 通信工程系 馬潮 副教授 例1.1.13 二進制數(shù) 10010111 和 00111000 的“與”、“或”及“異或”。 運算結果分別為: 10010111 與)001110000001000010010111或)001110001011111110010111異或)00111000 101011117/13/202232華東師大 通信工程系 馬潮 副教授 例1.1.14 二進制數(shù) 10010111 的“非”。 運算結果為: 01101000注意: * 1個字節(jié)、2個字節(jié)表示的二進制整數(shù)范圍 * 簡便的二十進制數(shù)轉換方法7/13/202233華東師大 通

23、信工程系 馬潮 副教授1.2 有符號二進制數(shù)的表示方法及溢出問題1.2.1 有符號二進制數(shù)的表示方法 前面我們接觸的二進制數(shù)均為無符號數(shù), 即所有二進制數(shù)位均為數(shù)值位,在很多數(shù)據(jù)處理過程中需要這樣看待某些數(shù)。然而實際的數(shù)值有時是帶有符號的,既可能是正數(shù), 也可能是負數(shù)。這樣就存在一個有符號二進制數(shù)的表示方法問題。 1. 數(shù)的符號表示方法 為了表示一個有符號數(shù),除了數(shù)值位以外還應指定符號位,通常以這個數(shù)的最高位為符號位。我們假設討論的數(shù)為整數(shù)。 7/13/202234華東師大 通信工程系 馬潮 副教授 對 8 位有符號二進制整數(shù),D7 為符號位,并規(guī)定D7 為 0 表示正數(shù)的符號“+”; 為 1

24、 表示負數(shù)的符號“-”。因此,8位有符號數(shù)的編碼格式為:D7D6D5D4D3D2D1D0符號位 數(shù)值位 這樣,數(shù)的符號在機器中也數(shù)字化了,符號位的數(shù)值位一起完整地表示有符號二進制數(shù)。我們把一個數(shù)在機器中的表示形式稱為機器數(shù), 而把它們的實際數(shù)值稱為機器數(shù)的真值。7/13/202235華東師大 通信工程系 馬潮 副教授 2. 原碼表示法 如果正數(shù)的符號位用 0 表示,負數(shù)的符號位用 1 表示, 絕對值的編碼規(guī)則與前面討論的無符號數(shù)編碼規(guī)則相同。 這種表示方法稱為原碼表示法。 一個數(shù)X的原碼記作X原。 設X=Xn-2 X n-3X0(即n-1 位二進制數(shù)),其中Xi為 1 位二進制數(shù),i=0,1,

25、(n-2)。 則X原 =0 X n-2Xn-3X1X0 當X01 Xn-2Xn-3X1X0 當X0 例 1.2.1 X1=+1010101 則X1原=01010101 X2=-1011101 則X2原=110111017/13/202236華東師大 通信工程系 馬潮 副教授 原碼表示的一個有趣情況是數(shù) 0 有兩種表示形式: +0原=00000000 或 -0原=10000000 8 位二進制原碼所能表示的數(shù)值范圍為-127+127。 原碼表示法簡單且易于理解,與真值轉換也方便,這是它的優(yōu)點。缺點是進行加減運算時麻煩。如果參加運算的數(shù)可能為正,也可能為負,這時不僅要考慮運算是加還是減,而且還要考

26、慮數(shù)的符號和數(shù)的絕對值大小。例如兩數(shù)相加時,要進行判斷: 如果兩數(shù)同號, 數(shù)值部分相加,符號不變;如果兩數(shù)異號,不僅數(shù)值部分實際相減, 而且還要比較兩數(shù)的絕對值大小,才能確定實際的被減數(shù)和減數(shù)。7/13/202237華東師大 通信工程系 馬潮 副教授 因此采用原碼表示后,將使運算器的邏輯復雜化或增加機器運行時間。為此,引入了補碼表示法,它可以使正、負數(shù)的加法和減法運算簡化為單一人相加運算。 3. 補碼表示法 (1) 補碼的概念 根據(jù)同余的概念 a+NK=a(mod K) 其中K為模,N為任意整數(shù)。就是說,在模的意義下,數(shù)a與該數(shù)本身加上其模的任意整數(shù)倍之和相等。7/13/202238華東師大

27、通信工程系 馬潮 副教授 在數(shù)a的無數(shù)個a+NK同余數(shù)中, 我們感興趣的是N為 1 的同余數(shù),即補數(shù):a補數(shù) =a+K(mod K) a 0aK K-|a| -Ka0 (2 - 9) 由式(2 - 9)確定的兩種條件下數(shù)a的補數(shù),就是補碼的定義和補碼編碼規(guī)則的基礎。 在計算機運算過程中,數(shù)據(jù)的位數(shù),即字長總是有限的。 這里假設字長為n, 兩數(shù)相加求和時,如果n位的最高位產(chǎn)生了進位,就會丟掉。=7/13/202239華東師大 通信工程系 馬潮 副教授 這正是在模的意義下相加的概念。相加時丟掉的進位即等于模。所以,當n位表示整數(shù)時(1 位為符號位, n-1 位為數(shù)值位), 它的模為 2n, 即:1

28、00 0 n個 0我們把X的補碼記為X補,補碼可定義為: X補 = X 當 0X2n-1 2n+X 當-2 n-1X07/13/202240華東師大 通信工程系 馬潮 副教授 從定義式(2 - 10)可見,正數(shù)的補碼與其原碼相同, 只有負數(shù)才有求補的問題。所以,嚴格地說, “補碼表示法”應稱為“負數(shù)的補碼表示法”。一個二進制數(shù),以 2n為模,它的補碼稱為 2 補碼。 (2) 一個數(shù)的補碼的求法 根據(jù)定義求補碼 X補= 2n+X=2n-|X|, X0 例 1.2.2 X = -1010111, n=8,則 X補 = 28+(-1010111B) =100000000B-1010111B =101

29、01001B(mod 28)7/13/202241華東師大 通信工程系 馬潮 副教授 這種方法要做一次減法,很不方便,一般不用。 利用原碼求補碼 已知X = -Xn-2Xn-3X1X0 =X0則X原= 2n-1+Xn-2Xn-3X1X0由定義式(2 - 10)得: X補 = 2n+X = 2n-1+2n-1 -2n-1=7/13/202242華東師大 通信工程系 馬潮 副教授X補 =2n-1 + = 2n-1 =2n-1符號位X原數(shù)值位按位取反 因此, 一個負數(shù)X的補碼等于其原碼除符號位保持不變外,其余各位按位取反,再在最低位加 1。 例 1.2.3 X = -1010101B, 當n=8 時

30、,則 X原 = 11010101B7/13/202243華東師大 通信工程系 馬潮 副教授 X補 = 1 0 1 0 1 0 1 0B+1=10101011B 值得注意的是,0 的補碼只有唯一的形式, 符號位和數(shù)值位均為 0。8 位二進制補碼所能表示的數(shù)值范圍為-128+127。 表 2.2 給出了 8 位二進制數(shù)碼對應的無符號二進制數(shù)、原碼及補碼的值。 (3) 數(shù)的補碼表示轉換為原碼表示 一個用補碼表示的負數(shù), 如將X補再求一次補, 即將X補除符號位外取反加 1 就可得到X原,可以表示為7/13/202244華東師大 通信工程系 馬潮 副教授7/13/202245華東師大 通信工程系 馬潮

31、副教授 X補補= X原(證明從略) 例 1.2.4 X原=11010101B X補=10101011B 則 X補補=11010100B+1=11010101B= X原 因此,一個二進制補碼表示的數(shù),最高位為符號位,當符號位為“0”(即正數(shù))時,它的原碼同補碼。當符號位為1”(即負數(shù))時,對其補碼再求補,就可得到它的原碼。 (4) 補碼的運算規(guī)則 補碼運算的第一個基本公式是兩個n位二進制數(shù)之和的補碼等于該兩數(shù)的補碼之和(證明從略), 即7/13/202246華東師大 通信工程系 馬潮 副教授 X+Y補= X補+ Y補(mod 2n) (2-12) 該式(2 - 12)表明, 當帶符號的兩個數(shù)采用

32、補碼形式表示時,進行加法運算可以把符號位和數(shù)值位一起進行運算(或符號位有進位,則丟掉),結果為兩數(shù)之和的補碼形式。下面通過具體例子可以驗證該公式的正確性。 例 1.2.5 用補碼進行下列運算: (+33)+(+15); (-33)+(+15); (+33)+(-15); (-33)+(-15)。00100001B +33補 11011111B -33補+ 00001111B +15補 + 00001111B +15補 00110000B +48補 11101110B -18補7/13/202247華東師大 通信工程系 馬潮 副教授00100001B +33補 11011111B -33補+ 1

33、1110001B -15補 +11110001B -15補 100010010B +18補 111010000B -48補進位,丟掉進位,丟掉 補碼運算的第二個基本公式是兩個n位二進制數(shù)之差的補碼等于該兩數(shù)的補碼之差(證明從略),即 X-Y補=X補- Y補(mod 2n) (2 - 13)該式(2 - 13)表明, 當帶符號的兩個數(shù)采用補碼形式表示時, 進行減法運算可以把符號位和數(shù)值位一起進行運算(若符號位有錯位,則丟掉),7/13/202248華東師大 通信工程系 馬潮 副教授 結果為兩數(shù)之差的補碼形式。 這是補碼表示法的一個優(yōu)點。 下面通過具體例子可以驗證該公式的正確性。 例 1.2.6

34、用補碼進行下列運算:(+33)-(-15); (-33)-(-15); (+33)-(+15); (-33)-(+15)。00100001B +33補 11011111B -33補 -11110001B -15補 - 11110001B -15補 100110000B +48補 111101110B -18補借位,丟掉借位,丟掉7/13/202249華東師大 通信工程系 馬潮 副教授00100001B +33補 11011111B -33補 -00001111B +15補 -00001111B +15補 00010010B +18補 11010000B -48補 補碼減法運算時, 也可以利用加

35、法基本公式。 因為 X-Y=X+(-Y) X-Y補= X+(-Y)補= X補+ -Y補即 X-Y補= X補+ -Y補(mod 2n)JY (2 -14) 這是補碼運算的第三個基本公式。7/13/202250華東師大 通信工程系 馬潮 副教授 該式表明,求X-Y補可以用X補與-Y補相加來實現(xiàn)。 這里的-Y補,即對減數(shù)進行求負操作,也就是對補碼表示的數(shù)(無論是正數(shù)還是負數(shù))求得其相應的用補碼表示的負數(shù)(如果原來是正數(shù),求負后得負數(shù);原來是負數(shù), 求負后得正數(shù))。 一般稱已知Y補求得-Y補的過程叫變補或求負。 用補碼表示數(shù)時, 變補或求負是一種很有用的運算。 其規(guī)則是:如果已知 Y補= Yn-1Yn

36、-2Y1Y0 那么對Y補的每一位(包括符號位)都按位取反, 然后再加 1,結果即為-Y補。7/13/202251華東師大 通信工程系 馬潮 副教授 例 1.2.7 若 Y補=01010111B +87補 則 -Y補= 10101001B -87補 若 Y補=10101001B -87補 則 -Y補= 01010111B +87補 顯然, 兩個帶符號數(shù)采用補碼表示時, 減法運算可以通過“變補相加法”來實現(xiàn)。即X補- Y補= X補+ -Y補(mod 2n) (2 - 15) 在設計運算器時, 利用這一公式使減法運算用“變補相加法”來實現(xiàn),使得運算器的結構得到了簡化,這是補碼表示法的又一個優(yōu)點。7/

37、13/202252華東師大 通信工程系 馬潮 副教授 例 1.2.8 用補碼進行X-Y運算。 若: X=33, Y=15 X補= 00100001B Y補= 00001111B -Y補= 11110001B 則 00100001B+33補 + 11110001B-15補 100010010B+18補 若: X=33, Y=-15 X補= 00100001B Y補= 11110001B -Y補= 00001111B7/13/202253華東師大 通信工程系 馬潮 副教授則 00100001B +33補 + 00001111B +15補00110000B +48補 若: X=-33, Y=-15

38、X補= 11011111B Y補= 11110001B -Y補= 00001111B則 11011111B -33補 +00001111B +15補 11101110B -18補7/13/202254華東師大 通信工程系 馬潮 副教授 若: X=-33, Y=15 X補= 11011111B Y補= 00001111B -Y補= 11110001B 則 11011111B -33補 +11110001B -15補 111010000B -48補 需要指出的是,一旦采用補碼進行加減運算, 所有參加運算的數(shù)和運算的結果都是用補碼表示的。計算機里的實際情況就是這樣的。要得到真值,還需轉換。7/13/

39、202255華東師大 通信工程系 馬潮 副教授 在 1.1 節(jié)中, 我們已討論了無符號二進制數(shù)的加減運算規(guī)則。任意給定一個二進制數(shù),我們可以把它看作有符號數(shù), 也可以看作無符號數(shù)。其差別是如何看待最高位,看作有符號數(shù)時, 最高位被看作符號位;看作無符號數(shù)時, 最高位也看作數(shù)值位(即沒有符號位)。對于兩個無符號二進制數(shù)的加減運算,利用前面說明的有符號數(shù)補碼表示法的加減運算規(guī)則得到的結果仍然是正確的。7/13/202256華東師大 通信工程系 馬潮 副教授1.2.2 有符號數(shù)運算的溢出問題 如果計算機的字長為n位, n位二進制數(shù)的最高位為符號位,其余n-1 位為數(shù)值位,采用補碼表示法時,可表示的數(shù)

40、X的范圍為 -2n-1X2n-1-1 當n=8 時, 可表示的有符號數(shù)的范圍為-128+127; 當n=16 時,可表示的有符號數(shù)的范圍為-32768+32767。 兩個有符號數(shù)進行加減運算時,如果運算結果超出可表示的有符號和的范圍時,就會發(fā)生溢出,使計算結果出錯。很顯然, 溢出只能出現(xiàn)在兩個同號數(shù)相加或兩個異號數(shù)相減的情況下。7/13/202257華東師大 通信工程系 馬潮 副教授 具體地講, 對于加運算, 如果次高位(數(shù)值部分最高位)形成進位加入最高位,而最高位(符號位)相加(包括次高位的進位)卻沒有進位輸出時;或者反過來,次高位沒有進位加入最高位,但最高位卻有進位輸出時,都將發(fā)生溢出。

41、因為這兩種情況分別是:兩正數(shù)相加,結果超出了范圍,形式上變成了負數(shù);兩負數(shù)相加,結果超出了范圍,形式上變成了正數(shù)。 01001000B +72 + 01100010B +98 10101010B -86例 2.2.9 (+72)+(+98)有進位無進位溢出, 結果出錯7/13/202258華東師大 通信工程系 馬潮 副教授例1.2.10 (-83)+(-80)。 10101101B -83 +10110000B -80101011101B +93 無進位 有進位溢出, 結果出錯 對于減運算,當次高不需從最高位借位,但最高位卻需借位(正數(shù)減負數(shù),差超出范圍); 或者反過來,次高位需從最高位借位,

42、 但最高位不需借位(負數(shù)減正數(shù),差超出范圍), 也會出現(xiàn)溢出。7/13/202259華東師大 通信工程系 馬潮 副教授 例1.2.11 (+72) - (-98)。 01001000B +72 -1001110B -98 10101010B -86 無借位 有借位溢出, 結果出錯 例1.2.12 (-83) - (+80)。 10101101B -83 -01010000B +80 01011101B -93有借位無借位溢出, 結果出錯7/13/202260華東師大 通信工程系 馬潮 副教授1.3 定點數(shù)和浮點數(shù)1.3.1 定點法 所謂定點法, 即小數(shù)點在數(shù)中的位置是固定不變的。以定點法表示的

43、實數(shù)稱作定點數(shù)。通常,定點表示也有兩種方法: 方法 1: 規(guī)定小數(shù)點固定在最高數(shù)值位之前,機器中能表示的所有數(shù)都是小數(shù)。n位數(shù)值部分所能表示的數(shù)N的范圍(原碼表示,下同)為 1-2-nN -(1-2-n)7/13/202261華東師大 通信工程系 馬潮 副教授 它能表示的數(shù)的最大絕對值為 1-2-n,最小絕對值為 2-n。 方法 2:規(guī)定小數(shù)點固定的最低數(shù)值位之后, 機器中能表示的所有數(shù)都是整數(shù)。n 位數(shù)值部分所能表示的數(shù)N的范圍為 2n-1N-2(2n-1) 它能表示的數(shù)的最大絕對值為 2n-1, 最小絕對值為 1。下面給出定點數(shù)的兩種表示法。符號位數(shù)值位小數(shù)點符號位數(shù)值位小數(shù)點7/13/2

44、02262華東師大 通信工程系 馬潮 副教授 因為實際數(shù)值很少有都是小數(shù)或都是整數(shù)的,所以定點表示法要求程序員做的一件重要工作是為要計算的問題選擇“比例因子”。所有原始數(shù)據(jù)都要用比例因子化成小數(shù)或整數(shù), 計算結果又要用比例因子恢復實際值。在計算過程中, 中間結果若超過最大絕對值,機器便產(chǎn)生溢出,叫做“上溢”, 這時必須重新調(diào)整比例因子。中間結果如果小于最小絕對值, 計算機只能把它當作 0 處理, 叫做“下溢”, 這時也必須重新調(diào)整比例因子。結于復雜計算,計算中間需多次調(diào)整比例因子。7/13/202263華東師大 通信工程系 馬潮 副教授1.3.2 浮點法 任意一個二進制數(shù)N總可以寫成下面的形式

45、: N=d2p (2 - 16) 其中: d稱為尾數(shù), 是二進制純小數(shù), 指明數(shù)的全部有效數(shù)字。前面的符號稱作數(shù)符,表示數(shù)的符號,用尾數(shù)前的 1 位表示,0 表示正號,1 表示負號; p稱為階數(shù),它前面的符號稱作階符,用階碼前一位表示,階符為正時,用 0 表示, 階符為負時,用 1表示。 由此可知, 將尾部d的小數(shù)點向右(對+p)或向左(對-p)移動p位,即得數(shù)值N。所以階符和階碼指明小數(shù)點的位置。小數(shù)點隨著p的符號和大小而浮動。這種數(shù)稱為浮點數(shù)。浮點數(shù)的編碼格式如下所示:7/13/202264華東師大 通信工程系 馬潮 副教授階符階碼數(shù)符尾數(shù)1位 M位 1位 n位 設階碼的位數(shù)為m位, 尾數(shù)

46、的位數(shù)為n位, 則浮點數(shù)的取值范圍為 2-n2-(2m-1) |N| (1-2-n)2(2m-1)浮點數(shù)能表示的數(shù)值范圍大, 是它的主要可取之處。7/13/202265華東師大 通信工程系 馬潮 副教授 如果尾數(shù)的絕對值小于 1 且大于等于 0.5, 即采用原碼編碼的正數(shù)或負數(shù)和采用補碼編碼的正數(shù),其尾數(shù)的最高位數(shù)字為 1;采用補碼編碼的負數(shù),其尾數(shù)的最高位數(shù)字為 0,則該浮點二進制數(shù)被稱為規(guī)格化浮點數(shù)。浮點運算后 經(jīng)常要把結果規(guī)格化,規(guī)格化的操作是尾數(shù)每右移 1 位(相當于小數(shù)點左移 1 位),階碼加 1;尾數(shù)每左移 1 位,階碼減 1。 數(shù)的加減運算要求小數(shù)點對齊。 對于浮點表示的數(shù)而言,

47、 就是階碼(包括階符)相等。7/13/202266華東師大 通信工程系 馬潮 副教授 使階碼相等的操作稱為對階。一個浮點數(shù)階碼的改變, 必須伴隨著尾數(shù)的移位,才不改變數(shù)的值,即階碼加 1,尾數(shù)必須右移 1 位; 若階碼減 1, 則要求尾數(shù)左移 1 位。兩個規(guī)格化的浮點數(shù)相加或相減之前必須對階。 對階的規(guī)則是: 將兩個數(shù)中階碼小的數(shù)的尾數(shù)右移、階碼增大,直到與另一個數(shù)的階碼相等為止。 這樣操作是合理的,因為尾數(shù)右移,只可能丟失最低有效位, 造成誤差較小。7/13/202267華東師大 通信工程系 馬潮 副教授1.4 二進制編碼的十進制數(shù)(BCD編碼)1.4.1 8421BCD碼 如前所述,計算機

48、中是使用二進制代碼工作的。 但是由于長期的習慣,在日常生活中,人們最熟悉的數(shù)制是十進制。 為解決這一矛盾, 提出了一人比較適合于十進制系統(tǒng)的二進制代碼的特殊形式,即將 1 位十進制的 09 這十個數(shù)字分別用 4 位二進制碼的組合來代表,在此基礎上,可按位對任意十進制數(shù)進行編碼。這就是二進制編碼的十進制數(shù),簡稱BCD碼(Binary-Codcd Decimal)。7/13/202268華東師大 通信工程系 馬潮 副教授 4 位二進制數(shù)碼有 16 種組合,原則上可任選其中的 10 種作為代碼,分別代表十進制中 0 到 9 這 10 個數(shù)字。 為便于記憶和比較直觀,最常用的方法是 8421BCD碼,

49、 8、4、 2、 1 分別是 4 位二進制數(shù)的位權值。 表 2.3 給出了十進制數(shù)和二進制碼的對應關系。 這種BCD碼與十進制數(shù)的關系直觀, 其相互轉換也很簡單。 例 2.4.1十進制數(shù)和BCD碼相互轉換 將十進制數(shù) 75.4 轉換為BCD碼 75.4=(01110101.0100)BCD 將BCD碼10000101.0101 轉換為十進制數(shù)7/13/202269華東師大 通信工程系 馬潮 副教授7/13/202270華東師大 通信工程系 馬潮 副教授 (10000101.0101)BCD = 85.5 同一個 8 位二進制代碼表示的數(shù), 當認為它表示的是二進制數(shù)和認為它表示的是二進制編碼的十

50、進制數(shù)時, 數(shù)值是不相同的。 例如 00011000 作為二進制數(shù)時,其值為 24;但作為 2 位BCD碼時,其值為 18。 在計算機中, BCD碼有兩種基本格式: 組合式BCD碼格式和分離式BCD碼格式。 在組合式BCD碼格式中,兩位BCD碼的十進制數(shù),存放在一個字節(jié)中(壓縮BCD碼)。 如數(shù) 82 存放格式為: 1000 0010 7/13/202271華東師大 通信工程系 馬潮 副教授 在分離BCD碼格式中, 每位數(shù)存放在 8 位字節(jié)的低 4 位部分,高 4 位部分的內(nèi)容與數(shù)值無關,如數(shù) 82 存放格式為: uuuu1000 uuuu0010 其中u表示任意。7/13/202272華東師

51、大 通信工程系 馬潮 副教授1.4.2 BCD碼的加減運算 下面我們以組合式BCD碼格式為例討論BCD碼的加法與減法運算。由于BCD編碼是將每個十進制數(shù)用一組 4 位二進制數(shù)來表示,因此,若將這種BCD碼直接交計算機去運算, 由于計算機總是把數(shù)當作二進制數(shù)來運算,所以結果可能出錯。 例 2.4.2 用BCD碼求 38+49。 0011 1000 38 的BCD碼+ 0100 1001 49 的BCD碼 1000 0001 81 的BCD碼7/13/202273華東師大 通信工程系 馬潮 副教授 對應十進制數(shù)為 81, 正確結果應為 87, 顯然結果是錯誤的。其原因是,十進制數(shù)相加應當是“逢十進

52、一”,而計算機按二進制數(shù)運算, 每 4 位為一組, 低 4 位向高 4 位進位與十六進制數(shù)低位向高位的情況相當,是“逢十六進一”,所以當相加結果超過 9 時將比正確結果少 6。因此,結果出錯。解決的辦法是對二進制加法運算的結果采用“加 6 修正”,將二進制加法運算的結果修正為BCD碼加法運算的結果。兩個兩位BCD數(shù)相加時,對二進制加法運算結果修正的規(guī)則如下: (1) 如果任何兩個對應位BCD數(shù)相加的結果向高一位無進位時,若得到的結果小于或等于 9,則該位不需修正;若得到的結果大小 9 且小于 16 位,則該位進行加 6 修正。7/13/202274華東師大 通信工程系 馬潮 副教授 (2) 如

53、果任何兩個對應位BCD數(shù)相加的結果向高一位有進位時(即結果大于或等于 16),該位進行加 6 修正。 (3) 低位修正結果使高位大于 9 時, 高位進行加 6 修正。這種修正稱為BCD調(diào)整。 下面通過例題驗證上述規(guī)則的正確性。 2.4.3用BCD碼求 35+21。 0011 0101 35 +0010 0001 21 0101 0110 567/13/202275華東師大 通信工程系 馬潮 副教授 低 4 位, 高 4 位均不滿足修正法則, 所以結果正確, 不需修正。 例 2.4.4用BCD碼求 25+37。 0010 0101 25 +0011 0111 37 0101 1100 低 4 位

54、滿足法則 1 +0000 0110 加 6 修正 0110 0010 62 結果正確 17/13/202276華東師大 通信工程系 馬潮 副教授 例 2.4.5用BCD碼求 38+49。 0011 1000 38 +0100 1001 49 1000 0001 低 4 位滿足法則 2 +0000 0110 加 6 修正 1000 0111 87結果正確 1 例 2.4.6用BCD碼求 42+95。 0100 0010 42 +1001 0101 95 7/13/202277華東師大 通信工程系 馬潮 副教授 1101 0111 高 4 位滿足法則 1 +0110 0000 加 6 修正 100

55、11 01111 37結果正確 1 例 2.4.7用BCD碼求 91+83。 1001 0001 91 +1000 0011 83 10001 0100 高 4 位滿足法則 2 +0110 0000 加 6 修正 10111 01001 74結果正確 17/13/202278華東師大 通信工程系 馬潮 副教授例 2.4.8用BCD碼求 94+7。 1001 0100 94 +0000 0111 7 1001 1011 低 4 位滿足法則 1 +0000 0110 加 6 修正 1010 0001 高 4 位滿足法則 3 +0110 0000 加 6 修正 10000 0001 101 結果正確

56、 7/13/202279華東師大 通信工程系 馬潮 副教授例 2.4.9用BCD碼求 76+45。 0111 0110 76 +0100 0101 45 1011 1011 低 4 位、 高 4 位均滿足法則 1 +0110 0110 同時加 6 修正 10010 0001 121 結果正確 17/13/202280華東師大 通信工程系 馬潮 副教授 兩個BCD碼進行減法運算時, 當?shù)臀幌蚋呶挥薪栉粫r, 由于“借一作十六”與“借一作十”的差別, 將比正確結果多 6, 所以有借位時, 可采用“減 6 修正法”來修正。 實際上,計算機中有BCD調(diào)整指令, 兩個BCD碼進行加減時, 先按二進制加減指

57、令進行運算, 再對結果用BCD調(diào)整指令進行調(diào)整, 就可得到正確的十進制運算結果。 另外,BCD碼的加減運算,也可以在運算前由程序先變換成二進制,然后由計算機對二進制數(shù)運算處理,運算以后再將二進制數(shù)結果由程序轉換為BCD碼。7/13/202281華東師大 通信工程系 馬潮 副教授2.5 ASCII字符代碼 現(xiàn)代計算機使用各種程序設計語言, 任何語言都是由字母、數(shù)字和符號組成的。要輸入程序,計算機必須接受由字母、 數(shù)字和符號組成的信息;用戶在機器上操作時,總要輸入許多監(jiān)控程序或操作系統(tǒng)所能識別的各種命令, 命令也是由字母、數(shù)字和符號組成的。 計算機輸出也是這樣,把人們可以識別的字母、 數(shù)字和符號打印出來或顯示在屏幕上。 在計算機內(nèi), 任何信息都是用代碼表示的,字母、數(shù)字和符號(以后簡稱為字符)也是用代碼表示的。7/13/202282華東師大 通信工程系 馬潮 副教授 一般情況下,計算機依靠輸入設備把要輸入的字符編成一定格式的代碼,然后才能接收進來。輸出則是相反過程, 為了在輸出設備輸出字符,計算機要把相應的字符的編碼送到外部輸出設備。 目前國際上使用的字符編碼系統(tǒng)有許多種。在微型計算機中普遍采用的是美國國家信息交換標準字符碼。即ACSII碼(Amer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論