




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第三篇 中央處理器(CPU)第第 6 6 章章 計算機的運算方法計算機的運算方法*一、數據的編碼與表示一、數據的編碼與表示*二、定點數的算術運算二、定點數的算術運算*三、浮點四則運算三、浮點四則運算*四、邏輯運算四、邏輯運算數據表示數據表示運算方法運算方法 一、數據的編碼與表示一、數據的編碼與表示數據數據邏輯數據邏輯數據檢錯糾錯碼檢錯糾錯碼字符字符字符串字符串漢字漢字數值數值文字、符號文字、符號語音語音圖形圖形圖像圖像各種進制各種進制BCD碼碼定點定點浮點浮點邏輯型數據邏輯型數據邏輯型數據只有兩個值:邏輯型數據只有兩個值:真和假真和假,正好可以用二進,正好可以用二進制碼的兩個符號分別表示,制碼
2、的兩個符號分別表示,例如例如 1 表示表示 真真 則則 0 表示表示 假假不必使用另外的編碼規(guī)則。不必使用另外的編碼規(guī)則。對邏輯型數據可以執(zhí)行邏輯的對邏輯型數據可以執(zhí)行邏輯的 與、或、非與、或、非等基本邏等基本邏輯運算。輯運算。字符型數據的表示字符型數據的表示 字符作為人字符作為人機聯(lián)系的媒介,指字母、數字、機聯(lián)系的媒介,指字母、數字、運算符等西文字信息。當前的西文字符集由運算符等西文字信息。當前的西文字符集由 128 個符號組成,通常用個符號組成,通常用 8 位二進制編碼,即位二進制編碼,即用一個用一個字節(jié)來表示每一個符號字節(jié)來表示每一個符號,當前較多通用的標準字,當前較多通用的標準字符集是
3、符集是ASCII 碼碼,ASCII碼字符集具體編碼如下表碼字符集具體編碼如下表所示:所示: ASCII字符編碼集字符編碼集 b6 b5 b4 000 001 010 011 100 101 110 111 b3 b2 b1 b0 0000 NUL DLE SP 0 P , p 0001 SOH DC1 ! 1 A Q a q 0010 STX DC2 “ 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN & 6 F V f v 0111 BE
4、L ETB 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K k 1100 FF FS , N n 1111 SI US / ? O _ o DELASCII碼碼的機內表示的機內表示 采用一個字節(jié)表示采用一個字節(jié)表示ASCII碼時,最高位的處碼時,最高位的處理方法:理方法:(1 1)最高位)最高位不用不用,即恒為,即恒為“0”0”;(2 2)最高位用于)最高位用于奇偶校驗位奇偶校驗位;(3 3)若采用擴展)若采用擴展ASCIIASCII碼方案時,最
5、高位也用來碼方案時,最高位也用來表示表示字符編碼字符編碼,此時,可表示,此時,可表示256256種符號。種符號。字符串的存放:字符串的存放: 字符串是指字符串是指連續(xù)連續(xù)的一串字符,它們占據主存的一串字符,它們占據主存中中連續(xù)連續(xù)的多個字節(jié),每個字節(jié)存放一個字符,對的多個字節(jié),每個字節(jié)存放一個字符,對一個主存字的多個字節(jié),有一個主存字的多個字節(jié),有按從低位到高位按從低位到高位字節(jié)字節(jié)次序存放的,也有按次序存放的,也有按從高位到低位從高位到低位字節(jié)次序存放字節(jié)次序存放的。例如:的。例如:IF AB THEN READ(C)就可以有如就可以有如下不同的存放方式:下不同的存放方式:字符串的表示與存儲
6、字符串的表示與存儲 I F A A F I B T T B 假定每個字假定每個字 H E N N E H 由由 4 個字節(jié)個字節(jié) R E A D D A E R 組成組成 ( C ) ) C (漢字的表示漢字的表示 在計算機中表示漢字通常涉及以下幾種漢字編碼:在計算機中表示漢字通常涉及以下幾種漢字編碼: (1)漢字輸入碼)漢字輸入碼 為直接使用西文標準鍵盤把漢字為直接使用西文標準鍵盤把漢字輸入輸入到計算到計算機而設計。機而設計。 (2)漢字機內碼)漢字機內碼 漢字信息在計算機內部存儲、處理和傳送所采漢字信息在計算機內部存儲、處理和傳送所采用的編碼。通常采用國標碼。用的編碼。通常采用國標碼。(3
7、)漢字字模碼)漢字字模碼 用于輸出設備用于輸出設備輸出輸出漢字而設計的字形編碼漢字而設計的字形編碼。 漢字的機內表示漢字的機內表示 通常用通常用兩個字節(jié)兩個字節(jié)表示一個漢字。表示一個漢字。漢字內碼的識別方法:漢字內碼的識別方法: (1 1)若將若將ASCIIASCII碼字節(jié)的高位設為碼字節(jié)的高位設為“0”0”,則漢字兩,則漢字兩 個字節(jié)的高位個字節(jié)的高位均為均為“1”1”; (2 2)若若ASCIIASCII碼字節(jié)最高位用于奇偶校驗碼或擴充碼,碼字節(jié)最高位用于奇偶校驗碼或擴充碼,則需要三個字節(jié)表示漢字,第一個字節(jié)作為漢字的則需要三個字節(jié)表示漢字,第一個字節(jié)作為漢字的標標識符識符。 幾種常用的數
8、制及其轉換幾種常用的數制及其轉換N進制數可用進制數可用表示;表示;溫故而知新:二進制、十進制、八進制、十六進溫故而知新:二進制、十進制、八進制、十六進制的表示方法及其相互轉換。制的表示方法及其相互轉換。 二二十進制編碼(十進制編碼(BCD編碼)編碼) BCD編碼,編碼,用用四位四位二進制表示一位十進制,有多二進制表示一位十進制,有多種方案,種方案,例如:例如: 84218421碼,碼,54215421碼,碼,24212421碼,余碼,余3 3碼,格雷碼。碼,格雷碼。又可區(qū)分為:又可區(qū)分為: 有權碼:有權碼:四個二進制位均有指定的位權。四個二進制位均有指定的位權。 無權碼:無權碼:二進制編碼各位
9、無指定的位權。二進制編碼各位無指定的位權。 有權碼有權碼 無權碼無權碼 0 0000 0000 0011 0000 1 0001 0001 0100 00012 0010 0010 0101 00113 0011 0011 0110 00104 0100 0100 0111 01105 0101 1011 1000 01116 0110 1100 1001 01017 0111 1101 1010 01008 1000 1110 1011 11009 1001 1111 1100 11018421余余3碼碼2421格雷碼格雷碼+ 0. 0 0 0 0 0 0 11 0 0 0 1 0 0. 1
10、1 0 0 0 1 0 0. 1 0 0 0 0 0 1+?思考:小數點位置不同,運算如何實現?思考:小數點位置不同,運算如何實現?手工運算:手工運算:.符號位符號位10.定點數運算中小數點的位置無關,小數點無需存放定點數運算中小數點的位置無關,小數點無需存放數值型數值型數據的機內表示形式數據的機內表示形式 隱藏隱藏定點小數定點小數: N = Nf . N1 N2 Nn定點整數定點整數: N = Nf N1 N2 Nn. 浮點數浮點數: N = jf j1 j2 . Jm ; Sf . S1 S2 . Sn 隱藏隱藏 隱藏隱藏定點小數定點小數表示表示: Xf X-1 X-2 X -n 特點:特
11、點:原碼原碼為符號位加數的為符號位加數的絕對值絕對值,0正正1負負 原碼零原碼零有兩個編碼,有兩個編碼,+0和和 -0編碼不同編碼不同 X 1 X=1+|X| -1 X 00 X 1定義: X原 =原碼原碼的定的定義義 實例:X1 = 0.10110 -0.10110 0.0000 X1原 = 0.10110 1.10110 0.0000 1.0000 n定義: X原 =定點整數定點整數表示表示: Xf Xn Xn-1 X 1 0,X 2n-X=2n+|X|0 X 2n-2n X 0 2n=1 0 0 0 實例:X1 = 10110 -10110 0 X1原 = 010110 110110 0
12、,0000 1,0000定點小數定點小數反碼的定義特點:負數特點:負數反碼反碼為符號位跟數每位的反,為符號位跟數每位的反,0正正1負負 反碼反碼零有兩個編碼,零有兩個編碼,+0 和和 - -0 的編碼不同的編碼不同 X (2-2-n)+X -1 X 0 0 X 1定義:X反 = 實例:X1 = 0.10110 -0.10110 0.0000 X1反 = 0.10110 1.01001 0.0000 1.1111 n+1定義: X反 =定點整數的定點整數的反碼反碼表示表示 0,X 2n+1-1+X0 X 2n-2n X 0 2n+1=1 0 0 0定點小數表示定點小數表示: Xf X-1 X-2
13、 X -n特點:特點: 補碼補碼最高一位為符號位,最高一位為符號位,0正正1負負 補碼表示補碼表示為模加上負數本身為模加上負數本身 補碼補碼零有唯一編碼,故補碼還可以表示零有唯一編碼,故補碼還可以表示 -1 補碼補碼能很好用于加減(乘除)運算能很好用于加減(乘除)運算補碼補碼的引入;鐘表;負數的正補數。的引入;鐘表;負數的正補數。實例:X1 = 0.10110 -0.10110 0.0000 -0.0000 -1.0000 X1補 = 0.10110 1.01010 0.0000 0.0000 1.0000n+1定義: X補 =定點整數表示定點整數表示: Xf Xn Xn-1 X 1 0,X
14、2n+1+X0 X 2n2n X 0 2n+1=1 0 0 0整數整數的原碼、反碼和補碼表示的原碼、反碼和補碼表示 與定點小數的三種表示基本相同,差別僅表現在與定點小數的三種表示基本相同,差別僅表現在小數點小數點的位置,整數的小數點在最低數值位的右側。的位置,整數的小數點在最低數值位的右側。 整數中用整數中用“,”隔開符號位與數值位。隔開符號位與數值位。 例如:五位整數的編碼:例如:五位整數的編碼: X1 = +01110 X1原原= 0,01110 X1反反= 0,01110 X1補補= 0,01110 X2 = - 01110 X2原原= 1,01110 X2反反= 1,10001 X2補
15、補= 1,10010原、反、補碼表示小結原、反、補碼表示小結正數的正數的 原碼、反碼、補碼表示原碼、反碼、補碼表示均相同均相同,符號位為,符號位為 0,數值位等,數值位等于數的于數的真值真值。零的原碼和反碼均有零的原碼和反碼均有2個個編碼,補碼只有編碼,補碼只有1個編碼個編碼負數的原碼、反碼、補碼表示負數的原碼、反碼、補碼表示均不同均不同, 符號位為符號位為 1,數值位:原碼為數的絕對值;,數值位:原碼為數的絕對值; 符號位為符號位為 1,數值位:反碼為每一位均取反碼;,數值位:反碼為每一位均取反碼; 符號位為符號位為 1,數值位:補碼為反碼再在最低位,數值位:補碼為反碼再在最低位+1; n+
16、1n+1位位移碼移碼:Xf XXf Xn n X Xn-1n-1 X X 1 1 1 無小數表示形式無小數表示形式2定義定義: X移移 = 2n+X -2n X = 1/r,稱滿足這種表示要求的浮點數為,稱滿足這種表示要求的浮點數為規(guī)格化表示規(guī)格化表示。 把不滿足這一表示要求的尾數,變成滿足這一要把不滿足這一表示要求的尾數,變成滿足這一要求的尾數的操作過程,叫作浮點數的求的尾數的操作過程,叫作浮點數的規(guī)格化處理規(guī)格化處理,通,通過過尾數移位和修改階碼尾數移位和修改階碼實現。實現。X = S rjX浮浮 = jf j1 j2 . Jm Sf S1 S2 . Sn規(guī)格化的浮點數尾數形式(以二進制數
17、為例):規(guī)格化的浮點數尾數形式(以二進制數為例):當尾數用原碼表示時,當尾數用原碼表示時, S原原 = 0.1xxx 或或1.1xxx當尾數用補碼表示時,當尾數用補碼表示時, S補補 = 0.1xxx 或或1.0 xxx例例1:判斷下列數的尾數表示是否為規(guī)格化的表示形判斷下列數的尾數表示是否為規(guī)格化的表示形式式-0.0111111 X原原=1.0111111-0.0111111 X補補=1.1000001 -0.1000000 X原原=1.1000000 -0.1000001 X補補=1.0111111 浮點數在計算機內的表示浮點數在計算機內的表示IEEE 標準:標準:階碼用移碼,基數為階碼用
18、移碼,基數為2;尾數用原;尾數用原碼碼X = S rj X 浮浮 = jf j1 j2 . Jm Sf S1 S2 . Sn定點數與浮點數的定點數與浮點數的比較比較:(1)數位相同時,浮點數比定點數表示范圍大得多;數位相同時,浮點數比定點數表示范圍大得多;(2)浮點數為規(guī)格化數時,精度遠比定點數高;浮點數為規(guī)格化數時,精度遠比定點數高;(3)浮點運算步驟比定點數多,速度比定點數低;浮點運算步驟比定點數多,速度比定點數低;(4)判斷溢出的方法不同。判斷溢出的方法不同。IEEE 754 IEEE 754 標準浮點數表示格式標準浮點數表示格式 X 浮浮 = Sf jf j1 j2 . Jm S1 S
19、2 . Sn符號位符號位Sf 階碼位階碼位 尾數數碼位尾數數碼位 總位數總位數 短浮點數短浮點數: 1 8 23 32長浮點數長浮點數: 1 11 52 64 臨時浮點數臨時浮點數: 1 15 64 80X = S rj 例例2:設浮點數字長設浮點數字長16位,其中階碼位,其中階碼5位(含位(含1位位階符),尾數階符),尾數11位(含位(含1位數符),將十進制數位數符),將十進制數+13/128寫成二進制定點數和浮點數,并分別寫寫成二進制定點數和浮點數,并分別寫出它在定點機和浮點機中的機器數形式。出它在定點機和浮點機中的機器數形式。例例3:將十進制數將十進制數-54表示成二進制定點數和浮點數,
20、表示成二進制定點數和浮點數,并寫出它在定點機和浮點機中的機器數形式。并寫出它在定點機和浮點機中的機器數形式。(其它要求同上例)(其它要求同上例)例例4:設浮點數字長設浮點數字長16位,其中階碼位,其中階碼5位(含位(含1位階位階符),尾數符),尾數11位(含位(含1位數符),寫出位數符),寫出-53/512對對應的浮點規(guī)格化數的原碼、補碼、反碼和階碼用應的浮點規(guī)格化數的原碼、補碼、反碼和階碼用移碼,尾數用補碼的形式。移碼,尾數用補碼的形式。 二、定點數的算術運算二、定點數的算術運算(1) 移位移位運算運算 (2) 補碼補碼 加減法運算加減法運算(3) 原碼原碼一位乘法運算一位乘法運算 原碼原碼
21、一位除法運算一位除法運算 補碼補碼一位乘法運算一位乘法運算 補碼補碼一位除法運算一位除法運算(4) 補碼補碼二位乘法運算二位乘法運算(5) 快速快速乘除法運算方法乘除法運算方法移位運算的實現移位運算的實現 移位運算移位運算,用于提高某些運算的速度或作為乘除法運算的,用于提高某些運算的速度或作為乘除法運算的子運算。分為算術移位和邏輯移位。子運算。分為算術移位和邏輯移位。 算術移位算術移位: : 對對有符號數有符號數進行的移位,進行的移位,小數點位置不變小數點位置不變。 規(guī)則規(guī)則: : (1) (1) 移位后移位后符號位符號位不變;不變; (2) (2) 不同碼制機器數移位后空位填補規(guī)則,如不同碼
22、制機器數移位后空位填補規(guī)則,如下表:下表:正數正數碼碼 制制原碼、補碼、反碼原碼、補碼、反碼原原 碼碼補補 碼碼反反 碼碼右移填補代碼右移填補代碼001 1負負數數左移填補代碼左移填補代碼0 0 0 1例例5 5:設機器數字長:設機器數字長8 8位(含一位符號位),位(含一位符號位),若若A=A=6262,寫出三種機器數左右移一位和,寫出三種機器數左右移一位和兩位后的表示形式以及相應的真值,并分兩位后的表示形式以及相應的真值,并分析結果的正確性。析結果的正確性。算術左右移規(guī)律總結: 對于正數,三種機器數移位后符號位均不變,左移時最高位丟1,結果出錯;右移時,最低位丟1,影響精度。 對于負數,三
23、種機器數移位后符號位均不變, 負數原碼,左移高位丟1,出錯,右移低位丟1,影響精度。 負數補碼,左移高位丟0,出錯,右移低位丟1,影響精度。負數反碼,左移高位丟0,出錯,右移低位丟0,影響精度。邏輯移位(無符號數的移位)邏輯移位(無符號數的移位)左移左移1位位右移右移1位位左移左移2位位右移右移2位位無符號數無符號數規(guī)律:規(guī)律:無符號數的左右移位,空出來的位都補無符號數的左右移位,空出來的位都補0.補碼加減法的實現(以定點小數為例)補碼加減法的實現(以定點小數為例)基本公式:基本公式:X Y補補 = X補補 Y補補 (mod 2)小數)小數 X Y補補 = X補補 Y補補 (mod 2n+1)
24、整數)整數特點特點:(1)符號位)符號位參與參與運算,結果符號位通過運算自動運算,結果符號位通過運算自動產生;產生;(2)運算實際上為)運算實際上為“模運算模運算”,因此,運算過程,因此,運算過程中可能產生中可能產生模溢出模溢出,丟掉模后,不影響運算結果。,丟掉模后,不影響運算結果。例例6:已知:已知A=0.1011,B=-0.0101.求求A+B補。補。例例7:已知:已知A=-1001,B=-0101.求求A+B補。補。例例8:設機器數字長:設機器數字長8位,其中位,其中1位為符號位,位為符號位,若若A=+15,B=+24,求,求A-B補,并還原成補,并還原成真值。真值。補碼加減法的溢出補碼
25、加減法的溢出溢出:溢出:運算結果超出數據的表示范圍。分為上溢和下運算結果超出數據的表示范圍。分為上溢和下溢(或稱溢(或稱正溢出和負溢出正溢出和負溢出)。)。例如:例如:X = +0.1011 Y = +0.1101 X補補 = 0.1011, Y補補 = 0.1101 X+Y補補 = X補補 + Y補補 = 0.1011 + 0.1101 = 1.0100 正溢出正溢出 溢出的后果是結果的最高數值位溢出的后果是結果的最高數值位侵入侵入符號位,使符號符號位,使符號位遭到破壞。在計算機中,溢出是作為位遭到破壞。在計算機中,溢出是作為出錯出錯處理的。處理的。補碼加減法的溢出判別補碼加減法的溢出判別溢
26、出判斷:兩種方法溢出判斷:兩種方法(1)一位)一位符號位判斷法:對于加法,只有符號位判斷法:對于加法,只有正加正(正溢出)正加正(正溢出)或負加負(負溢出)或負加負(負溢出)的情況可能產生溢出,判斷原則是:結果的情況可能產生溢出,判斷原則是:結果符號位與源操作數相同則不溢出,不相同則溢出,對于減法,符號位與源操作數相同則不溢出,不相同則溢出,對于減法,只有符號不同的倆數相減才可能溢出,若有溢出正減負為正溢只有符號不同的倆數相減才可能溢出,若有溢出正減負為正溢出,負減正為負溢出。出,負減正為負溢出。(2 2)兩位)兩位符號位判斷法:即符號位判斷法:即變形補碼法變形補碼法判別判別,結果的雙符號,結
27、果的雙符號位的值為位的值為 0101或或1010為溢出。為溢出。0101為正溢出,為正溢出,1010為負溢出,溢出時,為負溢出,溢出時,高位符號是高位符號是結果的正確符號。結果的正確符號。 例例9:設設A=-11/16,B=-7/16,求,求A+B補補,用一位符,用一位符號位判斷法判斷有無溢出,若有溢出,是什么溢出號位判斷法判斷有無溢出,若有溢出,是什么溢出類型?類型?例例10:試用:試用變形補碼法變形補碼法計算計算A+B并判斷有無溢出,并判斷有無溢出,并指出是什么溢出類型,設并指出是什么溢出類型,設A=+11/16,B=+7/16。例例11:試用:試用變形補碼法變形補碼法計算計算A+B并判斷
28、有無溢出,并判斷有無溢出,并指出什么溢出類型,設并指出什么溢出類型,設A=-11/16,B=-7/16。例例12:已知:已知X = +11/16 Y = +3/16 ,用,用雙符號位法雙符號位法判判斷斷X+Y補補有無溢出,若溢出,是什么類型的溢出。有無溢出,若溢出,是什么類型的溢出。例例13:已知:已知:X = 0.1011 Y = 0.0101 ,用,用雙符號位法雙符號位法判斷判斷X+Y補補有無溢出,若溢出,是什么類型的溢出。有無溢出,若溢出,是什么類型的溢出。 原碼一位乘運算原碼一位乘運算基本公式:基本公式: 設設 被乘數被乘數 X原原 = xf . x1 x2 x n 乘乘 數數 Y原原
29、 = yf . y1 y2 y n 則則 X Y原原 =( xf yf ). ( |X| |Y| ) 其中,其中, |X X|和和|Y Y|分別是分別是X X和和Y Y的絕對值的絕對值引例:引例: X = 0.1101 Y = - 0.1011 X原原= 0.1101 Y原原 = 1.1011 |X|= 0.1101 |Y| = 0.1011 0. 1 1 0 1 . 累加器初值取零值累加器初值取零值 0. 1 0 1 1 + . 1 1 0 1 1 1 0 1 . 部分積部分積右右移移1位位 , 0 0 0 0 將移出的將移出的1保存起來保存起來 +1 1 0 1 求第一次部分積求第一次部分
30、積 0 . 1 0 0 0 1 1 1 1 手工運算過程手工運算過程 原碼一位乘運算原碼一位乘運算原碼一位乘運算原碼一位乘運算 |X|= 0.1101 |Y|= 0.1011 0. 1 1 0 1 . 1 0. 1 0 1 1 + . 1 1 0 1 1. 前次部分積加被乘數前次部分積加被乘數 1 1 0 1 . 部分積右移部分積右移 0 0 0 0將移出的一位保存起來將移出的一位保存起來 + 1 1 0 1 求第二次部分積求第二次部分積 0 . 1 0 0 0 1 1 1 1 手工運算過程手工運算過程 (筆算)(筆算) 原碼一位乘運算原碼一位乘運算 |X| = 0.1101 |Y| = 0.
31、1011 0. 1 1 0 1 . 1 1 0. 1 0 1 1 + . 1 1 0 1 . 前次部分積加前次部分積加 1 1 0 1 .部分積右移部分積右移 0 0 0 0將移出的一位保存起來將移出的一位保存起來 + 1 1 0 1 求第三次部分積求第三次部分積 0 . 1 0 0 0 1 1 1 1 手工運算過程(筆算)手工運算過程(筆算) 原碼一位乘運算原碼一位乘運算 X* = 0.1101 Y* = 0.1011 0. 1 1 0 1 . 0. 1 0 1 1 + . 1 1 0 1 1.前次部分積加被乘數前次部分積加被乘數 1 1 0 1 .部分積右移部分積右移 0 0 0 0將移出
32、的一位保存起來將移出的一位保存起來 + 1 1 0 1 求第四次部分積求第四次部分積 0 . 1 0 0 0 1 1 1 1 手工運算過程手工運算過程 乘數有乘數有四四位有效數位,所以共完成位有效數位,所以共完成四四次加法次加法和和四四次右移,再用一步完成兩數符號次右移,再用一步完成兩數符號異或異或求求積的符號積的符號, 結果為結果為 -0.10001111。原碼一位乘運算規(guī)則原碼一位乘運算規(guī)則原碼一位乘運算規(guī)則:原碼一位乘運算規(guī)則: 1. 1. 乘積的乘積的符號位符號位由兩數符號位由兩數符號位“異或異或”產生,符產生,符號位不參與運算;號位不參與運算; 2. 2. 部分積可采用一位或兩位符號
33、位;部分積可采用一位或兩位符號位; 3. 3. 乘積的數值部分由兩數絕對值相乘積的數值部分由兩數絕對值相乘乘產生,產生,通過通過n n次次“加法加法”和和n n次次“右移右移”操作實現操作實現。(n(n為乘數的有為乘數的有效數字的位數效數字的位數) )原碼一位乘運算實例原碼一位乘運算實例 部分積部分積 乘數乘數 0. 0 0 0 0 0.1 0 1 1+ 0. 1 1 0 1 0. 1 1 0 1 0. 0 1 1 0 1 0 1 0 1+ 0. 1 1 0 1 1. 0 0 1 1 0. 1 0 0 1 1 1 0 1 0 0. 0 1 0 0 1 1 1 0 1+ 0. 1 1 0 1 1
34、. 0 0 0 1 0. 1 0 0 0 1 1 1 1 0 0. 1 1 0 1 0. 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 + 1 1 0 10 . 1 0 0 0 1 1 1 1例例14: X = -0.1101 Y = - 0.1011 手工運算過程手工運算過程計算機內運算的實現方法計算機內運算的實現方法則則 X* = 0.1101 Y* = 0.1011 X原原 = 1.1101 Y原原 = 1.1011 X Y原原 = 0.10001111例例15:已知:已知 X = -0.1110 Y = - 0.1101,用原碼一,用原碼一位乘實現位乘實現 X*Y原原
35、。原碼兩位乘(選講)原碼兩位乘(選講)兩位乘數的值可以有四種可能組合,每種組合對應的操作:00 相當于0*X,部分積右移2位,不進行其它運算;01 相當于1*X,部分積加1X后右移2位;10 相當于2*X,部分積加 2X后右移2位;11 相當于3*X,部分積加3X后右移2位。原碼兩位乘運算規(guī)則(部分積用三位符號位):例16:設X = 0.111111 ,Y = -0.111001,用原碼兩位乘求X*Y原。例17:設X = 0.100111, Y = 0.100111,用原碼兩位乘求X*Y原。補碼乘法運算補碼乘法運算 原碼乘法不難實現,但有原碼乘法不難實現,但有兩個問題兩個問題: 1. 符號位與
36、數值位分開處理,不方便;符號位與數值位分開處理,不方便; 2. 若數據為補碼形式,可能需要多于兩次若數據為補碼形式,可能需要多于兩次 補碼補碼到到原碼的變換。原碼的變換。 也可以直接用也可以直接用補碼補碼完成乘法運算,即從補碼開始,完成乘法運算,即從補碼開始,直接得到補碼的積。直接得到補碼的積。補碼一位乘法運算的補碼一位乘法運算的算法規(guī)則算法規(guī)則補碼一位乘算法規(guī)則:補碼一位乘算法規(guī)則:1.1. X X、Y Y的符號位都參加運算,部分積采用的符號位都參加運算,部分積采用雙雙符號位;符號位;2.2.被乘數符號任意,乘數符號為被乘數符號任意,乘數符號為正正,按,按原碼原碼運算規(guī)則運運算規(guī)則運算。算。
37、3.3.被乘數符號任意,乘數符號為被乘數符號任意,乘數符號為負負,乘數補碼,乘數補碼去掉符號去掉符號位位與被乘數相乘,最后與被乘數相乘,最后加上加上-X X 補補進行校正。進行校正。4.4.進行進行n n次加運算,次加運算,n n次右移,次右移,積的符號位積的符號位由運算過程自由運算過程自動產生,這點與原碼運算不同。動產生,這點與原碼運算不同。5.被乘數和乘數符號均為任意,用比較法(Booth算法)。(1 1)X X、Y Y的符號位都參加運算,部分積采用雙符號位;的符號位都參加運算,部分積采用雙符號位;(2 2)乘數最低位之后增加一位附加位)乘數最低位之后增加一位附加位yn+1 ,且令初值且令
38、初值yn+1=0;(3 3)每位部分積運算規(guī)則如下:每位部分積運算規(guī)則如下:yn yn+1= 00 時,時, 部分積加零,再右移部分積加零,再右移1位位;yn yn+1= 01 時,時, 部分積加部分積加 X補,補, 再再右移右移1位位;yn yn+1= 10 時,時, 部分積加部分積加 -X補,補, 再再右移右移1位位;yn yn+1= 11 時,時, 部分積加零,再右移部分積加零,再右移1位;位;(4 4)進行進行n+1n+1次加法,次加法,n n次右移,次右移,積的符號由運算過程自動產生。積的符號由運算過程自動產生。例18:已知X補=1.0101,Y補=0.1101,用補碼一位乘求X*Y
39、補。例19:已知X補=0.1101,Y補=1.0101,用補碼一位乘求X*Y補。例20:已知X補=1.1101,Y補=0.1101,用補碼一位乘求X*Y補。例21:已知X補=0.0111,Y補=1.1001,用補碼一位乘求X*Y補。補碼一位乘法運算實例(比較法)補碼一位乘法運算實例(比較法)已知已知: X補補 = 0.1101 Y補補 = 0.1011 部分積部分積 乘數乘數 yn yn+1 0 0. 0 0 0 0 0.1 0 1 1 0+1 1. 0 0 1 1 1 1. 1 0 0 1 1 0 1 0 1 1 1 1. 1 1 0 0 1 1 0 1 0 1+0 0. 1 1 0 1 0
40、 0. 1 0 0 1 0 0. 0 1 0 0 1 1 1 0 1 0+1 1. 0 0 1 1 1 1. 0 1 1 1 1 1. 1 0 1 1 1 1 1 1 0 1+0 0. 1 1 0 1 0 0. 1 0 0 0 1 1 1 1 則則 -X補補 = 1.0011 X*Y補補 = 0.10001111 例22:X補補 = 1.0101 Y補補 = 1.0011,用比較法求,用比較法求X*Y補補 例23:X補補 = 1.1101 Y補補 = 0.0111,用比較法求,用比較法求X*Y補補 原碼原碼除法除法(以定點小數為例以定點小數為例) 基本公式:基本公式: 設設 被除數被除數 X原
41、原 = xf . x1 x2 x n 除除 數數 Y原原 = yf . y1 y2 y n 則則: : 若若 0 X Y X Y原原 =( xf yf ). ( X* Y* ) 其中,其中, X* 和和Y*分別是分別是X和和Y的絕對值的絕對值例如:例如: X = 0.1011 Y = - 0.1101 筆算除法過程筆算除法過程 0.1101 0.1101 0.10110 -0.01101 0.010010 -0.001101 0.0001010 0.00010100 -0.00001101 0.00000111原碼除運算方法分析原碼除運算方法分析(以定點小數為例以定點小數為例)機器實現問題:機
42、器實現問題: 1. 需單獨設計比較器線路;需單獨設計比較器線路; 2. 需需2n位的減法器線路。位的減法器線路。 解決方案:解決方案: 1. 比較比較操作改由操作改由“試減試減”實現;實現;2. 將除數右移改為將除數右移改為部分余數左移部分余數左移; 3. 減法由減法由+-Y補補轉化為加法實現。轉化為加法實現。原碼恢復余數除法的算法規(guī)則原碼恢復余數除法的算法規(guī)則1.1.除法運算前,應滿足條件:除法運算前,應滿足條件:X X* *YY* *, ,且且Y Y* *00, ,否則,按溢出否則,按溢出或非法除數處理;或非法除數處理;2.2.符號位不參與運算符號位不參與運算,單獨處理:,單獨處理:q q
43、f f= x= xf f y yf f ; ;3.3.部分余數采用部分余數采用單符號位或雙符號位單符號位或雙符號位;4.4.每步部分余數運算規(guī)則:每步部分余數運算規(guī)則: 5.5.共需經過共需經過n+1n+1次取商和次取商和n n次部分余數的左移實現。次部分余數的左移實現。余數為正,商上余數為正,商上1 1,余數和商左移一位余數和商左移一位,減除數;,減除數;余數為負,商上余數為負,商上0 0,需通過,需通過加除數來加除數來恢復余數,恢復余數,余數余數左移一位減除數,商左移一位。左移一位減除數,商左移一位。 被除數(余數)被除數(余數) 商商 說說 明明 0. 1 0 1 1 0. 0 0 0
44、0+ 1. 0 0 1 1 + -Y *補補 (減除數(減除數) 1. 1 1 1 0 余數余數 0, 商上商上1 1. 0 0 1 0 0 0 0 0 1 左移一位左移一位+ 1. 0 0 1 1 + -Y *補補 0. 0 1 0 1 余數余數 0, 商上商上1 0. 1 0 1 0 0 0 0 1 1 左移一位左移一位+ 1. 0 0 1 1 + -Y *補補 1. 1 1 0 1 余數余數 0, 商上商上1例如:例如: X = -0.1011 Y = - 0.1101 X原原= 1.1011 Y原原= 1.1101 X* = 0.1011 Y* = 0.1101-Y*補補 = 1.00
45、11恢復余數法恢復余數法X/Y原原=0.1101R原原=0.01112 2- -4 4例例24: 假如假如X = -0.1001 Y = - 0.1101 ,用原碼,用原碼的恢復余數法計算的恢復余數法計算X/Y原原原碼加減交替除法算法規(guī)則原碼加減交替除法算法規(guī)則1.1.除法運算前,應滿足條件:除法運算前,應滿足條件:X X* *YY* *, ,且且Y Y* *00, ,否則,按溢否則,按溢出或非法除數處理;出或非法除數處理;2.2.符號位不參與運算符號位不參與運算,單獨處理:,單獨處理:q qf f= x= xf f y yf f ; ;3.3.部分余數采用部分余數采用單符號位或雙符號位單符號
46、位或雙符號位;4.4.每步部分余數運算規(guī)則:每步部分余數運算規(guī)則: 余數為正,商上余數為正,商上1 1,余數左移一位余數左移一位,減除數;,減除數;余數為負,商上余數為負,商上0 0,余數左移一位余數左移一位,加除數;,加除數;5.5.共需經過共需經過n+1n+1次取商和次取商和n n次部分余數的左移實現(次部分余數的左移實現(n n為除數為除數的有效位數)。的有效位數)。 被除數(余數)被除數(余數) 商商 說說 明明 0. 1 0 1 1 0. 0 0 0 0 試減試減+ 1. 0 0 1 1 + -Y *補補 (減除數減除數) 1. 1 1 1 0 余數余數 0, 商上商上1 1. 0
47、0 1 0 0 0 0 0 1 左移一位左移一位+ 1. 0 0 1 1 + -Y *補補 0. 0 1 0 1 余數余數 0, 商上商上1 0. 1 0 1 0 0 0 0 1 1 左移一位左移一位+ 1. 0 0 1 1 + -Y *補補 1. 1 1 0 1 余數余數 0, 商上商上1 例如:例如: X = -0.1011 Y = - 0.1101 X原原= 1.1011 Y原原= 1.1101 X* = 0.1011 Y* = 0.1101-Y*補補 = 1.0011加減交替加減交替 除除 法法X/Y原原= 0.1101R = 0.0111 2 2- -4 4例例25: 假如假如X =
48、 -0.1001 Y = - 0.1101 ,用原碼,用原碼的加減交替法計算的加減交替法計算X/Y原原補碼除法(加減交替法)補碼除法(加減交替法) 運算規(guī)則 符號位參加運算,除數和被除數均用補碼表示; 第一步的運算 被除數與除數同號,被除數減去除數,加-y補; 被除數與除數異號,被除數加上除數,加y補; 后續(xù)步驟的運算 余數與除數同號,商上1,余數左移一位減去除數; 余數與除數異號,商上0,余數左移一位加上除數。 重復步驟 ,共做n次部分余數左移,n次加法,n+1次取商,最后一位商恒置1,不用求。如果對商的精度沒有特殊要求,一般可采用“末位恒置1”法,此法操作簡單,易于實現 。2022年5月1
49、7日星期二81例26.設 x = 0.1011,y = 0.1101,求 并還原真值。 補補xyx補補 = 1.0101y補補 = 0.1101 y補補 = 1.00111 . 0 1 0 10 . 1 1 0 11 . 0 0 1 10 . 1 1 0 10 . 1 1 0 10 . 0 0 0 0異號做加法異號做加法10 . 0 0 1 0同號上同號上“1”1 . 0 1 1 11 異號上異號上“0”+y補補1 . 1 0 1 11 0 異號上異號上“0”+y補補0 . 0 0 1 11 0 0同號上同號上“1”0 . 0 1 0 0110 . 1 1 1 01 011 . 0 1 1 0
50、1 0 01末位恒置末位恒置“1”0 . 0 1 1 01 0 0 1 1 補補= 1.0011xy0011+y補補xy= 0.1101則則被除數被除數(余數余數) 商商 說說 明明例27:已知x=0.1001,y=0.1101,用補碼加減交替法求x/y補。例28:已知x=-0.1001,y=0.1101,用補碼加減交替法求x/y補。三、浮點數的運算三、浮點數的運算浮點數加減運算浮點數加減運算 由對階、由對階、 尾數加減、尾數加減、 規(guī)格化、規(guī)格化、 舍入和結果判溢出舍入和結果判溢出五步五步實現。實現。浮點數乘除運算浮點數乘除運算 由階碼加減由階碼加減 、尾數乘除、規(guī)格化、舍入和結果判、尾數乘
51、除、規(guī)格化、舍入和結果判溢出溢出五步五步實現。實現。浮點數加減運算浮點數加減運算 運算步驟:運算步驟: (1)對階操作,求階差:)對階操作,求階差: j= jX - jY, 使階碼小的數的尾數右移使階碼小的數的尾數右移j位,位, 其階碼取大的階碼值;其階碼取大的階碼值;即小階向大階看齊。即小階向大階看齊。 (2)尾數相加減;)尾數相加減;jXX = SX 2 jYY = SY 2 求:求: XY = ?已知:已知: (3)規(guī)格化處理,當尾數出現)規(guī)格化處理,當尾數出現00.0或或11.1的組合時,需的組合時,需左規(guī);當尾數出現左規(guī);當尾數出現01.X或或10.X的組合時,需右規(guī);的組合時,需右
52、規(guī); (4)舍入操作,分為零舍一入法和末位恒置一法;)舍入操作,分為零舍一入法和末位恒置一法; (5)判結果的正確性,即檢查階碼,結果)判結果的正確性,即檢查階碼,結果j補補=01為上為上溢(出錯),結果溢(出錯),結果 j補補=10,為下溢,當機器零處理,為下溢,當機器零處理 。浮點數加運算浮點數加運算舉例舉例 已知:已知:X= 2010 0.11011011, Y= 2100 (-0.10101100),浮點數,浮點數階階碼用碼用 5 位補碼(含位補碼(含2位符號位位符號位 )表示,)表示, 尾數用尾數用 10 位補碼(含位補碼(含2位位符號位符號位 )表示,)表示,求:求: Z1 = X
53、+Y = ? 解:首先,寫出浮點數解:首先,寫出浮點數X、Y的正確的補碼表示:的正確的補碼表示: 階碼用階碼用 5 位補碼位補碼 (含(含2位符號位位符號位 ),),尾數用尾數用 10 位補碼(含位補碼(含2位符號位位符號位 ) X浮浮 = 00, 010; 00.11011011 Y浮浮 = 00, 100; 11.01010100浮點數加運算舉例浮點數加運算舉例 (1)對階)對階 j 補補= jX 補補+-jY 補補= 00, 010 + 11, 100 = 11, 110 j = -2 0, 即即jX jY 因此,修改因此,修改 MX補補 = =00.00110110(即右移(即右移2
54、2位)位) jx補補= 00, 100 (2)尾數求和差)尾數求和差 00. 00110110 + 11. 01010100 11. 10001010 (3)規(guī)格化處理)規(guī)格化處理 規(guī)格化處理,當尾數出現規(guī)格化處理,當尾數出現00.0或或11.1的組合時,的組合時,需左規(guī),階碼減一;當尾數出現需左規(guī),階碼減一;當尾數出現01.X或或10.X的組合時,的組合時,需右規(guī),階碼加一;需右規(guī),階碼加一; 本例尾數為本例尾數為11.1X,應執(zhí)行一次左規(guī)操作,故得,應執(zhí)行一次左規(guī)操作,故得 Sz1補補 = 11. 00010100, jZ1補補 = 00, 011 (4)舍入處理)舍入處理 舍入舍入按照一
55、定規(guī)則舍去多余的位數,并對保留位進行按照一定規(guī)則舍去多余的位數,并對保留位進行調整的過程。調整的過程。主要方法:主要方法: 末位恒置末位恒置1 1法:法:在舍去尾數在舍去尾數最低位之后數值最低位之后數值的同時,將尾的同時,將尾數末位置數末位置1。 0 0舍舍1 1入法:入法: 當尾數用原碼表示,或用補碼表示的正數時當尾數用原碼表示,或用補碼表示的正數時, 若移出部分的最高位為若移出部分的最高位為0 0,舍去;,舍去; 若移出部分的最高位為若移出部分的最高位為1 1,在舍去時,將尾數末位,在舍去時,將尾數末位+1+1。 當尾數用補碼表示的負數時當尾數用補碼表示的負數時, 若移出各位全為若移出各位
56、全為0 0,舍去;,舍去; 若移出部分的最高位為若移出部分的最高位為0,0,其余各位不全為其余各位不全為0 0,舍去;,舍去; 若移出部分的最高位為若移出部分的最高位為1,1,其余各位全為其余各位全為0 0,舍去;,舍去; 若移出部分的最高位為若移出部分的最高位為1,1,其余各位不全為其余各位不全為0 0,末位,末位+1+1。 (5)檢查溢出)檢查溢出 浮點溢出用浮點溢出用階碼溢出階碼溢出表示。表示。 溢出有兩種情況:溢出有兩種情況: 階符為階符為10,階碼下溢:用機器零表示;,階碼下溢:用機器零表示; 階符為階符為01,階碼上溢:,階碼上溢:置溢出標志,轉溢出處理。置溢出標志,轉溢出處理。
57、本例中的階碼不溢出。本例中的階碼不溢出。則得則得 Z1浮浮= 00, 011; 11. 00010101(末位恒置一末位恒置一), 即即 Z1 =2011 (-0.11101011) 例例29:已知兩浮點數:已知兩浮點數X=0.1101210,Y=0.1011201, 求求X+Y。例例30:設:設X=2-101(-0.101000),Y=2-100(+0.111011),階階符取符取2位,階碼的數值部分取位,階碼的數值部分取3位,數符取位,數符取2位,尾數位,尾數的數值部分取的數值部分取6位,求位,求X-Y。浮點數乘除運算浮點數乘除運算 運算步驟:運算步驟: (1) 階碼加、減:階碼加、減:乘
58、:乘:jX+jY ,除:除:jX- jY (2) 尾數乘、除:尾數乘、除:乘:乘:SX SY , 除:除:SX / SY (3) 規(guī)格化處理;規(guī)格化處理; (4) 舍入操作;舍入操作; (5) 判結果的正確性,即檢查階碼溢出。判結果的正確性,即檢查階碼溢出。jXX = SX 2 jYY = SY 2 求:求: X * Y = ? 或或 X / Y = ?已知:已知: 浮點數乘法運算舉例浮點數乘法運算舉例已知:已知: X=2010 0.1011, Y=2100 (-0.1101) 求:求: Z = X Y = ?寫出寫出X、Y的正確的浮點數表示:的正確的浮點數表示: 階碼用階碼用 5 位補位補碼碼(含(含2位符號位位符號位 ) 尾數用尾數用 5 位補碼位補碼 (含(含1位符號位位符號位 ) X浮浮 = 00, 010; 0.1011 Y浮浮 = 00, 100; 1. 0011(1)階碼相加)階碼相加 若階碼采用補碼,則按補碼加法規(guī)則進行。若階碼采用補碼,則按補碼加法規(guī)則進行。 jX 補補+jY 補補=00,010+00,100=00,110 (2 2)尾數相乘)尾數相乘( (比較法比較法) ) Sz補補 = Sx補補 Sy補補 = 11.01110001 Sz原原=1.10001111(3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 太原城市職業(yè)技術學院《基礎食品化學》2023-2024學年第一學期期末試卷
- 2025年南通行政面試題及答案
- 2025年漫畫變臉面試題及答案
- 2025年大一心理課試題及答案
- 消毒柜操作規(guī)程
- 2025年美甲店面試測試題及答案
- 2025年梯級教師理論考試題及答案
- 2025年經典燈泡測試試題及答案
- 2025年旅游社筆試試題及答案
- 2025年中醫(yī)飲片考試試題及答案
- 鐵路信號基礎(第四版) 課件全套 林瑜筠 第1-6章 信號繼電器 -鐵路信號系統(tǒng)概述
- 2025年度住宅小區(qū)水電改造與維修一體化服務合同4篇
- 中學生保護眼睛預防近視
- 古往今來數學家的奇聞軼事
- 藝術創(chuàng)新的思維技巧
- 部隊保密安全課件
- 陜西省西安市鐵一中2025屆高三下學期聯(lián)合考試數學試題含解析
- 教師資格考試高級中學信息技術學科知識與教學能力試題及解答參考(2024年)
- 腹膜透析操作流程及評分標準
- 開封市第一屆職業(yè)技能大賽美容項目技術文件(世賽項目)
- 醫(yī)院窗簾、隔簾采購 投標方案(技術方案)
評論
0/150
提交評論