計算機組成原理:第二章運算方法與運算器1_第1頁
計算機組成原理:第二章運算方法與運算器1_第2頁
計算機組成原理:第二章運算方法與運算器1_第3頁
計算機組成原理:第二章運算方法與運算器1_第4頁
計算機組成原理:第二章運算方法與運算器1_第5頁
已閱讀5頁,還剩125頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第二章 運算方法和運算器計算機組成原理本章首先講述計算機中數據與文字的表示方法然后講述定點運算方法、定點運算器的組成,最后講述浮點運算方法、浮點運算器的組成。重點掌握和了解 二進數的表示和數的范圍IEEE754 標準定點數的加減乘除法運算規格化浮點數的四則運算陣列乘除法器本 章 主 要 內 容2.1 數據與文字的表示方法2.1 數據與文字的表示方法數據信息控制信息非數值型數據指令信息等 一、數值型數據的表示方法 數值型數據的三個要素: 符號,數碼,小數點數值型數據2.1 數據與文字的表示方法(一) 符號的表示方法 -符號數碼化:0-正數;1-負數 -放在最前面 -機器數:符號數碼化的數 -無符

2、號化,或用ASCII碼(二) 數碼部分的表示 由10個阿拉伯的數字構成 1。編碼:BCD碼,ASCII碼2.1 數據與文字的表示方法1。編碼:BCD碼,ASCII碼 0000-0;0001-1;0010-2 0011-3;0100-4;0101-5 0110-6;0111-7;1000-8 1001-9 0011000 0-0 。 00111001-9轉換簡單,編碼效率低,運算器復雜2.1 數據與文字的表示方法2。采用二進制數表示*日常生活中,我們采用10進制數 十進制數:10個符號,逢十進一,權10i*計算機中只有兩個符號可用-二進制數1)進位計數制 r進制數:用r個符號的組合表示數碼部分,

3、并且每個位置上的權為ri,計數時逢r進位的計數制。2.1 數據與文字的表示方法r進制數的表示方法:(Pn-1Pn-2PiP2P1P0.P-1P-2.P-m)r = Pn-1rn-1+Pn-2rn-2+PiriP2r2+P1r1+P0 +P-1r-1+P-2r-2.P-mr-m2) 計算機中常用的進位基數制 可用數碼進位基數0K-10 9 A B CD E F0 1 2 34 5 6 7 0 109逢K進1逢16進1逢8進1逢2進1逢10進1K168210K進制十六進制八進制二進制十進制2.1 數據與文字的表示方法(1)二八,十六進制之間的轉換*23=8;24=16 -分組合并,擴展表示方法例:

4、(100010001)B=421O=111H( 2)二、八、十六十。按權相加法:。逐次乘基/除基相加法3)不同進制數之間的相互轉換Pn-1rn-1+Pn-2rn-2+PiriP2r2+P1r1+P0 +P-1r-1+P-2r-2.P-mr-m=(Pn-1r1+Pn-2)r1+。) r1+P0 + (P-mr-1+P-m-1) r-1.P-2)r-1 +P-1)r-12.1 數據與文字的表示方法(3)十二、八、十六減權定位法 例 (326)10=(101000110)B。除基取余法(整數部分)/乘基取整法(小數部分) 例:(326.625) 10 =(?)B*采用二進制數表示,可以直接使用人們習

5、慣的計數和計算規則。2.1 數據與文字的表示方法(三) 小數點處理1。定點處理 1)無符號整數: 省略符號位,適應只有正整數的運算 2)帶符號定點整數: 小數點默認為在末尾,適應只有整數的運算 3)帶符號定點小數: 小數點默認為在最前面,適應只有小數的運算三、小數點處理2。浮點處理 -用一組0/1組合表示小數點的位置階碼。浮點數的定義 N=+/-REM;E:階碼;M:尾數;R:基數(2)例:+111.1101=0.111110123 -111.1101=-0.111110123(四)數的機器碼表示無符號數:正整數。帶符號數:正數或負數。真值: 帶“+”、“”的數值本身。例:+0.01、-100

6、0機器數(機器碼):最高位為符號位,“0”表示“+”,“1”表示“”。原碼反碼補碼2.1 數據與文字的表示方法2.1 數據與文字的表示方法原碼定點整數X1= + 9 = + 1001B X1原=0000 1001.X2= 9 = 1001B X2原=1000 1001.定點小數X1= + 0.75 = + 0.11B X1原=0.1100000X2= 0.75 = 0.11B X2原=1.11000000的表示形式不唯一+ 0原= 00000000 0原= 10000000原碼加減法運算復雜。反碼定點整數X1= + 9 = + 1001B X1反=0000 1001.X2= 9 = 1001B

