




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機學院(許先斌)xbxu@《計算機組成與結構》——本科生課程教學計算機組成與結構本課程主要講授計算機系統的硬件和軟件構成方法,包括硬件系統中運算器、控制器、存儲器、輸入設備和輸出設備和總線系統的構成原理等;并與當代先進的計算機技術相結合。是計算機科學與技術本科專業核心課程。
本課程著重計算機系統組成與結構方面的教學和研究。計算機結構定義為系統程序員所能見到的計算機硬件特性;計算機組成是指計算機硬件的具體實現。第三章
運算方法和運算部件
數據的表示方法和轉換帶符號數的表示方法及加減運算二進制乘法運算二進制除法運算浮點數的運算方法運算部件數據校驗碼3.3二進制乘法運算一、定點數一位乘法1、定點原碼一位乘法用原碼實現乘法運算十分方便,在定點運算中,完成兩個原碼表示得數相乘時,乘積得符號由兩數得符號位按位相加(異或)得到,而乘積得數值部分則是兩個數得絕對值之積。可以表示為:被除數[X]原=Xs.X1X2……Xn乘數[Y]原=Ys.Y1Y2……Yn乘積[Z]原=(Xs⊕Ys).(0.X1X2….Xn)(0.Y1Y2….Yn)3.3二進制乘法運算符號法則:同號相乘為正(0),異號相乘為負(1),(XsYs=00,01,10,11),
所以積得符號可按“異或”運算得到。數值部分運算法則:與普通十進制小數乘法相似。3.3二進制乘法運算例,X=0.1101,Y=0.1011,求X*Y=?
手工方法機器方法0.1101(X)0.1101×0.1011(Y)×0.10111101……P10.000011011101……..P20.00011010000………P30.000000+1101………..P4+0.0110110001111……P0.100011113.3二進制乘法運算機器運算與手工運算方法區別在于:(1)機器一次只能進行兩個數相加,所以P1+P2+P3+P4必須分步進行:P1+P2;(P1+P2)+P3;[(P1+P2)+P3]+P4。(2)每做完一次加運算,把部分積右移一位(相當于把被加數右移,而不是左移),移出得數碼不參加運算,故機器的位數可以固定。由此可以分析出機器乘法運算得基本規律。3.3二進制乘法運算原碼機器乘法規律:
當所乘得乘數為1時,則上次所得的部分積(最初為0)加被乘數右移一位,而得新的次一部分積;若所乘的乘數為0時,則上次所得的部分積加0右移一位后就是新的次一部分積。如此反復,直到乘數各位都乘完為止。3.3二進制乘法運算例,X=0.1101,Y=0.1011,求X*Y=?機器算法如下:0000初始化值
y=1+110111011101………..P1y=1+1101100111
100111………P2
y=0+0000100111100111……..P3y=1+11011000111110001111……P4=P3.3二進制乘法運算一般而言,設被乘數X,乘數Y都是小于1的n位定點正數:
X=0.X1
X2……….XnY=0.Y1Y2……….Yn
其乘積為:X*Y=X(0.Y1Y2……Yn)=X(Y12-1+Y22-2+…….+Yn2-n)=2-1(Y1X+2-1(Y2X+2-1(……+2-1(Yn-1X+2-1(YnX+0))……)))3.3二進制乘法運算令Pi表示第i次的部分積,則上式可寫成如下遞推公式:
P0=0,P1=2-1(YnX+P0),P2=2-1(Yn-1X+P1),Pi=2-1(Yn-i+1X+Zi-1),
Pn=X*Y=2-1(Y1X+Pn-1)
此處的P0,P1…Pn-1為部分積,Pn為最終的乘積P。3.3二進制乘法運算上述乘法運算的遞推算法可用流程圖來表示:(P74圖3.6)開始Pi=0,i=0Yn=1Pi+0Pi+XPi,Y右移一位,i=i+1i=n?結束YNNY3.3二進制乘法運算實現原碼一位乘法的邏輯電路圖(P73圖3.5)。3.3二進制乘法運算2、定點補碼一位乘法原碼乘法的主要問題是符號位不能參加運算。補碼乘法可以實現符號位直接參加運算。(1)補碼與真值的轉換關系設[X]補=X0.X1X2……..Xn
當
X>=0時,X0=0(符號位為0)尾數部分為真值X
3.3二進制乘法運算當X<0時,X0=1(符號位為1)[X]補=1.X1X2…….Xn=2+X
所以真值X為:X=1.X1X2…..Xn-2=-1+0.X1X2……Xn
所以,
3.3二進制乘法運算(2)補碼的右移正數右移一位,相當于乘1/2,負數用補碼表示,右移一位也相當于乘1/2。因此在補碼運算的機器中,一個數不論其正負,連同符號位向右移一位,符號位保持不變,就等于乘1/2。設[X]補=X0.X1X2…..Xn,因為所以3.3二進制乘法運算寫成補碼形式,得:所以,若要得,只要將[X]補連同符號位右移I位即可。(3)補碼的乘法規則設被乘數為[X]補=X0.X1X2….Xn,
乘數[Y]補=Y0.Y1Y2….Yn均為任意符號,則補碼乘法算式:[X*Y]補=[X]補*Y證明參見(P75-76)。
3.3二進制乘法運算(4)BOOTH算法根據相鄰兩位比較結果決定運算操作的方法稱為“比較法”,是由BOOTH夫婦提出的,也稱BOOTH算法。BOOTH算法流程:開始時,部分積為0,即[P0]補=0,然后每一步都是在前次部分積的基礎上由(Yi+1-Yi)(i=0,1,2…n)決定對[X]補的操作,再右移一位,得到新的部分積。如此重復n+1步,最后一步不移位,便得到[X]補*[Y]補。參見流程圖。3.3二進制乘法運算(5)補碼一位乘法的運算規則根據BOOTH算法流程圖,可得到補碼一位乘法的運算規則。運算規則:如果Yn=Yn+1,部分積[Pi]加0,再右移一位;如果YnYn+1=01,部分積加[x]補,再右移一位;如果YnYn+1=10,部分積加[-X]補,再右移一位。如此重復進行n+1步,最后一步不移位;包括一位符號位,所得乘積為2n+1位,其中n為尾數位數。3.3二進制乘法運算例,[X]補=1.0101,[Y]補=1.0011,求[X*Y]補=?解:[-X]補=0.1011,采用雙符號位表示后,運算過程如下:部分積乘數操作00.00001.00110
Yn+1=0,YnYn+1=10;
+00.1011加[-X]補00.101100.0101110011YnYn+1=11;+00.0000加000.010100.0010111001YnYn+1=01;
+11.0101加[X]補11.011111.1011111100
YnYn+1=00;+00.0000加011.101111.1101111110
YnYn+1=10+00.1011加[-X]補00.10001111最后一步不移位3.3二進制乘法運算(6)實現補碼一位乘法的邏輯圖(p95)3.3二進制乘法運算補碼一位乘法邏輯圖與原碼一位乘法邏輯圖的差異:(1)被乘數、乘數的符號位X0,Y0都參加運算;(2)乘數寄存器有附加位Yn+1,其初始狀態為0,并有右移功能;(3)被乘數寄存器的每一位用原碼或反碼的多路開關輸入,多路開關由YnYn+1控制;(4)部分積寄存器具有移位功能,其符號位與加法器的符號位始終一致;(5)當計數器i=n+1時,封鎖移位信號,保證最后一步不移位。3.3二進制乘法運算二、定點數二位乘法1、原碼兩位乘兩位乘數有四種可能組合及相應的操作:00-相當于0*X;部分積Pi+X,右移2位;01-相當于1*X;部分積Pi+X,右移2位;10-相當于2*X;部分積Pi+2X,右移2位;11-相當于3*X;部分積Pi+3X,右移2位。與一位乘法比較,多出了+2X和3X兩種情況。把X左移一位即得2X;+3X可以用(4X-X)來實現。原碼兩位乘法規則(P79表3.4)3.3二進制乘法運算例,X=0.100111,Y=0.100111,則:[-X]補=1.011001
部分積乘數欠位C
00.000000100111
0+[-X]補11.01100111.011001右移2位11.110110011001
1+2X01.00111001.000100右移2位00.010001000110
0
+2X01.00111001.011111右移2位00.01011111000103.3二進制乘法運算2、補碼兩位乘根據BOOTH算法,將兩步合并成一步,可以推導除編碼兩位乘法公式:上一步部分積:本步部分積:下一步部分積:3.3二進制乘法運算上式表明,產生部分積之后,可以加上乘數寄存器最低兩位和附加位的組合值與的積,再右移2位,可得到三位組合值的關系參加p80表3.53.3二進制乘法運算例,兩位補碼乘法,假設X=+0.0110011,Y=-0110010
則:[X]補=00110011,[Y]補=11001110;[-X]補=11001101,2[X]補=01100110,2[-X]補=10011010;其兩位補碼乘法實現過程如下:3.3二進制乘法運算部分積乘數附加位說明000000000011001110
0組合值為100,+2[-X]補1110011010111110011010110011
1右移2位,組合值為111111111100110101100
1右移2位,組合值為001,+[X]補00001100110000101100000000101100101011
0右移2位,組合值為110,+[-X]補11110011011111011000111111011000001010右移1位運算結果為:11111011000001010即為:-0.001001111101103.3二進制乘法運算三、陣列乘法器為了進一步提高乘法運算速度,可采用類似于人工計算的方法,用圖3.7所示的一個陣列乘法器完成X·Y乘法運算(X=X1X2X3X4,Y=Y1Y2Y3Y4)。陣列的每一行送入乘數Y的每一位數位,而各行錯開形成的每一斜列則送人被乘數的每一數位。圖中每一個方框包括一個與門和一位全加器。該方案所用加法器數量很多,但內部結構規則性強,適于用超大規模集成電路實現。3.3二進制乘法運算3.3二進制乘法運算3.4二進制除法運算一、定點除法運算
定點除法所占整個指令的執行頻度很小,約0.2%,但它是不可少的。除法運算的方法很多,如原碼除法、補碼除法、跳0跳1法、迭代法等等。1、定點原碼一位除法3.4二進制除法運算例,X=0.1001,Y=0.1011,求X/Y=?常規手工算法筆算算法過程01101011010.1011)0.100100.1011)0.10010X(r0)
-1011-0.01011011100.001110-1011-0.001011001100.0000110-0000-0.0000000011000.00001100-1011-0.0000101100010.000000013.4二進制除法運算恢復余數法(還原法)規則:每次余數ri(最初是被除數X不移位)左移一位減除數,得到新的余數ri+1,ri+1=2ri+(-y)補;如果ri+1>=0,表示夠減,商上“1”;如果ri+1<0,表示不夠減,商上“0”,還要加除數y,然后左移一位再作減除數y的運算。例,X=0.1001,Y=0.1011,用恢復余數法秋X/Y=?[X]原=[X]補=0.1001[Y]原=[Y]補=0.1011[-Y]補=1.0101采用雙符號位,恢復余數法運算過程如下:3.4二進制除法運算
X/YQ00.1001+[-y]補11.0101q0=011.1110r0<0+[y]補00.1011恢復余數00.100101.0010+[-y]補11.0101q1=100.0111r1>000.1110+[-y]補11.0101q2=100.0011r2>000.0110+[-y]補11.0101q3=011.1011r3<0+[y]補00.1011恢復余數00.0110r3’00.1100+[-y]補11.0101q4=100.0001r4>03.4二進制除法運算不恢復余數法(加減交替法)基本規則:當余數為正時,商上“1”,余數左移一位,減除數;當余數為負時,商上“0”,余數左移一位,加除數。恢復余數法與不恢復余數法的區別:當余數ri為正時:恢復余數法為,+ri*2-y,商為“1”不恢復余數法為,+ri*2-y,商為“1”當余數ri為負時:恢復余數法為,(-ri+y)*2-y=-2ri+y,商為“1”不恢復余數法為,-ri*2+y,商為“0”
3.4二進制除法運算例,X=0.1001,Y=0.1011,用不恢復余數法求X/Y=?[X]原=[X]補=0.1001,[Y]原=[Y]補=0.1011,[-Y]補=1.0101
X/YQ00.1001+[-Y]補11.0101q0=011.1110r0<011.1100+[Y]補00.1011q1=100.0111r1>000.1110+[-Y]補11.0101q2=100.0011r2>000.0110+[-Y]補11.0101q3=011.1011r3<011.0110+[Y]補00.1011q4=100.0001r4>0
3.4二進制除法運算2、定點補碼一位除法補碼加減交替法法則:(1)被除數與除數同號,被除數減去除數;被除數與除數異號,被除數加上除數。(2)余數與除數同號,商為“1”,余數左移一位,下次減除數;余數與除數異號,商為“0”,余數左移一位,下次加除數。(3)重復步驟(2),包括符號位在內,共做n+1步。3.4二進制除法運算商的校正:補碼一位除法的算法是在商的末位“恒置1”的舍入條件下推導的,按照這種算法所得到的有限位商為負數時,是反碼形式,而正確需要得到商是補碼形式,兩者之間相差末位的一個“1”,所以最后加校正量“1”。例,X=-0.1001,Y=+0.1101,求[X/Y]補=?解:[X]補=1.0111,[Y]補=0.1101,[-Y]補=1.00113.4二進制除法運算X/YQ操作說明11.0111+[Y]補00.1101q0=0[X]補與[Y]補異號00.0100r1余數r1與除數同號00.1000左移,商1,減除數+[-Y]補11.0011q1=111.1011r2余數r2與除數異號11.0110左移,商0,加除數+[Y]補00.1101q2=000.0011r3余數r3與除數同號00.0110左移,商1,減除數+[-Y]補11.0011q3=111.1001r4余數r4與除數異號11.0010左移,商0,加除數+[Y]補00.1101q4=011.1111r5余數r5與除數異號,商左移,商0,余數不左移。所以,[Q]補=1.0100+0.0001=1.0101,[R]補=1.11113.4二進制除法運算二、提高除法運算速度的方法跳0跳1除法根據余數前幾位代碼值再次求得幾位同位1或0得商。規則:(1)余數R>=0,且R的高K個數位均為0,則本次直接得商1,后跟K-1個0,R左移K位后,減除數Y,得新得余數。(2)余數R<0,且R的高K個數位均為1,則本次直接得商0,后跟K-1個1,R左移K位后,加除數Y,得新得余數。(3)不滿足(1)、(2)中條件時,按一位除法上商。參見P88例3.43。3.4二進制除法運算3.5浮點數的運算方法一、浮點加法和減法
設有兩個浮點數x和y,它們分別為
x=2m·Mx
y=2n·My
其中m和n分別為數x和y的階碼,Mx和My為數x和y的尾數。3.5浮點數的運算方法(1)對階對階的原則:小階向大階看齊。
若m>n則將操作數y的尾數右移一位,y的階碼n加1,直到m=n。若m<n則將操作數x的尾數右移一位,x的階碼m加1,直到m=n。(2)尾數相加尾數相加與定點數的加、減法相同
3.5浮點數的運算方法(3)結果規格化當運算結果的尾數部分不是11.0××…×或00.1××…×的形式時,則應進行規格化處理。當尾數符號位01或10需要右規。右規的方法是尾數連同符號位右移一位、和的階碼加1,右規處理后就可得到11.0××…×或00.1××…×的形式,即成為規格化的數.當運算結果的符號位和最高有效位為11.1或00.0時需要左規。
左規的方法是尾數連同符號位一起左移一位、和的階碼減1,
直到尾數部分出現11.0或00.1的形式為止。3.5浮點數的運算方法(4)溢出判斷在階碼的符號位出現01或10時,表示溢出,而尾數的符號位為01或10時,給出的是運算結果需要右規的信號。
見書P90,例3.453.5浮點數的運算方法例:
x=101.10010=23×0.10110010y=1100.1000=24×0.11001000x補=0011,0.1011001y補=0100,0.1100100(1)對階[ΔE]=[m]
補-[n]
補=0011+1100=1111,其真值位-1,即:x的階碼比y的階碼小1,x的尾數應右移1位,階碼加1得:x補=0100,0.0101101(0舍1入)3.5浮點數的運算方法(2)尾數相加減[用雙符號],即:[x尾]補±[y尾]補00.010110100.0101101+00.1100100+11.0011100
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025租賃公寓轉租合同協議書
- 2025合同解除補償協議書
- 2024-2025學年度湖南省株洲世紀星高級中學高二下學期第一次月考歷史試題(含答案)
- 景德鎮市重點中學2025屆高三下學期期中數學試題理試題
- 25年一月份全屋隔音棉驗收補充協議
- 第5課 隋唐時期的民族交往與交融(課件)-2024-2025學年七年級歷史下冊同步教學課件(統編版2024)
- 助殘委托服務協議
- 幼兒園常見事故預防和處理
- 李努生:對加強廉政建設的思考
- 2025安全巡查員技能提升合同模板
- 金屬監督監理實施細則
- 不銹鋼304焊接工藝評定報告PQR(全氬弧)
- 正確認識汽車太陽膜課件
- 工程建筑給排水外文文獻翻譯1
- 曲線上梁的平分中矢坐標計算方法解讀
- DB4201∕T 646-2021 軌道交通工程運營期結構監測技術規程
- 200句話搞定上海中考單詞(精華版)
- 船舶輔鍋爐的自動控制系統分析
- 49000DWT江海直達成品油船設計
- 第三章第四節2--厚壁圓筒-應力
- 建設工程監理費計算器
評論
0/150
提交評論