版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2022-7-611.1 數(shù)制與轉換1.2 有符號二進制數(shù)的表示方法及溢出問題1.3 定點數(shù)和浮點數(shù)1.4 二進制編碼的十進制數(shù)(BCD編碼)1.5 ASCII字符代碼1.6 漢字編碼第一章 計算機中的數(shù)與編碼返回主目錄第1頁/共93頁2022-7-62第一章 計算機中的數(shù)與編碼 計算機的最基本功能是進行數(shù)據(jù)的計算和處理加工。 數(shù)在計算機中是以器件的物理狀態(tài)來表示的。為了方便和可靠, 在計算機中采用了二進制數(shù)字系統(tǒng),即計算機中要處理的所有數(shù)據(jù),都要用二進制數(shù)字系統(tǒng)來表示,所有的字母、符號、漢字也都要用二進制編碼(不是普通意義所理解的“數(shù)”)來表示。在本章中,我們將介紹計算機中數(shù)制和碼制的有關預
2、備知識,其中有些內容已在“計算機應用基礎”和“脈沖與數(shù)字電路”課程中講過。 由于它是學習微型計算機原理必不可少的基礎知識,所以有必要進行復習。第2頁/共93頁2022-7-631.1 數(shù)和數(shù)制1.1.1 各種數(shù)制及其多項式表示法 在人們應用各種數(shù)字符號表示事物個數(shù)的長期過程中形成了各種數(shù)制。數(shù)制是以表示數(shù)值所用的數(shù)字符號的個數(shù)來命名的,如十進制、十二進制、十六進制、六十進制等。 各種數(shù)制中數(shù)字符號的個數(shù)稱為該數(shù)制的基數(shù)。一個數(shù)可以用不同計算制表示它的大小,雖然形式不同,但數(shù)的量值則是相等的。在日常生活中,最常用的是十進制。第3頁/共93頁2022-7-64 1. 十進制數(shù) 十進制采用 09 十
3、個數(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ù)位的權的乘積。因此,任意十進制數(shù)可按權展開為 10 的冪多項式。例如,374.53 的多項式表示形式為:第4頁/共93頁2022-7-65
4、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 inmiik 101 其中i表示數(shù)的某一位; Ki表示第i位的數(shù)字,它可以為 09 中的任一數(shù)字;m和n為正整數(shù)。式中 10 為十進制的基數(shù)。 第5頁/共93頁2022-7-66 2. 二進制數(shù) 人們習慣用十進制計數(shù),但在電子計算機中, 數(shù)是以器件的物理狀態(tài)來表示的,計算機中通常采用穩(wěn)態(tài)電子器件作為保存信息的基本元件
5、,因此計算機中采用二進制數(shù)最方便。 在二進制中,只有 0 和 1 兩個數(shù)字。二進制數(shù)同樣采用位置記數(shù)法, 它的基數(shù)為 2,每個數(shù)位上的權是 2 的某次冪。 對于n位整數(shù)m位小數(shù)的任意二進制數(shù)N2, 可以用多項式表示如下:)或10(212iinmiikkN第6頁/共93頁2022-7-67 例如:(1101.011)2=123+122+021+120+02-1+12-2+12-3 3. 十六進制數(shù) 計算機中采用二進制數(shù), 優(yōu)點是物理實現(xiàn)容易且運算特別簡單,缺點是書寫冗長。因此常用十六進制(或有時用八進制)代替二進制來表示和書寫數(shù)據(jù)。在十六進制中,使用 0,1,9,A,B,C,D,E,F等十六個數(shù)
6、字符號, 其中A、B、C、D、E、F分別與十進制中的 10、11、12、13、14、15 這 6 個數(shù)相對應。 十六進制數(shù)同樣采用位置記數(shù)法,其基數(shù) 16,每一數(shù)位上的權是 16 的某次冪。第7頁/共93頁2022-7-68 對于n位整數(shù)m位小數(shù)的任意十六進制數(shù)N16,可以用多項式表示如下:inmiikN16.116(Ki=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) 例如(10AF.12)16=1163+0162+10161+15160+116-1+216-2 實際表示時,一個十六進制數(shù)如果最高位數(shù)字為字母(A-F), 則字母前面必須加一個 0,以便與變量名等相區(qū)別。第8
7、頁/共93頁2022-7-69 表 2.1 給出了以上四種數(shù)制的對應關系。為避免混淆, 可在數(shù)字的后面加填不同數(shù)制的區(qū)分符。 區(qū)分符可以是數(shù)字角注, 例如 53710或 537(十進制),11012(二進制),0EA216(十六進制),也可以用字母標注,其中:字母B(Binary)表示為二進制數(shù);字母D(Decimal)或不加字母表示為十進制數(shù);字母H(Hcxadccimal)表示為十六進制數(shù)。 一般來說, 對于基數(shù)為X的任一數(shù)可以用多項式表示為inmiiXXKN.1第9頁/共93頁2022-7-610 Ki第i位的系數(shù),可以為 0,1,,(X-1)共X個數(shù)字符號中任一數(shù)字符號; m,n冪指數(shù)
8、,均為正整數(shù); Xi第i位的權。教科書的第1頁給出了計數(shù)制的標準定義。 第10頁/共93頁2022-7-611第11頁/共93頁2022-7-6121.1.2各種數(shù)制的相互轉換 1. 非十進制數(shù)轉換成十進制數(shù) 非十進制數(shù)轉換成十進制數(shù)比較簡單,可先將其按定義展開為多項式,再將系數(shù)及權均用十進制表示按十進制進行乘法與加法運算,所得結果即為該數(shù)對應的十進制數(shù)。 例1.1.1 將二進制數(shù) 1101.101 轉換為十進制數(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.6
9、25第12頁/共93頁2022-7-613 例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 = 011221110KXkXkXkXknnnninii第13頁/共93頁2022-7-614 顯然, 等式右邊,除了最后一項K0以外,其余各項都包含基數(shù)X的因子,都能被X除盡。 所以等式兩邊同除以基數(shù)X, 余數(shù)正是要求的X進
10、制數(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ù)的各位。第14頁/共93頁2022-7-615 這樣我們可以把十進制整數(shù)轉換為X進制整數(shù)的方法總結為用該數(shù)或商“除以基數(shù)取余數(shù),先為低位后為高位”。 例1.1.3 將十進制數(shù) 301 轉換為二進制數(shù)。 轉換過程如下:301/2=15
11、0k0=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 = 100101101B第15頁/共93頁2022-7-616 (2) 十進制小數(shù)轉換成非十進制小數(shù) 設N為任一十進制小數(shù), 若要把它轉換為m位X進制小數(shù),則N= =K-1X-1+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ù)部分為
12、K-2X-1+K-3X-2+K-mX-m+1若再將上式乘以X便得到 K-2+K-3X-1+K-mX-m+2imiiXk1第16頁/共93頁2022-7-617 K-2為整數(shù)部分,它正好是所要求的X進制小數(shù)的次高位。 如此繼續(xù)進行下去,直到小數(shù)部分為零時止。若乘積的小數(shù)部分始終不為 0,說明相對應的X進制小數(shù)為不盡小數(shù)。這時, 乘到能滿足計算機精度要求為止。 綜上所述,我們可以把十進制小數(shù)轉換為相應X進制小數(shù)的方法總線為對該小數(shù)或乘以X后新的小數(shù)部分“乘以基數(shù)取整數(shù),先為高位后為低位”。 例1.1.4 將 0.6875 分別轉換為二進制及十六進制小數(shù)。 轉換為二進制的過程如下: 0.68752=
13、1.375 K-1=1 0.3752=0.75 K-2=0第17頁/共93頁2022-7-618 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.468 K-1=1 0.4682=0.936 K-2=0第18頁/共93頁2022-7-619 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
14、 K-6=0 0.734=0.10110B 上面我們分別討論了十進制整數(shù)轉換為非十進制整數(shù)和十進制小數(shù)轉換為非十進制小數(shù)的方法。如果一個任意十進制數(shù)要轉換為非十進制數(shù), 我們可以把整數(shù)部分和小數(shù)部分分別加以轉換,然后把轉換后的整數(shù)部分和小數(shù)部分相加。第19頁/共93頁2022-7-620 例1.1.6 將十進制數(shù) 301.6875 分別轉換為二進制和十六進制數(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
15、3. 十六進制數(shù)與二進制數(shù)之間的轉換 由于 16=24, 故 1 位十六進制數(shù)相當于4 位二進制數(shù)。 這樣,十六進制數(shù)與二進制數(shù)之間的相互轉換是十分簡便的。第20頁/共93頁2022-7-621 二進制數(shù)轉換為十六進制數(shù)的方法是: 首先從小數(shù)點開始分別向左和向右把整數(shù)及小數(shù)部分每 4 位分成一組。 若整數(shù)最高位的一組不足 4 位,則在其左邊加 0 補足 4 位;若小數(shù)最低位的一組不足 4 位,則在其右邊加 0 補足 4 位。然后, 用與每組二進制數(shù)所對應的十六進制數(shù)取代每組的 4 位二進制數(shù),即得到對應的十六進制數(shù)。 例1.1.7 二進制數(shù) 1011101001.110101 轉換為十六進制數(shù)
16、的方法是: 二進制數(shù) 0010 1110 1001. 1101 0100十六進制數(shù) 2 E 9 . D 4第21頁/共93頁2022-7-622 十六進制數(shù)轉換為二進制數(shù)的方法是: 用相應的 4 位二進制數(shù)取代每 1 位十六進制數(shù)。 例1.1.8 十六進制數(shù) 5C7A.3B 轉換為二進制的方法是: 十六進制數(shù) 5 C 7 A . 3 B二進制數(shù) 0101 1100 0111 1010 . 0011 1011 5C7A.3BH=101110001111010.00111011B第22頁/共93頁2022-7-6231.1.3 二進制數(shù)的算術運算 二進制計數(shù)制不僅物理實現(xiàn)容易,而且運算方法也十進制
17、計數(shù)制大為簡單。注意到二進制數(shù)加法是“逢二進一”和減法是“借一作二”的特點,再根據(jù)十進制數(shù)算術運算的方法,很容易理解和完成二進制數(shù)的算術運算。例1.1.9 10110101B+1111B。加法過程如下: 被加數(shù) 10110101 加數(shù) 00001111 進位 + 111111 和 11000100第23頁/共93頁2022-7-624 10110101B+111B=11000100B 由此可見,兩個二進制數(shù)相加時,每 1 位有 3 個數(shù)(本位被加數(shù)和本位加數(shù)及低位來的進位)相加,得到本位的和及向高的進位。例1.1.10 11000100B-100101B。 減法過程如下: 被減數(shù) 110001
18、00 減數(shù) 00100101 借位 - 111111 差 1001111第24頁/共93頁2022-7-625 11000100B-100101B=1001111B 與加法相類似, 兩個二進制相減時,每 1 位有 3 個數(shù)(本位被減數(shù),減數(shù)以及從低位來的借位)參加運算, 本位被減數(shù)-本位減數(shù)-低位來的借位,即得到本位的差及向高位的借位。例1.1.11 1101B1011B。 乘法過程如下: 被乘數(shù) 1101 乘數(shù) 1011 1101 第25頁/共93頁2022-7-626 1101 0000+ 1101積 10001111 1101B1011B=10001111B 對筆算來說,上述乘法過程不但
19、是很清楚而且很方便, 但對計算機來說,實現(xiàn)起來很不方便。有的微型計算機有專門的乘法指令來完成乘法運算。對于沒有乘法指令的微型計算機,乘法是采用部分積右移的辦法編制乘法運算程序來實現(xiàn)的。第26頁/共93頁2022-7-627例1.1.12 100110B110B。除法過程如下: 0 0 0 1 1 0110100110 1 0 01 0 100110B110B=110B余10B 有的微型計算機有專門的除法指令來完成除法運算。 對于沒有除法指令的微型計算機,常用“相減-左移”法編制除法運算程序實現(xiàn)除法。第27頁/共93頁2022-7-6281.1.4二進制數(shù)的邏輯運算 二進制數(shù)的邏輯運算常用的有“
20、與”、 “或”、 “異或”及“非”運算等四種。在組成表達式時,可分別用符號“AND”、 “OR”、 “XOR”及“NOT”作為運算符,有時也用“”、 “”、 “”作為“與”、 “或”、 “異或”的運算符, 用數(shù)學上面加橫線“-”表示對該數(shù)進行非運算。二進制數(shù)的邏輯運算只按位進行運算。 1 位二進制數(shù)運算規(guī)則如下: “與”運算的規(guī)則為:第28頁/共93頁2022-7-6291 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=1第29頁/共93頁2022-7-630“異或”運算的規(guī)則為:0 XOR
21、 0=01 XOR 0=10 XOR 1=11 XOR 1=0“非”運算的規(guī)則為:NOT 0=1NOT 1=0 多位二進制數(shù)進行邏輯運算時, 可以利用二進制數(shù)運算規(guī)則按接進行運算。第30頁/共93頁2022-7-631 例1.1.13 二進制數(shù) 10010111 和 00111000 的“與”、“或”及“異或”。 運算結果分別為: 10010111 與)001110000001000010010111或)001110001011111110010111異或)00111000 10101111第31頁/共93頁2022-7-632 例1.1.14 二進制數(shù) 10010111 的“非”。 運算結果
22、為: 01101000注意: * 1個字節(jié)、2個字節(jié)表示的二進制整數(shù)范圍 * 簡便的二十進制數(shù)轉換方法第32頁/共93頁2022-7-6331.2 有符號二進制數(shù)的表示方法及溢出問題1.2.1 有符號二進制數(shù)的表示方法 前面我們接觸的二進制數(shù)均為無符號數(shù), 即所有二進制數(shù)位均為數(shù)值位,在很多數(shù)據(jù)處理過程中需要這樣看待某些數(shù)。然而實際的數(shù)值有時是帶有符號的,既可能是正數(shù), 也可能是負數(shù)。這樣就存在一個有符號二進制數(shù)的表示方法問題。 1. 數(shù)的符號表示方法 為了表示一個有符號數(shù),除了數(shù)值位以外還應指定符號位,通常以這個數(shù)的最高位為符號位。我們假設討論的數(shù)為整數(shù)。 第33頁/共93頁2022-7-6
23、34 對 8 位有符號二進制整數(shù),D7 為符號位,并規(guī)定D7 為 0 表示正數(shù)的符號“+”; 為 1 表示負數(shù)的符號“-”。因此,8位有符號數(shù)的編碼格式為:D7D6D5D4D3D2D1D0符號位 數(shù)值位 這樣,數(shù)的符號在機器中也數(shù)字化了,符號位的數(shù)值位一起完整地表示有符號二進制數(shù)。我們把一個數(shù)在機器中的表示形式稱為機器數(shù), 而把它們的實際數(shù)值稱為機器數(shù)的真值。第34頁/共93頁2022-7-635 2. 原碼表示法 如果正數(shù)的符號位用 0 表示,負數(shù)的符號位用 1 表示, 絕對值的編碼規(guī)則與前面討論的無符號數(shù)編碼規(guī)則相同。 這種表示方法稱為原碼表示法。 一個數(shù)X的原碼記作X原。 設X=Xn-2
24、 X n-3X0(即n-1 位二進制數(shù)),其中Xi為 1 位二進制數(shù),i=0,1,(n-2)。 則X原 =0 X n-2Xn-3X1X0 當X01 Xn-2Xn-3X1X0 當X0 例 1.2.1 X1=+1010101 則X1原=01010101 X2=-1011101 則X2原=11011101第35頁/共93頁2022-7-636 原碼表示的一個有趣情況是數(shù) 0 有兩種表示形式: +0原=00000000 或 -0原=10000000 8 位二進制原碼所能表示的數(shù)值范圍為-127+127。 原碼表示法簡單且易于理解,與真值轉換也方便,這是它的優(yōu)點。缺點是進行加減運算時麻煩。如果參加運算的
25、數(shù)可能為正,也可能為負,這時不僅要考慮運算是加還是減,而且還要考慮數(shù)的符號和數(shù)的絕對值大小。例如兩數(shù)相加時,要進行判斷: 如果兩數(shù)同號, 數(shù)值部分相加,符號不變;如果兩數(shù)異號,不僅數(shù)值部分實際相減, 而且還要比較兩數(shù)的絕對值大小,才能確定實際的被減數(shù)和減數(shù)。第36頁/共93頁2022-7-637 因此采用原碼表示后,將使運算器的邏輯復雜化或增加機器運行時間。為此,引入了補碼表示法,它可以使正、負數(shù)的加法和減法運算簡化為單一人相加運算。 3. 補碼表示法 (1) 補碼的概念 根據(jù)同余的概念 a+NK=a(mod K) 其中K為模,N為任意整數(shù)。就是說,在模的意義下,數(shù)a與該數(shù)本身加上其模的任意整
26、數(shù)倍之和相等。第37頁/共93頁2022-7-638 在數(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位的最高位產生了進位,就會丟掉。=第38頁/共93頁2022-7-639 這正是在模的意義下相加的概念。相加時丟掉的進位即等于模。所以,當n位表示整數(shù)時(1 位為符號位, n-1 位為數(shù)值位), 它的模為 2n
27、, 即:100 0 n個 0我們把X的補碼記為X補,補碼可定義為: X補 = X 當 0X2n-1 2n+X 當-2 n-1X0第39頁/共93頁2022-7-640 從定義式(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 =1010100
28、1B(mod 28)第40頁/共93頁2022-7-641 這種方法要做一次減法,很不方便,一般不用。 利用原碼求補碼 已知X = -Xn-2Xn-3X1X0 =iniiX 220X0則X原= 2n-1+Xn-2Xn-3X1X0由定義式(2 - 10)得: X補 = 2n+X = 2n-1+2n-1 -iniiX 2202n-1=1220iniiX第41頁/共93頁2022-7-642X補 =2n-1 + = 2n-1 =2n-11220iniiXiniiX 22012)1 (20iniiX1.0132XXXXnn符號位X原數(shù)值位按位取反 因此, 一個負數(shù)X的補碼等于其原碼除符號位保持不變外,
29、其余各位按位取反,再在最低位加 1。 例 1.2.3 X = -1010101B, 當n=8 時,則 X原 = 11010101B第42頁/共93頁2022-7-643 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原,可以表示為第43頁/共93頁2022-
30、7-644第44頁/共93頁2022-7-645 X補補= X原(證明從略) 例 1.2.4 X原=11010101B X補=10101011B 則 X補補=11010100B+1=11010101B= X原 因此,一個二進制補碼表示的數(shù),最高位為符號位,當符號位為“0”(即正數(shù))時,它的原碼同補碼。當符號位為1”(即負數(shù))時,對其補碼再求補,就可得到它的原碼。 (4) 補碼的運算規(guī)則 補碼運算的第一個基本公式是兩個n位二進制數(shù)之和的補碼等于該兩數(shù)的補碼之和(證明從略), 即第45頁/共93頁2022-7-646 X+Y補= X補+ Y補(mod 2n) (2-12) 該式(2 - 12)表明
31、, 當帶符號的兩個數(shù)采用補碼形式表示時,進行加法運算可以把符號位和數(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補第46頁/共93頁2022-7-64700100001B +33補 11011111B -33補
32、+ 11110001B -15補 +11110001B -15補 100010010B +18補 111010000B -48補進位,丟掉進位,丟掉 補碼運算的第二個基本公式是兩個n位二進制數(shù)之差的補碼等于該兩數(shù)的補碼之差(證明從略),即 X-Y補=X補- Y補(mod 2n) (2 - 13)該式(2 - 13)表明, 當帶符號的兩個數(shù)采用補碼形式表示時, 進行減法運算可以把符號位和數(shù)值位一起進行運算(若符號位有錯位,則丟掉),第47頁/共93頁2022-7-648 結果為兩數(shù)之差的補碼形式。 這是補碼表示法的一個優(yōu)點。 下面通過具體例子可以驗證該公式的正確性。 例 1.2.6 用補碼進行下
33、列運算:(+33)-(-15); (-33)-(-15); (+33)-(+15); (-33)-(+15)。00100001B +33補 11011111B -33補 -11110001B -15補 - 11110001B -15補 100110000B +48補 111101110B -18補借位,丟掉借位,丟掉第48頁/共93頁2022-7-64900100001B +33補 11011111B -33補 -00001111B +15補 -00001111B +15補 00010010B +18補 11010000B -48補 補碼減法運算時, 也可以利用加法基本公式。 因為 X-Y=X
34、+(-Y) X-Y補= X+(-Y)補= X補+ -Y補即 X-Y補= X補+ -Y補(mod 2n)JY (2 -14) 這是補碼運算的第三個基本公式。第49頁/共93頁2022-7-650 該式表明,求X-Y補可以用X補與-Y補相加來實現(xiàn)。 這里的-Y補,即對減數(shù)進行求負操作,也就是對補碼表示的數(shù)(無論是正數(shù)還是負數(shù))求得其相應的用補碼表示的負數(shù)(如果原來是正數(shù),求負后得負數(shù);原來是負數(shù), 求負后得正數(shù))。 一般稱已知Y補求得-Y補的過程叫變補或求負。 用補碼表示數(shù)時, 變補或求負是一種很有用的運算。 其規(guī)則是:如果已知 Y補= Yn-1Yn-2Y1Y0 那么對Y補的每一位(包括符號位)都
35、按位取反, 然后再加 1,結果即為-Y補。第50頁/共93頁2022-7-651 例 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)點。第51頁/共93頁2022-7-652 例 1.2.8 用補碼進行X-
36、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補= 00001111B第52頁/共93頁2022-7-653則 00100001B +33補 + 00001111B +15補00110000B +48補 若: X=-33, Y=-15 X補= 11011111B Y補= 11110001B -Y補= 00001111B則 1101111
37、1B -33補 +00001111B +15補 11101110B -18補第53頁/共93頁2022-7-654 若: X=-33, Y=15 X補= 11011111B Y補= 00001111B -Y補= 11110001B 則 11011111B -33補 +11110001B -15補 111010000B -48補 需要指出的是,一旦采用補碼進行加減運算, 所有參加運算的數(shù)和運算的結果都是用補碼表示的。計算機里的實際情況就是這樣的。要得到真值,還需轉換。第54頁/共93頁2022-7-655 在 1.1 節(jié)中, 我們已討論了無符號二進制數(shù)的加減運算規(guī)則。任意給定一個二進制數(shù),我們可
38、以把它看作有符號數(shù), 也可以看作無符號數(shù)。其差別是如何看待最高位,看作有符號數(shù)時, 最高位被看作符號位;看作無符號數(shù)時, 最高位也看作數(shù)值位(即沒有符號位)。對于兩個無符號二進制數(shù)的加減運算,利用前面說明的有符號數(shù)補碼表示法的加減運算規(guī)則得到的結果仍然是正確的。第55頁/共93頁2022-7-6561.2.2 有符號數(shù)運算的溢出問題 如果計算機的字長為n位, n位二進制數(shù)的最高位為符號位,其余n-1 位為數(shù)值位,采用補碼表示法時,可表示的數(shù)X的范圍為 -2n-1X2n-1-1 當n=8 時, 可表示的有符號數(shù)的范圍為-128+127; 當n=16 時,可表示的有符號數(shù)的范圍為-32768+32
39、767。 兩個有符號數(shù)進行加減運算時,如果運算結果超出可表示的有符號和的范圍時,就會發(fā)生溢出,使計算結果出錯。很顯然, 溢出只能出現(xiàn)在兩個同號數(shù)相加或兩個異號數(shù)相減的情況下。第56頁/共93頁2022-7-657 具體地講, 對于加運算, 如果次高位(數(shù)值部分最高位)形成進位加入最高位,而最高位(符號位)相加(包括次高位的進位)卻沒有進位輸出時;或者反過來,次高位沒有進位加入最高位,但最高位卻有進位輸出時,都將發(fā)生溢出。 因為這兩種情況分別是:兩正數(shù)相加,結果超出了范圍,形式上變成了負數(shù);兩負數(shù)相加,結果超出了范圍,形式上變成了正數(shù)。 01001000B +72 + 01100010B +98
40、 10101010B -86例 2.2.9 (+72)+(+98)有進位無進位溢出, 結果出錯第57頁/共93頁2022-7-658例1.2.10 (-83)+(-80)。 10101101B -83 +10110000B -80101011101B +93 無進位 有進位溢出, 結果出錯 對于減運算,當次高不需從最高位借位,但最高位卻需借位(正數(shù)減負數(shù),差超出范圍); 或者反過來,次高位需從最高位借位, 但最高位不需借位(負數(shù)減正數(shù),差超出范圍), 也會出現(xiàn)溢出。第58頁/共93頁2022-7-659 例1.2.11 (+72) - (-98)。 01001000B +72 -1001110
41、B -98 10101010B -86 無借位 有借位溢出, 結果出錯 例1.2.12 (-83) - (+80)。 10101101B -83 -01010000B +80 01011101B -93有借位無借位溢出, 結果出錯第59頁/共93頁2022-7-6601.3 定點數(shù)和浮點數(shù)1.3.1 定點法 所謂定點法, 即小數(shù)點在數(shù)中的位置是固定不變的。以定點法表示的實數(shù)稱作定點數(shù)。通常,定點表示也有兩種方法: 方法 1: 規(guī)定小數(shù)點固定在最高數(shù)值位之前,機器中能表示的所有數(shù)都是小數(shù)。n位數(shù)值部分所能表示的數(shù)N的范圍(原碼表示,下同)為 1-2-nN -(1-2-n)第60頁/共93頁202
42、2-7-661 它能表示的數(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ù)值位數(shù)值位小數(shù)點第61頁/共93頁2022-7-662 因為實際數(shù)值很少有都是小數(shù)或都是整數(shù)的,所以定點表示法要求程序員做的一件重要工作是為要計算的問題選擇“比例因子”。所有原始數(shù)據(jù)都要用比例因子化成小數(shù)或整數(shù), 計算結果又要用比例因子恢復實際值。在計算過程中,
43、 中間結果若超過最大絕對值,機器便產生溢出,叫做“上溢”, 這時必須重新調整比例因子。中間結果如果小于最小絕對值, 計算機只能把它當作 0 處理, 叫做“下溢”, 這時也必須重新調整比例因子。結于復雜計算,計算中間需多次調整比例因子。第62頁/共93頁2022-7-6631.3.2 浮點法 任意一個二進制數(shù)N總可以寫成下面的形式: N=d2p (2 - 16) 其中: d稱為尾數(shù), 是二進制純小數(shù), 指明數(shù)的全部有效數(shù)字。前面的符號稱作數(shù)符,表示數(shù)的符號,用尾數(shù)前的 1 位表示,0 表示正號,1 表示負號; p稱為階數(shù),它前面的符號稱作階符,用階碼前一位表示,階符為正時,用 0 表示, 階符為
44、負時,用 1表示。 由此可知, 將尾部d的小數(shù)點向右(對+p)或向左(對-p)移動p位,即得數(shù)值N。所以階符和階碼指明小數(shù)點的位置。小數(shù)點隨著p的符號和大小而浮動。這種數(shù)稱為浮點數(shù)。浮點數(shù)的編碼格式如下所示:第63頁/共93頁2022-7-664階符階碼數(shù)符尾數(shù)1位 M位 1位 n位 設階碼的位數(shù)為m位, 尾數(shù)的位數(shù)為n位, 則浮點數(shù)的取值范圍為 2-n2-(2m-1) |N| (1-2-n)2(2m-1)浮點數(shù)能表示的數(shù)值范圍大, 是它的主要可取之處。第64頁/共93頁2022-7-665 如果尾數(shù)的絕對值小于 1 且大于等于 0.5, 即采用原碼編碼的正數(shù)或負數(shù)和采用補碼編碼的正數(shù),其尾數(shù)
45、的最高位數(shù)字為 1;采用補碼編碼的負數(shù),其尾數(shù)的最高位數(shù)字為 0,則該浮點二進制數(shù)被稱為規(guī)格化浮點數(shù)。浮點運算后 經常要把結果規(guī)格化,規(guī)格化的操作是尾數(shù)每右移 1 位(相當于小數(shù)點左移 1 位),階碼加 1;尾數(shù)每左移 1 位,階碼減 1。 數(shù)的加減運算要求小數(shù)點對齊。 對于浮點表示的數(shù)而言, 就是階碼(包括階符)相等。第65頁/共93頁2022-7-666 使階碼相等的操作稱為對階。一個浮點數(shù)階碼的改變, 必須伴隨著尾數(shù)的移位,才不改變數(shù)的值,即階碼加 1,尾數(shù)必須右移 1 位; 若階碼減 1, 則要求尾數(shù)左移 1 位。兩個規(guī)格化的浮點數(shù)相加或相減之前必須對階。 對階的規(guī)則是: 將兩個數(shù)中階
46、碼小的數(shù)的尾數(shù)右移、階碼增大,直到與另一個數(shù)的階碼相等為止。 這樣操作是合理的,因為尾數(shù)右移,只可能丟失最低有效位, 造成誤差較小。第66頁/共93頁2022-7-6671.4 二進制編碼的十進制數(shù)(BCD編碼)1.4.1 8421BCD碼 如前所述,計算機中是使用二進制代碼工作的。 但是由于長期的習慣,在日常生活中,人們最熟悉的數(shù)制是十進制。 為解決這一矛盾, 提出了一人比較適合于十進制系統(tǒng)的二進制代碼的特殊形式,即將 1 位十進制的 09 這十個數(shù)字分別用 4 位二進制碼的組合來代表,在此基礎上,可按位對任意十進制數(shù)進行編碼。這就是二進制編碼的十進制數(shù),簡稱BCD碼(Binary-Codc
47、d Decimal)。第67頁/共93頁2022-7-668 4 位二進制數(shù)碼有 16 種組合,原則上可任選其中的 10 種作為代碼,分別代表十進制中 0 到 9 這 10 個數(shù)字。 為便于記憶和比較直觀,最常用的方法是 8421BCD碼, 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ù)第68頁/共93
48、頁2022-7-669第69頁/共93頁2022-7-670 (10000101.0101)BCD = 85.5 同一個 8 位二進制代碼表示的數(shù), 當認為它表示的是二進制數(shù)和認為它表示的是二進制編碼的十進制數(shù)時, 數(shù)值是不相同的。 例如 00011000 作為二進制數(shù)時,其值為 24;但作為 2 位BCD碼時,其值為 18。 在計算機中, BCD碼有兩種基本格式: 組合式BCD碼格式和分離式BCD碼格式。 在組合式BCD碼格式中,兩位BCD碼的十進制數(shù),存放在一個字節(jié)中(壓縮BCD碼)。 如數(shù) 82 存放格式為: 1000 0010 第70頁/共93頁2022-7-671 在分離BCD碼格式
49、中, 每位數(shù)存放在 8 位字節(jié)的低 4 位部分,高 4 位部分的內容與數(shù)值無關,如數(shù) 82 存放格式為: uuuu1000 uuuu0010 其中u表示任意。第71頁/共93頁2022-7-6721.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
50、的BCD碼第72頁/共93頁2022-7-673 對應十進制數(shù)為 81, 正確結果應為 87, 顯然結果是錯誤的。其原因是,十進制數(shù)相加應當是“逢十進一”,而計算機按二進制數(shù)運算, 每 4 位為一組, 低 4 位向高 4 位進位與十六進制數(shù)低位向高位的情況相當,是“逢十六進一”,所以當相加結果超過 9 時將比正確結果少 6。因此,結果出錯。解決的辦法是對二進制加法運算的結果采用“加 6 修正”,將二進制加法運算的結果修正為BCD碼加法運算的結果。兩個兩位BCD數(shù)相加時,對二進制加法運算結果修正的規(guī)則如下: (1) 如果任何兩個對應位BCD數(shù)相加的結果向高一位無進位時,若得到的結果小于或等于 9
51、,則該位不需修正;若得到的結果大小 9 且小于 16 位,則該位進行加 6 修正。第73頁/共93頁2022-7-674 (2) 如果任何兩個對應位BCD數(shù)相加的結果向高一位有進位時(即結果大于或等于 16),該位進行加 6 修正。 (3) 低位修正結果使高位大于 9 時, 高位進行加 6 修正。這種修正稱為BCD調整。 下面通過例題驗證上述規(guī)則的正確性。 2.4.3用BCD碼求 35+21。 0011 0101 35 +0010 0001 21 0101 0110 56第74頁/共93頁2022-7-675 低 4 位, 高 4 位均不滿足修正法則, 所以結果正確, 不需修正。 例 2.4.
52、4用BCD碼求 25+37。 0010 0101 25 +0011 0111 37 0101 1100 低 4 位滿足法則 1 +0000 0110 加 6 修正 0110 0010 62 結果正確 1第75頁/共93頁2022-7-676 例 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 第76頁/共93頁2022-7-677 1101
53、 0111 高 4 位滿足法則 1 +0110 0000 加 6 修正 10011 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結果正確 1第77頁/共93頁2022-7-678例 2.4.8用BCD碼求 94+7。 1001 0100 94 +0000 0111 7 1001 1011 低 4 位滿足法則 1 +0000 0110 加 6 修正 1010 0001 高 4 位滿足法則 3 +0110 0
54、000 加 6 修正 10000 0001 101 結果正確 第78頁/共93頁2022-7-679例 2.4.9用BCD碼求 76+45。 0111 0110 76 +0100 0101 45 1011 1011 低 4 位、 高 4 位均滿足法則 1 +0110 0110 同時加 6 修正 10010 0001 121 結果正確 1第79頁/共93頁2022-7-680 兩個BCD碼進行減法運算時, 當?shù)臀幌蚋呶挥薪栉粫r, 由于“借一作十六”與“借一作十”的差別, 將比正確結果多 6, 所以有借位時, 可采用“減 6 修正法”來修正。 實際上,計算機中有BCD調整指令, 兩個BCD碼進行加
55、減時, 先按二進制加減指令進行運算, 再對結果用BCD調整指令進行調整, 就可得到正確的十進制運算結果。 另外,BCD碼的加減運算,也可以在運算前由程序先變換成二進制,然后由計算機對二進制數(shù)運算處理,運算以后再將二進制數(shù)結果由程序轉換為BCD碼。第80頁/共93頁2022-7-6812.5 ASCII字符代碼 現(xiàn)代計算機使用各種程序設計語言, 任何語言都是由字母、數(shù)字和符號組成的。要輸入程序,計算機必須接受由字母、 數(shù)字和符號組成的信息;用戶在機器上操作時,總要輸入許多監(jiān)控程序或操作系統(tǒng)所能識別的各種命令, 命令也是由字母、數(shù)字和符號組成的。 計算機輸出也是這樣,把人們可以識別的字母、 數(shù)字和符號打印出來或顯示在屏幕上。 在計算機內, 任何信息都是用代碼表示的,字母、數(shù)字和符號(以后簡稱為字符)也是用代碼表示的。第81頁/共93頁2022-7-682 一般情況下,計算機依靠輸入設備把要輸入的字符編成一定格式的代碼,然后才能接收進來。輸出則是相反過程, 為了在輸出設備輸出字符,計算機要把相應的字符的編碼送到外部輸出設備。 目前國際上使用的字符編碼系統(tǒng)有許多種。在微型計算機中普遍采用的是美國國家信息交換標準字符碼。即ACSII碼(American Standard Code for Information
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技輔助醫(yī)療家屬如何利用科技幫助血液病患者
- 課題申報參考:老齡化與人口均衡發(fā)展研究
- 課題申報參考:空間耦合視角下城市藍綠景觀對居民情感的協(xié)同提升機制與調控對策
- 科技農業(yè)裝備升級與教育同步發(fā)展
- 小腸健康管理在醫(yī)療科技發(fā)展中的應用
- 教育行業(yè)多元化發(fā)展下的少兒英語培訓招生活動挑戰(zhàn)與機遇
- 2024年H-系列卷材涂料項目資金申請報告
- 小學科學項目式學習的教學策略研究
- 科技在改善孕婦生活質量中的應用研究
- XX國家生物產業(yè)基地生物醫(yī)藥企業(yè)加速器可行性研究報告
- 廣東省佛山市2025屆高三高中教學質量檢測 (一)化學試題(含答案)
- 人教版【初中數(shù)學】知識點總結-全面+九年級上冊數(shù)學全冊教案
- 2024-2025學年人教版七年級英語上冊各單元重點句子
- 2025新人教版英語七年級下單詞表
- 公司結算資金管理制度
- 2024年小學語文教師基本功測試卷(有答案)
- 未成年入職免責協(xié)議書
- 項目可行性研究報告評估咨詢管理服務方案1
- 5歲幼兒數(shù)學練習題
- 2024年全國體育單招英語考卷和答案
- 食品安全管理制度可打印【7】
評論
0/150
提交評論