7、 X2反=1111 0110.定點小數X1= + 0.75 = + 0.11B X1反=0.1100000X2= 0.75 = 0.11B X2反=1.00111110的表示形式不唯一+ 0反= 00000000 0反= 111111112.1 數據與文字的表示方法補碼的引入模和同余模:計量器的溢出容量,用M表示。當運算結果超出計量范圍,溢出部分舍棄。字長為n+1位時定點整數的模為2n+1 。定點小數的模為2 。同余:兩整數A、B除以模M,所得的余數相同。可記作A=B (mod M )當模為12時 4和16同余,可寫作 4 = 16 (mod 12) -2和10同余,可寫作 2 = 10 (m

8、od 12)利用補碼可將減法運算轉換成為加法運算2.1 數據與文字的表示方法n+110000n+110.0004-2=4+10補碼定點整數X1= + 9 = + 1001B X1補=0000 1001.X2= 9 = 1001B X2補=1111 0111.定點小數X1= + 0.75 = + 0.11B X1補=0.1100000X2= 0.75 = 0.11B X2補=1.01000000的表示形式唯一+ 0補= 0補= 000000002.1 數據與文字的表示方法X真值+/- 變成 0/1數值位不變X原XS=0時,數值位不變XS=1時,數值位變反加1X補XS=0時,數值位不變XS=1時,

9、數值位變反X反2.1 數據與文字的表示方法三種不同機器數以及真值之間的轉換原碼與補碼的直接轉換法當X為正數時,X補=X原=X;當X為負數時,由原碼求補碼的簡便算法:符號位不變,最后面的1及其后各位保持不變,中間各位按位取反。例: X原= 1 . 111001 1000 X補= 1 . 000110 1000 2.1 數據與文字的表示方法不變不變取反三種機器數的比較正數的原、反、補碼相等,負數的各自不同原碼的符號位是人為定義的,不能參與運算補碼的符號位是通過模運算得到的,是數值的一部分,可參與運算。原、反碼零的表示形式不唯一,補碼零的表示形式唯一。假設字長為8位,則:+0原=00000000 -

10、0原=10000000+0反=00000000 -0反=11111111+0補=-0補=000000002.1 數據與文字的表示方法機器碼的表數范圍不同原、反碼的表數范圍相對于零點對稱補碼的表數范圍,負方向比正方向寬以字長4位(含符號位)的純整數為例原碼、反碼表數范圍 補碼表數范圍(多表示一個負數)0+1+2+3+4+5+6+7-1-2-3-4-5-6-7+0-07個正數7個負數0+1+2+3+4+5+6+7-1-2-3-4-5-6-7-87個正數8個負數-82.1 數據與文字的表示方法1000-81000-02.1 數據與文字的表示方法真值與三種機器數間的對照定點數與浮點數定點數約定機器中所

11、有數據的小數點位置是固定不變的。小數點隱含表示。可表示成純小數或純整數。定點數XX0 X1X2Xn表示形式2.1 數據與文字的表示方法定點數的表示范圍原碼定點數 (字長n+1位)純小數:(12-n )(1-2-n ) 例:字長為8位,則最小定點小數: -127/128 最大定點小數: 127/128純整數:( 2n 1)(2n -1) 例:字長為8位,則最小定點整數: -127 最大定點整數: 1271.11111110.111111111111111.01111111.2.1 數據與文字的表示方法定點數的表示范圍補碼定點數 (字長n+1位)純小數:112-n 例:字長為8位,則最小定點小數:

12、 1 最大定點小數: 127/128純整數:2n 2n1例:字長為8位,則最小定點整數: 128最大定點整數: 1271.00000000.111111110000000.01111111.2.1 數據與文字的表示方法階碼,常為純整數尾數,常為純小數浮點數小數點的位置不固定,根據需要而浮動。任何一個數N的浮點表示形式為 N=M2E2.1 數據與文字的表示方法0+0+1-1+第n位K個0K個1n個0n個1K個1浮點數的表示范圍若階碼數值部分為K位,尾數數值部分為n位,均用補碼表示,則2.1 數據與文字的表示方法規格化的浮點數為了充分利用尾數的有效數位,規定尾數值應在0.51之間。補碼表示時,尾數

13、的最高位應與符號位不同當 1/2 = M 1 時,應有0.1 的形式當 1 = M - 1/2 時,應有1.0 的形式為什么是,而不是=?為什么是=?2.1 數據與文字的表示方法補碼的表示范圍比原碼寬,可以表示-1, -1補=1.0000000,是規格化的浮點數-1/2原=1.1000000-1/2補=1.1000000不是規格化的浮點數浮點數的典型值:階碼和尾數均用補碼表示浮點數代碼真值階碼尾數最大正數最小正數規格化的最小正數絕對值最大負數絕對值最小負數規格化的絕對值最小負數011100100 0111001000.11110.0001 0.10001.00001.11111.01112.1

14、 數據與文字的表示方法X1移=27+1101101 =10000000 + 1101101 =11101101X1補=01101101X2移=27+(-1101101) = 10000000 - 1101101 = 00010011 X2補= 10010011移碼:在真值X的基礎上加一個常數,相當于X在數軸上向正方向偏移了若干單位。X移碼=偏置值+X標準偏置值:字長n+1位時,偏置值為2n。例:字長8位,若偏置值為27,X1=+1101101,X2= -1101101,求移碼。2.1 數據與文字的表示方法P26真值X(十進制)真值X(二進制)X補X移-128-127 -101127-10000

15-00000010000000000000111111111000000010000001 111111110000000000000001011111110000000000000001 011111111000000010000001111111112.1 數據與文字的表示方法移碼、補碼和真值之間的關系設字長8位,偏置值為標準偏置值27移碼的特點(字長8位,偏置值為27)移碼最高位為0表示負數,最高位為1表示正數。移碼直觀反映真值的大小。全0時,所對應的真值最小;全1時,所對應的真值最大;有利于兩個浮點數進行階碼的大小比較0的移碼表示形式唯一+0移=-0移=1000

16、0000移碼將真值映射到正數域,可視為無符號數同一真值的補碼和移碼只相差符號位。2.1 數據與文字的表示方法IEEE754標準的浮點數:應用于80X86微機182332位短浮點數數符階碼尾數64位長浮點數11152數符階碼尾數80位臨時浮點數數符階碼尾數1156432位短浮點數1.尾數隱含了最高位1(位權20),實際為24位,尾數采用原碼表示。2.階碼采用偏置值為127的移碼表示。2.1 數據與文字的表示方法P202.1 數據與文字的表示方法IEEE754標準基數R=2,基數固定,采用隱含方式來表示它。32位的浮點數:S數的符號位,1位,在最高位,“0”表示正數,“1”表示負數。M是尾數, 2

17、3位,在低位部分,采用純小數表示E是階碼,8位,采用移碼表示。移碼比較大小方便。規格化: 若不對浮點數的表示作出明確規定,同一個浮點數的表示就不是惟一的。尾數域最左位(最高有效位)總是1, 故這一位經常不予存儲,而認為隱藏在小數點的左邊。采用這種方式時,將浮點數的指數真值e變成階碼E時,應將指數e加上一個固定的偏移值127(01111111),即E=e+127。2.1 數據與文字的表示方法64位的浮點數中符號位1位,階碼域11位,尾數域52位,指數偏移值是1023。因此規格化的64位浮點數x的真值為: x=(-1)S(1.M)2E-1023 e=E-1023一個規格化的32位浮點數x的真值表示

18、為 x=(-1)S(1.M)2E-127 e=E-1272.1 數據與文字的表示方法真值x為零表示:當階碼E為全0且尾數M也為全0時的值,結合符號位S為0或1,有正零和負零之分。真值x為無窮大表示:當階碼E為全1且尾數M為全0時,結合符號位S為0或1,也有+和-之分。這樣在32位浮點數表示中,要除去E用全0和全1(25510)表示零和無窮大的特殊情況,指數的偏移值不選128(10000000),而選127(01111111)。對于規格化浮點數,E的范圍變為1到254,真正的指數值e則為-126到+127。因此32位浮點數表示的絕對值的范圍是10-381038(以10的冪表示)。浮點數所表示的范

19、圍遠比定點數大。一臺計算機中究竟采用定點表示還是浮點表示,要根據計算機的使用條件來確定。一般在高檔微機以上的計算機中同時采用定點、浮點表示,由使用者進行選擇。而單片機中多采用定點表示。2.1 數據與文字的表示方法浮點數表示范圍如下圖所示(2)計算出階碼真值e =移碼-偏置值127 e =1000 0010-111 1111=011=(3)10(3)寫出尾數(包括隱含的最高位1) 1.M=1.011011(4)寫出此數的浮點記數形式X =(-1)s 1.M 2e =+1.011011*23=1011.011(5)轉換成十進制數,并加上符號位 11.375例1: 若短浮點數x的754標準存儲格式為

20、(41360000)16,求其浮點數的十進制數值。 (1)將十六進制數轉換成二進制數,寫成短浮點數格式2.1 數據與文字的表示方法011 0110 0000 0000 0000 0000100 0001 00s階碼(8位)尾數(23位)0100 0001 1010 0100 1100 0000 0000 0000正數階碼的移碼(8位)隱含了最高數位1的尾數的原碼(23位)例2:將(20.59375)10轉換成短浮點數格式 (1)把十進制數轉換為二進制數 (20.59375)10=(10100.10011)2 (2)寫成浮點記數形式,尾數保留最高位1,不計入。 10100.10011=1.010

21、0 10011*24 (3)計算出階碼的移碼 1111111+100=1000 0011 (4)以短浮點數格式存儲該數 41A4C000H2.1 數據與文字的表示方法二、非數值數據表示通常是指字符、字符串、圖形符號和漢字等各種數據,它們通常不用來表示數值的大小,一般情況下不對它們進行算術運算。字符和字符串表示ASC (美國標準信息交換碼)7位基本ASC碼(國際通用)可表示128種字符8位擴充ASC碼(可重新定義)可表示256種字符ASC碼可分為: 顯示字符控制字符“0 ”為48 “A”為65return 、backspace鍵的編碼分別為13、82.1 數據與文字的表示方法P272.1 數據與

22、文字的表示方法256列256行1024個1024個1024行1024列統一代碼(Unicode) 能夠表示6800種語言中任意一種語言里使用的所有符號。UCS-2用16位數來表示可表示65536個符號UCS-4用32位數來表示每個16位數都來自于對UCS-2的進一步擴展可表示220個字符2.1 數據與文字的表示方法漢字編碼漢字是一種象形文字,無法直接用標準西文鍵盤輸入,必須經過轉換間接輸入;漢字的字數也較多,不能用單字節的ASC(256個字符)來表示目前采用兩個字節(可以表示64K字符)的漢字編碼方案。漢字的應用范圍較廣(東南亞國家),但編碼字符集不相同,中國大陸常用GB / GBK碼,臺灣B

23、IG5。 2.1 數據與文字的表示方法外部(輸入)碼機內碼字形(輸出)碼漢字信息其它系統或設備漢字信息鍵盤管理程序漢字處理程序交換碼(國標碼)漢字處理過程2.1 數據與文字的表示方法外部碼也叫漢字輸入編碼,主要是從鍵盤(語音、手寫、光電)輸入計算機中的代表漢字的編碼。漢字輸入方案有數百種,基本上是直接利用西文標準鍵盤進行漢字輸入,每一種漢字輸入法都各自提供相應的鍵盤碼與漢字機內碼(碼表)。編碼方案可分四類:數碼(如電報碼,區位碼,國標碼等)音碼(如全拼碼,簡拼碼,雙拼碼等)形碼(如五筆字型,大眾碼,倉吉碼等)音形碼(如自然碼,首尾碼等)2.1 數據與文字的表示方法交換碼 用于計算機與其他系統或

24、設備之間進行漢字代碼信息交換的標準漢字代碼目前最常使用的是國標碼2000年的GB18030-2000每個漢字(圖形符號)用兩個字節表示,每個字節只用低7位,即最高位為0的二進制碼漢字分為兩級:一級為使用頻度高的常用漢字二級為次常用的漢字2.1 數據與文字的表示方法內部碼 也稱漢字內碼或機內碼,是計算機對漢字進行存儲、運算、傳碼的實際代碼。 一般用兩個字節表示一個漢字內碼,每個字節最高位為 1。 還有少數三字節、四字節等內部碼。最多能表示128128 =16384個漢字和圖形符號 機內碼目前雖未完全統一,但已趨于標準化。內部碼與國標碼的對應關系:內碼=國標碼+8080 國標碼每個字節最高位為1

25、內部碼。 例如:國標碼 3B7A 00111011 01111010 機內碼 BBFA 10111011 111110102.1 數據與文字的表示方法字形碼也稱為字模碼,用點陣表示的漢字字形代碼,是漢字的輸出形式。簡易型 1616提高型 2424、 3232等1616點陣,每個漢字占32字節。每行16點,每點0/1,16位,2個字節共16行162=32字節2.1 數據與文字的表示方法各種輸入碼交換碼(國標碼)內碼字形碼顯示漢字打印漢字2.1 數據與文字的表示方法漢字代碼交換流程奇偶校驗碼常用于存儲器讀、寫檢查或ASCII字符傳送過程中的檢查。實現方法:由有效信息位和1位奇偶校驗位組成。奇校驗保

26、證整個校驗碼中有奇數個1偶校驗保證整個校驗碼中有偶數個12.1 數據與文字的表示方法有效信息偶校驗碼奇校驗碼10101010101010100101010101010101000101010010101010000000000000000000000000000101111111011111111011111110111111111111111101111111112.1 數據與文字的表示方法簡單奇偶校驗僅實現橫向的奇、偶校驗。可檢測出一位(或奇數位)錯誤,但不能確定出錯位置。例7:假定信息位8位,奇、偶校驗位在末尾。交叉奇偶校驗橫向:每一個字節有一個奇、偶校驗位縱向:全部字節同一位也設置奇、

27、偶校驗位可以發現兩位同時出錯的情況。例:縱、橫均約定為偶校驗2.1 數據與文字的表示方法有效信息橫向校驗第一字節 10101010 0第二字節 010101001第三字節 000000000第四字節 011111111第五字節 11111111 0縱向校驗 01111110 11補碼加減法運算公式 (討論純小數,純整數類似)X+Y補=X補+Y補 (mod 2)X-Y補=X補+-Y補 (mod 2)可證,-Y補= -Y補 (mod 2)所以,X-Y補=X補-Y補 (mod 2)-Y補=Y補+2-n ( Y補連同符號位變反,末位加1)簡便方法:Y補最右邊的1及其后各位保持不變,連同符號位在內一起變

28、反。例10:已知X1=-0.1110,X2=+0.1101, 求:X1補,-X1補,X2補,-X2補解: X1原=1.1110 X2原=0.1101 X1補=1.0010 X2補=0.1101 -X1補=0.1110 -X2補=1.0011 2.2 定點加減運算例9:x=+0.1011,y=-0.0101,利用補碼加法計算x+y=?解: x補=0.1011,y補=1.1011 x補=0.1011 + y補=1.1011 x+y補=10.0110 x+y=+0.01102.2 定點加減運算P32自動舍棄+0.6875-0.3125+0.375例11:x=+0.1101,y=+0.0110,利用補

29、碼減法計算x-y=?解:x補=0.1101,y補=0.0110, -y補=1.1010 x補 =0.1101 + -y補 =1.1010 x-y補=10.0111 x-y= 0.0111符號位參與運算,超出模的進位自動舍棄。自動舍棄后,結果正確嗎?如何判斷?2.2 定點加減運算P33自動舍棄+0.8125+0.375+0.4375補碼的溢出在選定了運算字長和數的表示方法之后,計算裝置所能表示的數的范圍是一定的,超過此范圍就稱為溢出。例: 運算字長 數的表示方法 定點整數的范圍 n= 8 原碼 -127+127 n= 8 反碼 -127+127 n= 8 補碼 -128+1272.2 定點加減運

30、算例12:X=0.1011,Y=0.1001,X+Y補=? X補 0.1011 +Y補 0.1001 X+Y補 1.0100 兩正數相加,結果為負,上溢。溢出檢測方法方法一:常識判別法補碼加法運算時,僅在兩數同號時才可能產生溢出。 OVER= XsYsZs+XsYsZs=1兩正數相加,結果為負,產生上溢;兩負數相加,結果為正,產生下溢。2.2 定點加減運算方法二:雙高位判別法(單符號位補碼)考察兩補碼相加時符號位產生的進位Cf和最高數值位產生的進位C0。 OVER=CfC0=1 例14:X=+0.1100,Y=+0.1000,X+Y補=? X補 0 . 1 1 0 0 +Y補 0 . 1 0

31、0 0 X+Y補 1 . 0 1 0 0 Cf=0C0=1CfC0=1 有上溢出產生2.2 定點加減運算方法三:變形補碼法(雙符號位補碼)采用雙符號位補碼(模4補碼)00-正數 11-負數 01-上溢 10-下溢 例15:X=-0.1100,Y=-0.1000,利用變形補碼計算X+Y補 x變補 11 0100 + y變補 11 1000 x+y變補 10 1100 下溢 練習:P69-6(1) X=0.11011,Y=-0.11111,用變形補碼計算X-Y,并指出結果是否溢出?2.2 定點加減運算基本的二進制加減法器 加法單元全加器:有三個輸入端,是考慮低位向本位進位的加法器。FAAi BiC

32、i-1CiSiSi=AiBi Ci-1Ci=AiBi + (Ai Bi)Ci-1本位進位傳送進位3T3TTTT6T5T全加器真值表AiBiCi-1SiCi0000111100110011010101010110100100010111本位進位傳送進位基本的二進制加減法器 加法器串行加法器:只有一位全加器的加法器,它每次只能進行一位二進制數運算,整個數據需要一位一位地串行送入全加器,分時進行運算。AiBi本位和CiQCCP D移位寄存器A移位寄存器B進位觸發器全加器CP基本的二進制加減法器 本位進位,記為Gi傳送進位,記為PiCi-1基本的二進制加減法器 并行加法器:由多位全加器組成的加法器,各

33、位全加器之間傳遞進位信號的線路組成進位鏈。根據進位鏈設置方法的不同,分為串行進位并行進位影響并行加法器速度的關鍵因素進位信號產生和傳遞的時間。進位信號的基本邏輯 Ci=AiBi+(AiBi) Ci-1FAAn BnCn-1CnSnFAA2 B2C2S2C0C1FAA1 B1S1Cn=Gn+PnCn-1 , ,C2=G2+P2C1, C1=G1+P1C0基本的二進制加減法器 串行進位:也稱為行波進位各全加器由進位信號線串接在一起每一位的進位直接依賴于前一級的進位。進位是串行的,結構簡單速度慢。假設一級進位產生時間2T,n級串行進位加法器的總延遲時間約為2nT。基本的二進制加減法器 串行進位加減法

34、器邏輯結構圖P35C1 = G1+P1C0C2 = G2+P2 (G1+P1C0 )= G2+P2G1+P2P1C0 C3 = G3+P3 (G2+P2 (G1+P1C0 ) = G3+P3G2+P3P2G1+P3P2P1C0 Cn = Gn+PnGn-1+(PnP1) C0 基本的二進制加減法器 并行進位:先行進位、超前進位根據最高位進位,預先推算出各高位的進位關系使串行進位變成并行進位,從而實現快速加法運算并行進位的邏輯表示十進制加法器對8421BCD碼直接進行加法運算在二進制加法器的基礎上,加上適當的“校正”邏輯來實現。n位行波進位BCD碼加法器由n級BCD碼加法單元級聯而成。每一級完成

35、4位BCD數的加法運算。基本的二進制加減法器 結果10,加6調整。 (10)10=(1010)2(1 0000)BCD+6P36一位BCD碼加法單元第一次近似求值時,完成4位二進數加法得到的暫時和大于10或向高位產生進位時,進行加6調整。基本的二進制加減法器 計算機實現乘除法的方法純軟件不需要專門的硬件電路,無乘除運算指令,只能用子程序來實現乘除運算。低檔微機。硬件擴充串行乘法器在原有運算器的基礎上增加一些硬件設備,使乘除運算變換成累加和移位操作,設有專門的乘除指令。適合中、小、微型機。專用硬件并行乘法器設置專用的乘除法器,機器中設有相應的乘除指令,運算速度快,電路復雜。適合中、大型機。2.3

36、 定點乘法運算補碼的移位運算補碼左移一位相當于乘以2,低位補0。補碼右移一位相當于除以2,高位補符號位 例:0.01左移 0.10,右移0.001 1.11左移 1.10,右移1.111+0.5+0.25+0.125-0.5-0.25-0.1252.3 定點乘法運算人工算法與機器算法的同異性人工算法:乘積P=|X|Y| 符號PS=XSYS 引例:X=0.1101,Y= 0.1011, 求X*Y。 0.1101 0.1011 1101 1101 0000 + 1101 0.10001111 因為PS=XSYS=00=0 所以XY= 0.10001111 為適合計算機運算需要改進:1.一次進行n個

37、數相加一次進行2個數相加;2.小數點移動小數點固定;3.需要2n個加法器只設n個加法器;2.3 定點乘法運算又稱為比較法、Booth法參加運算的數用補碼表示,符號位參加運算被乘數X與部分積取雙符號位 乘數Y取單符號位,末位增設附加位Yn+1,初值0 Yn與Yn+1構成了各步運算的判斷位串行乘法補碼一位乘 Yn Yn+1 操作 原部分積1 原部分積X補,1 原部分積X補,1 原部分積1推導進行n+1步操作,但第n+1步不移位按補碼右移規則移位補充BOOTH法的推導設Y補=Y0 .Y1Y2Yn,其中Y0是符號位,可以證明 XY補=X補0.Y1Y2Yn-X補Y0 Y0=0,正數, XY補=X補0.Y

38、1Y2Yn 不需校正 Y0=1,負數, XY補=X補0.Y1Y2Yn-X補 校正XY補=X補0.Y1Y2Yn-X補Y0 =X補2-1Y1+2-2Y2+2-(n-1)Yn-1+2-nYn-X補Y0 =X補-Y0+2-1Y1+2-2Y2+2-(n-1)Yn-1+2-nYn又因為,2-1Y1 =Y1-2-1Y1 ,2-2Y2 =2-1Y2-2-2Y2 ,可得X補-Y0+Y1-2-1Y1+2-1Y2-2-2Y2+2-(n-2)Yn-1-2-(n-1)Yn-1+2-(n-1) Yn-2-nYn=X補(Y1-Y0)+2-1 (Y2-Y1)+2-2 (Y3-Y2)+2-(n-1)(Yn-Yn-1)+2-n(

39、0-Yn)=X補(Y1-Y0)+2-1 (Y2-Y1)+2-2 (Y3-Y2)+2-(n-1)(Yn-Yn-1)+2-n(0-Yn)設Yn+1=0=X補(Y1-Y0)+2-1 (Y2-Y1)+2-2 (Y3-Y2)+2-(n-1)(Yn-Yn-1)+2-n (Yn+1-Yn)=X補(Y1-Y0)+2-1(Y2-Y1)+ 2-1(Y3-Y2)+2-1 (Yn+1-Yn)=X補(Y1-Y0)+2-1(X補(Y2-Y1)+ 2-1(X補(Y3-Y2)+2-1 (X補(Yn+1-Yn)=X補(Y1-Y0)+2-1(X補(Y2-Y1)+ 2-1(X補(Y3-Y2)+2-1 (X補(Yn+1-Yn +0)

40、設P0補=0 P1補=2-1 (X補(Yn+1-Yn ) +P0補) P2補=2-1 (X補(Yn-Yn-1 ) +P1補) Pn補=2-1 (X補(Y2-Y1 ) +Pn-1補) Pn+1補=XY補= X補( Y1-Y0 )+Pn補Yn Yn+1 操作 部分積1 部分積X補, 1 部分積X補,1 部分積1返回補碼一位乘法運算示例例:X= - 0.1101 Y= 0.1011用補碼一位乘法計算X*Y=? 解:X補=11.0011 -X補=00.1101 Y補=0.1011 A C 附加位 說明 00.0000 0.1011 0 YnYn+1=10, +-X補+ 00.1101 00.1101

41、1 00.0110 10.101 1 YnYn+1=11, 1 00.0011 010.10 1 YnYn+1=01,+X補+ 11.0011 11.0110 1 11.1011 0010.1 0 YnYn+1=10,+-X補+ 00.1101 00.1000 1 00.0100 00010. 1 YnYn+1=01,+X補+ 11.0011 最后一步不移位 11.0111 0001 所以, XY= - 0.10001111補碼一位乘法運算器框圖反變量原變量右移A寄存器加法器與或門B寄存器Yn+1C寄存器Yn部分積被乘數乘數 附加位計數器+1加法01減法1000或11+1陣列乘法器專用硬件并行

42、乘法器由于乘法運算量大,采用高速乘法部件可以提高速度和效率。隨著大規模集成電路的問世,可由全加器陣列,構成流水式陣列乘法器,實現多個部分積并行相加,稱為并行乘法器。運算速度快,電路復雜。P38不帶符號的陣列乘法器設有兩個不帶符號的二進制整數Aam1a1a0 Bbn1b1b0它們的數值分別為a和b,即設P A*B =pmn1p1p0 ,即不帶符號的陣列乘法器這個過程與手工計算乘法過程非常類似mn個aibj ,可以用mn個與門并行地產生mn個aibj 相加,可用(m-1)n個全加器實現不帶符號陣列乘法器邏輯框圖FACiAiBiSiCi+1來自低位的進位加數加數向高位產生的進位和全加器邏輯符號例如:

43、當m=n=5時a0b0FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAp8p7p6p5p4p3p2p1p0p9a1b0a2b0a3b0a4b0a0b1a1b1a2b1a3b1a4b1a0b2a1b2a2b2a3b2a4b2a0b3a1b3a2b3a3b3a4b3a0b4a1b4a2b4a3b4a4b400000不帶符號的陣列乘法器邏輯電路圖Ta:與門時間延遲 Tf:全加器進位時間延遲總時間延遲=Ta+(n-1)6T+(n-1)Tf=(8n-6)T不帶符號的陣列乘法器例16已知兩個不帶符號的二進制整數A11011,B 10101,求每一部分乘積項aibj的值與p9

44、p8p0的值解 a4b01 a3b01 a2b00 a1b01 a0b01a4b10 a3b10 a2b10 a1b10 a0b10a4b21 a3b21 a2b20 a1b21 a0b20a4b30 a3b30 a2b30 a1b30 a0b30a4b41 a3b41 a2b40 a1b41 a0b4110000111010100FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA11011000001101100000110110110101Pp9p8p7p6p5p4p3p2p1p01000110111 (56710)0000001100010011011010

45、011 串行進位鏈的并行加法器不帶符號陣列乘法器工作過程演示A *B 11011* 10101帶符號的陣列乘法器對2求補器:在帶符號數與無符號數間進行轉換求補方法:設Aana1a0是n1位帶符號數,負數:E=1,最右邊的“1”及其后各位保持不變,其余各位按位取反。10100110正數:E=0,輸出和輸入相等。可利用符號位做為控制信號。帶符號陣列乘法器邏輯框圖將A和B變成正整數當A和B異號時,把運算結果變成帶符號的數帶符號的陣列乘法器例17 設X15,Y13,用帶求補器的原碼陣列乘法器求出乘積XY?解 設最高位為符號位,則輸入數據為X原 01111 Y原 11101 符號位單獨考慮,算前求補級后

46、 |X|1111,|Y|1101算后經求補級輸出并加上乘積符號位1,則原碼乘積值為111000011。真值是 ( 11000011)2=(-195)10手工除法示例 假定:X=0.1011,Y=0.1101,則 0.1101 0.10110 X小于Y,商00.2.4 定點除法運算0.1 0.11 0.110 0.11010.01101 Y右移,夠減,商1,相減0.010010 得R0 0.001101 Y再右移,夠減,商1,相減0.0001010 得R1 0.0001101 Y再右移, 不夠減,商00.00000111 得R3 商符qf=XfYf=00=0XY=0.1101+0.0111*2-

47、4/0.11010.00001101 Y再右移, 夠減,商1,相減0.00010100 得R2 計算機實現除法的改進定點機,商應為純小數,否則溢出。所以,只有在被除數小于除數時(X-Y0,商1,余數左移,進行下一步R0,商0恢復余數法+Y(恢復余數),余數左移,進行下一步不恢復余數法(加減交替法)Ri+1=2(Ri+Y)-Y=2Ri+Y余數左移,下一步加+Y串行除法串行除法補碼不恢復余數法涉及到的問題及解決 第一步,判斷是否開始,不是簡單地相減: 補碼表示時:X與Y同號,相減 X與Y異號,相加中間過程中,不同情況不同處理: R與Y同號,商1,1,+-Y補 R與Y異號,商0,1,+Y補商的校正

48、末尾恒置1法補充補碼不恢復余數法示例例:X= 0.1000 Y= - 0.1010 用補碼不恢復余數法計算 X/Y 解:A:X補=00.1000 B:Y補=11.0110,-Y補=00.1010 C:商,初值為0 A C 操作 00.1000 X與Y異號 + 11.0110 +Y補 11.1110 1 R與Y同號,商1 11.1100 1. 1 + 00.1010 +-Y補 00.0110 1.0 R與Y異號,商0 00.1100 1.0 1 + 11.0110 +Y補 00.0010 1.00 R與Y異號,商0 00.0100 1.00 1補碼不恢復余數法示例例:X= 0.1000 Y= -

49、 0.1010 用補碼不恢復余數法計算 X/Y解:A:X補=00.1000 B:Y補=11.0110,-Y補=00.1010 C:商,初值為0 A C 操作 00.0100 1.00 1 + 11.0110 +Y補 11.1010 1.001 R與Y同號,商1 11.0100 1.001 1 + 00.1010 11.1110 1.0011 末位恒置1 X/Y補=1.0011+1.1110*2-4/1.0110 X/Y= - 0.1101+0.0010*2-4/0.1010陣列除法器采用大規模集成電路制造的并行運算部件。與串行除法器相比,運算速度高。形式多樣不恢復余數陣列除法器補碼陣列除法器

50、基本的單元電路可控加/減法單元(CAS)既可完成減法操作,又可完成加法操作適用于除法操作過程中的加減交替。可控加/減法(CAS)單元CASAiBiPPCiCi+1SiBi四個輸入端Ai、Bi、Ci P:控制端輸入四個輸出端Si、Ci+1Bi:除數右移P :控制端輸出P0:CAS作加法Si=AiBi CiCi+1=AiBi + (Ai Bi)CiP1:CAS作減法Si=AiBi Ci ( Bi=Bi1)Ci+1=AiCi + (Ai Ci)Bi不恢復余數的陣列除法器不恢復余數的除法加減交替法當前行應執行加法還是減法,取決于上一行余數的符號與被除數的符號是否一致:余數與被除數異號(余數為負),商“

51、0”,除數右移,與原余數相加,得新余數;余數與被除數同號(余數為正),商“1”,除數右移,與原余數相減,得新余數。只介紹被除數、除數均為正數的情況。陣列除法器邏輯結構圖被除數0.123456 (雙倍長)除數0.123 (XY)商數0.q1q2q3余數0.00r3r4r5r6 字長 n14第一行做減法(P=1),由于XY,余數 0,表示EE; E 0,表示EEy時,則My ,Ey+1Ex1,溢出。右規:Mz,Ez+1。當尾數為11.1.或00.0.時,|Mz|0.5左規:Mz,Ez-1浮點加減運算舍入處理對階或右規時,尾數右移,尾數的低位部分被丟掉,造成一定誤差,要進行舍入處理。簡單的舍入方法有

52、三種:恒舍法:移出的位直接舍去,對保留部分不做任何修改。0舍1入法:右移出的位為0則舍去,為1則將尾數的末位加“1”。末位恒置一法:只要數位被移出,就在尾數的末尾恒置“1”。IEEE754標準就近舍入、朝0、+、- 舍入溢出判斷浮點數溢出主要體現在階碼的溢出,機器必須做中斷處理。階碼上溢階碼大于可表示的最大正數, 看作+、- 階碼下溢階碼小于可表示的最小負數,看作機器零浮點加減運算例25 設X20100.11011011,Y2100(0.10101100),求X+Y。解兩數均以補碼表示,階碼雙符號位,尾數單符號位。它們的浮點表示為 浮00 010, 0.11011011 浮00 100, 1.01010100 求階差,對大階 EEEE補+-E補00 010+11 10011 110 X的階碼小,應使Mx 右移2位,Ex 加2 X浮00 100,0.00110110(11) 尾數求和 00.00110110(11) 11.01010100 11.10001010(11)-2規格化處理 尾數運算結果為11.10001010(11) 符號位與最高數值位同值,應執行左規處理。 尾數左移1位,階碼減

溫馨提示

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

評論

0/150

提交評論