第3章 運(yùn)算方法與運(yùn)算器_第1頁
第3章 運(yùn)算方法與運(yùn)算器_第2頁
第3章 運(yùn)算方法與運(yùn)算器_第3頁
第3章 運(yùn)算方法與運(yùn)算器_第4頁
第3章 運(yùn)算方法與運(yùn)算器_第5頁
已閱讀5頁,還剩168頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章運(yùn)算方法與運(yùn)算器

本章學(xué)習(xí)內(nèi)容3.1數(shù)據(jù)的表示方法3.2定點加、減運(yùn)算3.3定點乘法運(yùn)算3.4定點除法運(yùn)算3.5定點運(yùn)算器的組成3.6浮點運(yùn)算方法2/5/202323.1數(shù)據(jù)的表示方法3.1.1帶符號數(shù)的表示3.1.2數(shù)的定點表示與浮點表示2/5/20233(1)機(jī)器數(shù)與真值機(jī)器數(shù):

采用進(jìn)制表示形式的連同數(shù)符一起代碼化了的數(shù)據(jù)統(tǒng)稱為機(jī)器數(shù)。真值:而與機(jī)器數(shù)對應(yīng)的實際數(shù)值稱為真值。3.1.1帶符號數(shù)的表示2/5/20234例:設(shè)用0表示正號,1表示負(fù)號,機(jī)器字長=8則+5、-5的機(jī)器數(shù)可以是:00000101、100001012/5/20235思考1:是否可以用1表示正號、0表示負(fù)號?思考2:機(jī)器數(shù)的表示方法(編碼方法)的確定需要考慮哪些問題?

在計算機(jī)中,為了便于帶符號數(shù)的運(yùn)算和處理,機(jī)器數(shù)有多種表示方法,如:原碼、補(bǔ)碼、反碼、移碼。2/5/20236(2)原碼表示原碼表示:保持原有的數(shù)值部分的形式不變,只將符號用二進(jìn)制代碼表示,0表示正號,1表示負(fù)號。原碼表示是最簡單、最直觀的機(jī)器數(shù)表示方法。2/5/20237例:設(shè)N=8,則[+7]原=00000111[-7]原=10000111例:設(shè)X=+0.101B,y=-0.0011[X]原=0.1010000[y]原=1.00110002/5/20238原碼的特點:(1)原碼表示直觀、易懂,與真值的轉(zhuǎn)換容易。(2)原碼表示的加減運(yùn)算復(fù)雜,不便于加減法的實現(xiàn)。例:-5-6=?(設(shè)N=4)

2/5/20239(3)補(bǔ)碼表示一個有趣的例子:在進(jìn)行鐘表對時時,設(shè)當(dāng)前的時針停在9點的位置,現(xiàn)將時鐘拔到4點,可以采用兩種方法:一是使時針后退5個小時,即9-5=4,另一種方法是使時針前進(jìn)7個小時即9+7“=”4,這是為什么?即在模為12的情況下9-5等于9+72/5/202310在計算機(jī)中,由于硬件的運(yùn)算部件與寄存器都有一定的字長限制,因此計算機(jī)中的運(yùn)算是有模運(yùn)算。

只要確定了‘模’,可找到一個負(fù)數(shù)等價的正數(shù),這樣可把減法運(yùn)算用加法實現(xiàn)。2/5/202311補(bǔ)碼表示正數(shù)的補(bǔ)碼同原碼,負(fù)數(shù)的補(bǔ)碼,將真值的數(shù)值部分按位取反,且最低位加1,符號位為1。若x=+15則[x]補(bǔ)=00001111若x=-1則[x]補(bǔ)=111111112/5/202312補(bǔ)碼的幾何性質(zhì)當(dāng)n=3時,純整數(shù)的補(bǔ)碼為:2/5/2023132/5/202314補(bǔ)碼的幾何性質(zhì):從表示符號的角度看,符號位的值代表了數(shù)的正確符號,0表示正數(shù),1表示負(fù)數(shù)。從映像值來看,符號位的值是映像值的一個數(shù)位,因此在補(bǔ)碼運(yùn)算中,符號位與數(shù)值位一樣參加運(yùn)算。補(bǔ)碼的幾何性質(zhì)說明了補(bǔ)碼運(yùn)算的基礎(chǔ)。2/5/202315

由于補(bǔ)碼表示中的符號位可以與數(shù)值位一起參加運(yùn)算,并且可以將減法轉(zhuǎn)換為加法進(jìn)行運(yùn)算,簡化了運(yùn)算過程,因此計算機(jī)中均采用補(bǔ)碼進(jìn)行加減運(yùn)算。2/5/202316補(bǔ)碼總是對確定的模而言的。如果補(bǔ)碼運(yùn)算結(jié)果超過了模,則模將自動丟失。補(bǔ)碼運(yùn)算在運(yùn)算過程中,模不能改變。2/5/202317反碼的求法若x≥0則[x]反=x,符號位為0若x<0,則將x的各位取反,符號位等于1,即得到[x]反。例:x=+1001100則[x]反=01001100x=-1001100則[x]反=101100112/5/202318(5)

移碼表示移碼也稱為增碼、余碼。純小數(shù)移碼的定義

[x]移=1+x-1≤x<1純整數(shù)移碼的定義

[x]移=2n+x-2n≤x<2n

移碼表示其符號位為0表示負(fù),1表示正,其它與補(bǔ)碼相同。2/5/202319移碼的幾何性質(zhì)當(dāng)n=3時,純整數(shù)的移碼為:真值移碼真值移碼(+0)1000(-1)0111

(+1)1001(-2)0110

(+2)

1010(-3)0101

(+3)1011(-4)0100

(+4)

1100(-5)0011

(+5)1101(-6)0010

(+6)1110(-7)0001

(+7)

1111(-8)

00002/5/20232001234567-1-2-3-4-5-6-7-80000001001001000101011001110011000010011010110011011110111110111移碼的幾何性質(zhì)真值移碼2/5/202321移碼表示的實質(zhì)是把真值映像到一個正數(shù)域,因此移碼的大小可直觀地反映真值的大小。不管正數(shù)還是負(fù)數(shù),用移碼表示時,可以按無符號數(shù)比較大小。由于移碼表示便于比較數(shù)值大小,所以移碼主要用于表示浮點數(shù)的階碼。2/5/202322小結(jié)(1)為了便于運(yùn)算,機(jī)器數(shù)的編碼表示有多種方法,如原碼、補(bǔ)碼、反碼和移碼。(2)原碼表示,直觀,真值轉(zhuǎn)換方便,它適合于乘除運(yùn)算。(3)補(bǔ)碼表示,符號位具有數(shù)值含義,特別適合于加減運(yùn)算。(4)移碼表示:碼值的大小與其真值對應(yīng),特別適合于表示浮點數(shù)的階碼。2/5/2023233.1.2數(shù)的定點表示與浮點表示任何一個數(shù)均可表示為:

(N)R=S×ReR:基值。

S:尾數(shù)。代表數(shù)N的有效數(shù)字。

e:階碼。代表數(shù)N的小數(shù)點的實際位置。根據(jù)小數(shù)點的位置是否固定,計算機(jī)中有兩種不同的數(shù)據(jù)格式,即定點表示和浮點表示。2/5/202324(1)定點表示定點表示:約定計算機(jī)中所有數(shù)據(jù)的小數(shù)點位置均是相同的而且是固定不變的。當(dāng)采用定點表示時,(N)R=S×Re

中e的取值固定不變。定點數(shù)有兩種表示方法。定點純小數(shù)和定點純整數(shù)。機(jī)器確定后,e就確定了,不能更改,也不能兩者并存。2/5/202325定點小數(shù)e=0,表示純小數(shù),約定小數(shù)點在符號位與最高數(shù)值位之間。定點小數(shù)的格式數(shù)符尾數(shù)x0x1x2……xn小數(shù)點2/5/202326定點整數(shù)e=n,表示純整數(shù),約定小數(shù)點在最低有效數(shù)值位之后。定點整數(shù)的格式數(shù)符尾數(shù)x0x1x2……xn小數(shù)點2/5/202327定點數(shù)的表示范圍設(shè)數(shù)據(jù)為N,機(jī)器字長為n+1,其中1位符號位,n位數(shù)值位。在不同的表示方法下,所能表示的數(shù)的范圍不同。2/5/202328機(jī)器數(shù)真值數(shù)符尾數(shù)(n位)定點小數(shù)定點整數(shù)最小正數(shù)000…01+2-n+1最大正數(shù)011…111-2-n2n-1最大負(fù)數(shù)100…01-2-n-1最小負(fù)數(shù)111…11-(1-2-n)-(2n-1)定點原碼數(shù)的表示范圍2/5/202329定點補(bǔ)碼數(shù)的表示范圍機(jī)器數(shù)真值數(shù)符尾數(shù)(n位)定點小數(shù)定點整數(shù)最小正數(shù)000…01+2-n+1最大正數(shù)011…111-2-n2n-1最大負(fù)數(shù)111…11-2-n-1最小負(fù)數(shù)100…00-1-2n2/5/202330⑷移碼表示定點移碼數(shù)的表示范圍與定點補(bǔ)碼數(shù)的表示范圍相同。機(jī)器數(shù)真值數(shù)符尾數(shù)(n位)定點小數(shù)定點整數(shù)最小正數(shù)100…01+1最大正數(shù)111…112n-1最大負(fù)數(shù)011…11-1最小負(fù)數(shù)000…00-2n2/5/202331在補(bǔ)碼和移碼表示范圍中,最小負(fù)數(shù)比原碼和反碼表示范圍大一個數(shù),“-1”。以定點整數(shù)為例,原碼和補(bǔ)碼表示范圍的數(shù)軸表示形式為:0+12n-1-1-(2n-1)11…1110…0000…0010…0100…0101…11原碼0+12n-1-1-(2n-1)10…0100…0011…1100…0101…11補(bǔ)碼-2n10…002/5/202332定點機(jī)的特點硬件上只考慮定點小數(shù)或定點整數(shù)運(yùn)算的計算機(jī)稱為定點機(jī)。定點機(jī)的優(yōu)點在于運(yùn)算簡單,硬件結(jié)構(gòu)簡單。但存在的問題是:(1)所能表示的數(shù)據(jù)范圍?。挥捎谛?shù)點的位置固定,在有限的字長下,定點數(shù)所能表示的范圍較窄。2/5/202333(2)使用不方便,運(yùn)算精度較低;在定點運(yùn)算中,參加運(yùn)算的數(shù)據(jù)必須是定點小數(shù)或定點整數(shù)。因此在運(yùn)算之前,必須選擇一個恰當(dāng)?shù)谋壤蜃?,將所有參加運(yùn)算的數(shù)均化成純小數(shù)或純整數(shù),然后再進(jìn)行運(yùn)算。運(yùn)算結(jié)果再根據(jù)所選的比例因子轉(zhuǎn)換成正確的值。比例因子必須選擇恰當(dāng)。選擇太大,將會影響運(yùn)算精度;選擇太小,會使運(yùn)算結(jié)果超出機(jī)器所能表示的數(shù)據(jù)范圍,即出現(xiàn)溢出。2/5/202334例:在定點小數(shù)機(jī)器中計算11.01+10.01

選擇比例因子2-2=0.01,可將兩操作數(shù)變換為0.1101+0.1001

但0.1101+0.1001=1.0110,運(yùn)算結(jié)果不是純小數(shù),出現(xiàn)了機(jī)器數(shù)不能表示的數(shù),即出現(xiàn)了正溢出。

2/5/202335如果選擇比例因子2-3=0.001,可將兩操作數(shù)變換為0.01101+0.01001

則運(yùn)算結(jié)果0.01101+0.01001=0.10110

為正常結(jié)果。將0.10110除以比例因子2-3,可得到正確結(jié)果101.102/5/202336比例因子的選擇,早期是由用戶自己進(jìn)行的。在現(xiàn)代的計算機(jī)中,比例因子的選擇是由系統(tǒng)程序(如編譯程序)完成的,對用戶往往是透明的。2/5/202337(3)存儲單元利用率低在定點小數(shù)的機(jī)器中,必須把所有參加運(yùn)算的數(shù)據(jù)至少都除以這些數(shù)據(jù)中的最大數(shù),才能把所有的數(shù)據(jù)化成純小數(shù),這樣可能會造成很多數(shù)據(jù)出現(xiàn)大量的前置0,從而浪費(fèi)了許多存儲單元。2/5/202338結(jié)論:定點表示計算簡單,硬件實現(xiàn)容易,但數(shù)據(jù)表示范圍小,采用比例因子進(jìn)行運(yùn)算時很難兼顧數(shù)值范圍和精度的要求,不適合科學(xué)計算。2/5/202339(2)浮點表示在科學(xué)計算中,數(shù)值的分布范圍很大,如果用比例因子來處理,很難兼顧數(shù)值范圍和運(yùn)算精度的要求,為此引入了浮點表示法。浮點表示:是指各個數(shù)的小數(shù)點位置不是固定不變的,而是可以浮動的。即(N)R=S×Re中的

e值是可變的。2/5/202340浮點數(shù)的表示格式浮點數(shù)由階碼和尾數(shù)兩部分組成,階碼表示數(shù)的小數(shù)點實際位置,尾數(shù)表示數(shù)的有效數(shù)字?;鶖?shù)R是設(shè)計者約定的,用隱含方法表示。通常取基數(shù)R=2。浮點數(shù)的表示格式:數(shù)符階符階碼尾數(shù)1位1位m位n位2/5/202341浮點數(shù)的規(guī)格化表示浮點數(shù)采用規(guī)格化表示方法的目的:⑴為了提高運(yùn)算精度,充分利用尾數(shù)的有效數(shù)位,盡可能占滿位數(shù),以保留更多的有效數(shù)字。⑵為了浮點數(shù)表示的唯一性。例:0.100100×23=0.001001×252/5/202342為達(dá)到上述目的,需要盡可能去掉尾數(shù)中的前置“0”。即盡量使小數(shù)點后第一位為“1”。對于二進(jìn)制數(shù),就是要滿足2/5/202343規(guī)格化數(shù)的定義原碼表示的規(guī)格化數(shù)對于[S]原=Sf.S1S2…Sn,其規(guī)格化標(biāo)志是:

S1=1即:[S]原=0.1xx…x或[S]原=1.1xx…x例:[S]原=0.1101101是規(guī)格化數(shù)[S]原=0.0101101不是規(guī)格化數(shù)2/5/202344補(bǔ)碼表示的規(guī)格化數(shù)對于[S]補(bǔ)=Sf.S1S2…Sn,其規(guī)格化標(biāo)志是:

Sf⊕S1=1即:[S]補(bǔ)=0.1xx…x或[S]補(bǔ)=1.01xx…x例:[S]補(bǔ)=0.1101101和[S]補(bǔ)=1.0101101是規(guī)格化數(shù)[S]補(bǔ)=0.0101101和[S]補(bǔ)=1.1101101不是規(guī)格化數(shù)2/5/202345階碼用移碼,尾數(shù)用補(bǔ)碼表示時的浮點數(shù)表示范圍數(shù)符階符階碼(m位)尾數(shù)(n位)真值非規(guī)格化最小正數(shù)0000…0000…01規(guī)格化最小正數(shù)0000…0010…00最大正數(shù)0111…1111…11非規(guī)格化最大負(fù)數(shù)1000…0011…11規(guī)格化最大負(fù)數(shù)1000…0001…11最小負(fù)數(shù)1111…1100…002/5/202346從數(shù)軸中可見,最大負(fù)數(shù)到最小負(fù)數(shù),最小正數(shù)到最大正數(shù)之間以及

0,為機(jī)器數(shù)所能表達(dá)的數(shù)。

0最小負(fù)數(shù)負(fù)數(shù)區(qū)上溢區(qū)下溢區(qū)正數(shù)區(qū)上溢區(qū)最大負(fù)數(shù)最小正數(shù)最大正數(shù)2/5/202347浮點表示中階碼與尾數(shù)位數(shù)的選擇在浮點數(shù)表示中尾數(shù)的位數(shù)決定了數(shù)據(jù)表示的精度。增加尾數(shù)的位數(shù)可增加有效數(shù)字位數(shù),即提高數(shù)據(jù)表示精度。階碼的位數(shù)決定了數(shù)據(jù)表示的范圍。增加階碼的位數(shù),可擴(kuò)大數(shù)據(jù)表示的范圍。因此當(dāng)字長一定的條件下,必須合理地分配階碼和尾數(shù)的位數(shù),以滿足應(yīng)用的需要。2/5/202348為了得到較高的精度和較大的數(shù)據(jù)表示范圍,在很多機(jī)器中都設(shè)置單精度浮點數(shù)和雙精度浮點數(shù)等不同的浮點數(shù)格式。單精度浮點數(shù)就是用一個字長表示一個浮點數(shù)。雙精度浮點數(shù)是用二個字長表示一個浮點數(shù)。2/5/202349IEEE754浮點數(shù)標(biāo)準(zhǔn)二進(jìn)制浮點數(shù)的表示,由于不同機(jī)器所選用的基值、尾數(shù)位長度和階碼位長度不同,因此對浮點數(shù)表示有較大差別,這就不利于軟件在不同計算機(jī)間的移植。美國IEEE(電氣及電子工程師協(xié)會)為此提出了一個從系統(tǒng)結(jié)構(gòu)角度支持浮點數(shù)的表示方法,稱為IEEE標(biāo)準(zhǔn)754(1EEE,1985),當(dāng)今流行的計算機(jī)幾乎都采用了這一標(biāo)準(zhǔn)。

2/5/202350(3)定點表示與浮點表示的比較1.在字長相同的條件下,浮點表示的數(shù)據(jù)范圍大,精度高。2.浮點運(yùn)算算法復(fù)雜,需要進(jìn)行對階(對齊小數(shù)點)與規(guī)格化,既有尾數(shù)運(yùn)算又有階碼運(yùn)算,算法復(fù)雜,所需設(shè)備量大,運(yùn)算速度慢。2/5/2023513.2定點加減運(yùn)算(1)補(bǔ)碼運(yùn)算的基礎(chǔ)

[x+y]補(bǔ)=[x]補(bǔ)+[y]補(bǔ)

[x-y]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)即:兩數(shù)補(bǔ)碼之和等于兩數(shù)和的補(bǔ)碼兩數(shù)補(bǔ)碼之差等于兩數(shù)差的補(bǔ)碼2/5/202352以定點小數(shù)為例證明上述關(guān)系的正確性。(1)設(shè)x≥0,y≥0,則x+y≥0由補(bǔ)碼定義:[x]補(bǔ)=x,[y]補(bǔ)=y(tǒng),∴[x]補(bǔ)+[y]補(bǔ)=x+y=[x+y]補(bǔ)(2)設(shè)x≥0,y<0且|x|≥|y|由補(bǔ)碼定義:[x]補(bǔ)=x,[y]補(bǔ)=2+y(mod2)∴[x]補(bǔ)+[y]補(bǔ)=2+x+y∵|x|≥|y|,∴x+y≥0[x+y]補(bǔ)=x+y∵2+x+y≥2∴[x]補(bǔ)+[y]補(bǔ)=x+y(mod2)即證得[x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)2/5/202353(3)設(shè)x≥0,y<0且|x|<|y|由補(bǔ)碼定義:[x]補(bǔ)=x,[y]補(bǔ)=2+y(mod2)∴[x]補(bǔ)+[y]補(bǔ)=2+x+y∵|x|<|y|∴x+y<0因此[x+y]補(bǔ)=2+x+y=[x]補(bǔ)+[y]補(bǔ)

(mod2)2/5/202354(4)設(shè)x<0,y<0由補(bǔ)碼定義:[x]補(bǔ)=2+x,[y]補(bǔ)=2+y(mod2)∴[x]補(bǔ)+[y]補(bǔ)=2+x+2+y=2+2+x+y根據(jù)定點數(shù)數(shù)據(jù)表示范圍的要求,舍去模2,得[x]補(bǔ)+[y]補(bǔ)=2+x+y2/5/202355由于x<0,y<0∴x+y<0因而

[x+y]補(bǔ)=2+x+y=[x]補(bǔ)+[y]補(bǔ)當(dāng)x<0,y≥0時,證明方法與(2)、(3)相同。到此得證:[x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)2/5/202356[x-y]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)∵[x+y]補(bǔ)=[x]補(bǔ)+[y]補(bǔ)∴[x]補(bǔ)+[-y]補(bǔ)=[x-y]補(bǔ),所以只要證明[一y]補(bǔ)=-[y]補(bǔ),則[x]補(bǔ)+[-y]補(bǔ)=[x-y]補(bǔ)證明:∵[x+y]補(bǔ)=[x]補(bǔ)+[y]補(bǔ)∴[y]補(bǔ)=[x+y]補(bǔ)-[x]補(bǔ)[x-y]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)∴[-y]補(bǔ)=[x-y]補(bǔ)-[x]樸2/5/202357因此:[y]補(bǔ)+[-y]補(bǔ)=[x+y]補(bǔ)+[x-y]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=[x+y+x-y]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=[x+x]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=[x]補(bǔ)+[x]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=0∴-[y]補(bǔ)=[-y]補(bǔ)2/5/202358補(bǔ)碼運(yùn)算的基本規(guī)則:①參加運(yùn)算的各個操作數(shù)均以補(bǔ)碼表示,運(yùn)算結(jié)果仍以補(bǔ)碼表示。②符號位與數(shù)值位一樣參加運(yùn)算。③若求和,則將兩補(bǔ)碼數(shù)直接相加,得到兩數(shù)之和的補(bǔ)碼;若求差,則將減數(shù)變補(bǔ)(由[y]補(bǔ)求[-y]補(bǔ)),然后與被減數(shù)相加,得到兩數(shù)之差的補(bǔ)碼。④補(bǔ)碼總是對確定的模而言,若運(yùn)算結(jié)果超過模(有從符號位上產(chǎn)生的進(jìn)位),則將模自動丟掉。2/5/202359例1:x=+0.1001,y=+0.0101,求x±y=?解:[x]補(bǔ)=0.1001,[y]補(bǔ)=0.0101,

[-y]補(bǔ)=1.1011[x+y]補(bǔ)=[x]補(bǔ)+[y]補(bǔ)

=0.1001+0.0101=0.1110x+y=0.1110[x-y]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)

=0.1001+1.1011=0.0100x-y=0.01000.10010.0101+0.11100.10011.1011+0.01001丟模2/5/202360例2:x=+0.1010,y=+0.1001,求x+y=?解:[x]補(bǔ)=0.1010,[y]補(bǔ)=0.1001,[x+y]補(bǔ)=[x]補(bǔ)+[y]補(bǔ)

=0.1010+0.1001結(jié)果溢出0.10100.1001+1.00112/5/202361

如果兩個正數(shù)相加,得到結(jié)果的符號為負(fù);兩個負(fù)數(shù)相加,得到的結(jié)果為正,則運(yùn)算結(jié)果是錯誤的。造成錯誤的原因,是因為運(yùn)算結(jié)果超出了機(jī)器所能表示的數(shù)據(jù)范圍,數(shù)值位侵占了符號位,正確符號被擠走了。出現(xiàn)溢出后,機(jī)器將無法正確表示,因此必須正確判別溢出并及時加以處理。2/5/202362

(2)溢出判別a.根據(jù)進(jìn)位判別b.采用變形補(bǔ)碼運(yùn)算2/5/202363a.根據(jù)兩數(shù)相加時產(chǎn)生的進(jìn)位判別設(shè)Cf為符號位上產(chǎn)生的進(jìn)位,C1為最高數(shù)值位上產(chǎn)生的進(jìn)位,則溢出的條件為:OVR=CfC1+CfC1=Cf⊕C1即若進(jìn)入符號位的進(jìn)位和從符號位上產(chǎn)生的進(jìn)位不相等,則產(chǎn)生溢出。2/5/202364b.采用變形補(bǔ)碼運(yùn)算

使用一個符號位進(jìn)行運(yùn)算,當(dāng)出現(xiàn)溢出時,正確的符號將被數(shù)值位侵占,符號位含義就會發(fā)生混亂。如果采用兩個符號位進(jìn)行運(yùn)算,即使因出現(xiàn)溢出侵占了一個符號位,仍能保持最左邊符號是正確的。變形補(bǔ)碼:用兩個符號位表示的補(bǔ)碼。2/5/202365變形補(bǔ)碼的形式:[x]變形補(bǔ)=Xf1Xf2.X1X2…Xn

設(shè)和的變形補(bǔ)碼為[s]變形補(bǔ)=Sf1Sf2.S1S2…Sn

變形補(bǔ)碼的溢出判斷條件:

OVR=Sf1⊕Sf2即當(dāng)結(jié)果的兩個符號位不一致時,出現(xiàn)溢出。Sf1Sf2=00或11表示正常補(bǔ)碼2/5/202366例1:x=+0.1010,y=+0.1001,求x+y=?解:[x]變形補(bǔ)=00.1010,[y]變形補(bǔ)=00.1001,[x+y]變形補(bǔ)=00.1010+00.100100.101000.1001+01.0011正溢出2/5/202367(3)補(bǔ)碼加減運(yùn)算實現(xiàn)電路一位全加器單元

2/5/202368行波進(jìn)位的補(bǔ)碼加/減法器電路2/5/202369M=0Bi通過異或門與0異或,Bi⊕0=Bi,C0=0作A+BM=1Bi通過異或門與1異或,Bi⊕1=Bi,C0=1作A-B電路中采用進(jìn)位進(jìn)行溢出判斷。

OVR=Cf⊕C12/5/2023703.3定點乘法運(yùn)算計算機(jī)中實現(xiàn)乘除運(yùn)算常采用以下三種方式:⑴利用乘除運(yùn)算子程序基本思想:采用軟件實現(xiàn)乘除運(yùn)算。通常是利用計算機(jī)中的加/減運(yùn)算指令、移位指令及控制類指令組成循環(huán)程序,通過在運(yùn)算器中的加法器、移位器等基本部件上的反復(fù)加/減操作,得到運(yùn)算結(jié)果。這種方式所需硬件簡單,但實現(xiàn)速度較慢,主要應(yīng)用在早期的小、微型機(jī)上。2/5/202371⑵在加法器的基礎(chǔ)上增加左、右移位及計數(shù)器等邏輯線路構(gòu)成乘除運(yùn)算部件基本思想:采用硬件實現(xiàn)乘除運(yùn)算。在采用乘除運(yùn)算部件實現(xiàn)乘除運(yùn)算的計算機(jī)中,設(shè)置有乘除運(yùn)算指令,用戶只需執(zhí)行乘除指令即可進(jìn)行乘除運(yùn)算。該方式實現(xiàn)乘除運(yùn)算的速度比第一種方式快,但需要根據(jù)乘除算法構(gòu)建乘除運(yùn)算部件,所需的硬件線路較復(fù)雜。2/5/202372⑶設(shè)置專用的陣列乘除運(yùn)算器方式⑵在實現(xiàn)乘除運(yùn)算時,通常是在一個加法器的基礎(chǔ)上,通過對操作數(shù)多次串行地進(jìn)行運(yùn)算、移位得到運(yùn)算結(jié)果的,依然需要較多的運(yùn)算時間。隨著大規(guī)模集成電路技術(shù)的發(fā)展帶來的硬件成本的降低,出現(xiàn)了專用的陣列乘除運(yùn)算器。陣列乘除運(yùn)算器將多個加減運(yùn)算部件排成乘除運(yùn)算陣列,依靠硬件資源的重復(fù)設(shè)置,同時進(jìn)行多位乘除運(yùn)算的乘除運(yùn)算,贏得了乘除運(yùn)算的高速度。2/5/202373

(1)原碼乘法運(yùn)算在定點機(jī)中,兩個數(shù)的原碼乘法運(yùn)算包括:乘積的符號處理兩數(shù)絕對值相乘設(shè)[x]原=xf.x1x2…xn[y]原=y(tǒng)f.y1y2…yn[Z]原=[x]原×[y]原=zf.z1z2…zn根據(jù)“同號相乘,乘積為正;異號相乘,乘積為負(fù)”,得符號運(yùn)算的表達(dá)式為

zf=xf⊕yf。2/5/202374例:x=0.1101,y=0.1011求x×y=?2/5/202375

兩個4位數(shù)相乘得8位乘積,共4個部分積需8位加法器相加??梢?,兩個n位數(shù)相乘得2n位乘積,共有n個部分積。2n位乘積需用2n位加法器進(jìn)行相加運(yùn)算。n位數(shù)相乘,需n個寄存器保存n個部分積。

顯然所需硬件太多,不適合用硬件去實現(xiàn),為此需對算法加以改進(jìn)。2/5/202376a.一位原碼乘法運(yùn)算x×y=x×0.y1y2y3y4=x×(2-1y1+2-2y2+2-3y3+2-4y4)=x×(2-1y1+2-2y2+2-3y3+2-4y4)=2-1xy1+2-2xy2+2-3xy3+2-4xy4=2-1{2-3xy4+2-2xy3+2-1xy2+xy1}=2-1{2-1[2-2xy4+2-1xy3+xy2]+xy1}=2-1{2-1[2-1(2-1xy4+xy3)+xy2]+xy1}=2-1{2-1[2-1(2-1<0+xy4>+xy3)+xy2]+xy1}2/5/202377根據(jù)上式,可將乘法轉(zhuǎn)換為一系列加法與移位操作。將遞推公式推廣到n位,得:Z0=0(初始部分積為0)Z1=2-1(Z0+xyn)Z2=2-1(Z1+xyn-1)…Zn=2-1(Zn-1+xy1)=x×y2/5/202378原碼一位乘法的算法①

積的符號單獨按兩操作數(shù)的符號異或得到。用被乘數(shù)和乘數(shù)的數(shù)值部分進(jìn)行運(yùn)算。②以乘數(shù)的最低位作為乘法判別位,若判別位為1,則在前次部分積(初始部分積為0)上加上被乘數(shù),然后連同乘數(shù)一起右移一位;若判別位為0,則在前次部分積上加0,然后連同乘數(shù)一起右移一位。③重復(fù)第②步直到運(yùn)算n次為止。(n為乘數(shù)數(shù)值部分的長度)

2/5/202379部分積

乘數(shù)

yn

說明

0.00001011

初始部分積

Z0=0+0.1101

∵乘數(shù)yn=1,∴

加x;

0.11010.01101101

部分積與乘數(shù)同時右移一位;+0.1101

∵乘數(shù)yn=1,∴

加x;

1.00110.10011110

部分積與乘數(shù)同時右移一位;+0.0000

∵乘數(shù)yn=0,∴

加0;

0.10010.0100111

1

部分積與乘數(shù)同時右移一位+0.1101

∵乘數(shù)yn=1,∴

加x;

1.00010.10001111

部分積與乘數(shù)同時右移一位,運(yùn)算了4次,計算結(jié)束。2/5/202380原碼一位乘法的硬件實現(xiàn)2/5/202381b補(bǔ)碼一位乘法

雖然原碼乘法比補(bǔ)碼乘法容易實現(xiàn),但因為補(bǔ)碼加減法簡單,在以加減運(yùn)算為主的通用機(jī)中操作數(shù)都用補(bǔ)碼表示,所以這類計算機(jī)在做乘法時常使用補(bǔ)碼乘法。1.校正法校正法是將[X]補(bǔ)和[Y]補(bǔ)按原碼規(guī)則運(yùn)算,所得結(jié)果根據(jù)情況再加以校正,從而得到正確的[X×Y]補(bǔ)。2/5/202382補(bǔ)碼乘法的統(tǒng)一表達(dá)式:

[X×Y]補(bǔ)=[X]補(bǔ)×(0.Y1Y2…Yn)+[-X]補(bǔ)×Ys2/5/2023832.比較法——Booth乘法

在較正法公式的基礎(chǔ)上,進(jìn)行變換,得:遞推公式:

[Z0]補(bǔ)=0[Z1]補(bǔ)=2-1{[Z0]補(bǔ)+(Yn+1-Yn)[X]補(bǔ)}[Z2]補(bǔ)=2-1{[Z1]補(bǔ)+(Yn-Yn-1)[X]補(bǔ)}

┇[Zn]補(bǔ)=2-1{[Zn-1]補(bǔ)+(Y2-Y1)[X]補(bǔ)}

∴[X×Y]補(bǔ)=[Zn]補(bǔ)+(Y1-Ys)[X]補(bǔ)

2/5/202384Booth乘法規(guī)則:

⑴參加運(yùn)算的數(shù)用補(bǔ)碼表示;⑵符號位參加運(yùn)算;⑶乘數(shù)最低位后面增加一位附加位Yn+1,其初值為0;⑷由于每求一次部分積要右移一位,所以乘數(shù)的最低兩位Yn、Yn+1的值決定了每次應(yīng)執(zhí)行的操作;

⑸移位按補(bǔ)碼右移規(guī)則進(jìn)行;⑹共需做n+1次累加,n次移位,第n+1次不移位。2/5/202385判斷位YnYn+1操作

00原部分積右移一位

01原部分積加[X]補(bǔ)后右移一位

10原部分積加[-X]補(bǔ)后右移一位

11原部分積右移一位2/5/202386C快速乘法運(yùn)算隨著大規(guī)模集成電路技術(shù)的發(fā)展,為提高乘法的運(yùn)算速度,出現(xiàn)了陣列乘法器。1.不帶符號的陣列乘法器設(shè)有兩個不帶符號的二進(jìn)制整數(shù):A=a3a2a1a0B=b3b2b1b0按手算方法有:2/5/2023872/5/202388陣列乘法器的基本思想

為避免重復(fù)的相加與移位操作,提高乘法運(yùn)算速度,將大量的加法器單元電路按一定的陣列形式排列起來,直接實現(xiàn)乘法算式。2/5/2023894×4位無符號數(shù)陣列乘法器的邏輯原理圖2/5/2023902.帶符號的陣列乘法器帶符號的陣列乘法器由不帶符號的陣列乘法器和求補(bǔ)器構(gòu)成。帶符號陣列乘法器可以實現(xiàn)原碼乘法,也可以實現(xiàn)補(bǔ)碼乘法。2/5/2023912/5/202392在原碼乘法中,不用算前求補(bǔ)器與算后求補(bǔ)器,直接把兩數(shù)絕對值送入乘法陣列計算,得到2n位乘積絕對值,再根據(jù)異或門輸出值帶入符號,即得到乘積的原碼。在補(bǔ)碼乘法中,由兩個算前求補(bǔ)器先將兩個補(bǔ)碼數(shù)轉(zhuǎn)換為兩數(shù)絕對值,再送入不帶符號的乘法陣列計算,得到2n位乘積絕對值。然后根據(jù)異或門輸出值控制算后求補(bǔ)器求補(bǔ),得到2n+1位的補(bǔ)碼形式的乘積。2/5/202393=1&E≥1=1&≥1=1&≥1=1&C-1=0對2求補(bǔ)器邏輯電路圖C0C1C22/5/2023943.4定點除法運(yùn)算

除法運(yùn)算的處理思想與乘法運(yùn)算的處理思想相似,其常規(guī)算法也是轉(zhuǎn)換成若干次“加減—移位”循環(huán)來實現(xiàn)。由于定點運(yùn)算的結(jié)果不應(yīng)超過機(jī)器的所能表示的數(shù)據(jù)范圍,所以為了不使商產(chǎn)生溢出,在進(jìn)行定點除法時應(yīng)滿足:

對定點小數(shù)要求:

|被除數(shù)|<|除數(shù)|

對定點整數(shù)要求:|被除數(shù)|>|除數(shù)|

2/5/2023953.4.1原碼除法運(yùn)算例:x=0.1011,y=0.1101求x/y∴商q=0.1101余數(shù)

r=0.000001112/5/202396上面的筆算過程可敘述如下:1.判斷x是否小于y?現(xiàn)在x<y,故商的整數(shù)位商“0”,x的低位補(bǔ)0,得余數(shù)r0。2.比較r0和2-1y,因r0>2-1y,表示夠減,小數(shù)點后第一位商“1”,作r0-2-1y,得余數(shù)r1。3.比較r1和2-2y,因r1>2-2y,表示夠減,小數(shù)點后第二位商“1”,作r1-2-2y,得余數(shù)r2。2/5/2023974.比較r2和2-3y,因r2<2-3y,不夠減,小數(shù)點后第三位商“0”,不作減法,得余數(shù)r3(=r2)。5.比較r3和2-4y,因r3>2-4y,表示夠減,小數(shù)點后第四2位商“1”,作r3-2-4y,得余數(shù)r4,共求四位商,至此除法完畢。2/5/202398在計算機(jī)中可參照手算過程實現(xiàn)除法,但需解決的問題有:(1)在手算過程中,余數(shù)和除數(shù)的大小比較是通過心算得到,而在計算機(jī)實現(xiàn)中要增加比較電路。(2)可以通過減法進(jìn)行余數(shù)和除數(shù)的比較,若結(jié)果為正,表示夠減,商1;但若減的結(jié)果為負(fù),表示不夠減,上商為0,但余數(shù)已經(jīng)減去了,下一步該如何處理?2/5/202399(3)如果每次減法均采用余數(shù)不動,低位補(bǔ)0,再與右移一位后的除數(shù)相減,則所需的加法器必須是除數(shù)的兩倍,這將使加法器的規(guī)模增大。(4)在手算過程中,上商是從高位向低位逐位求的,而在計算機(jī)中要求把每位商直接寫到寄存器的不同位是較難控制的。2/5/2023100實際計算機(jī)實現(xiàn)除法時,一般采用:①通過做減法來進(jìn)行比較余數(shù)和除數(shù)的比較,即用余數(shù)(初值為被除數(shù))減去除數(shù),若減得結(jié)果為正,表示夠減,上商為1;若減得結(jié)果為負(fù),表示不夠減,上商為0。②采用恢復(fù)余數(shù)法或不恢復(fù)余數(shù)法解決余數(shù)減去除數(shù)后不夠減的問題。2/5/2023101③在余數(shù)不動,低位補(bǔ)0,再與右移一位后的除數(shù)相減的操作中,用左移余數(shù)方法代替右移除數(shù)操作。這樣操作,實際運(yùn)算結(jié)果是一樣的,但對線路結(jié)構(gòu)更有利。不過這樣操作所得到的余數(shù)不是真正的余數(shù),必須將它乘上2-n才是真正的余數(shù)。④為了便于控制,可以在運(yùn)算過程中通過將每次得到的商直接寫到寄存器的最低位并與前面運(yùn)算所得到部分商一起左移一位的方法實現(xiàn)商的定位。2/5/20231021.原碼恢復(fù)余數(shù)法

原碼恢復(fù)余數(shù)法算法:(定點小數(shù))①判溢出,要求|被除數(shù)|<|除數(shù)|;②符號位單獨按兩數(shù)符號的異或求得;③被除數(shù)減去除數(shù);④若所得余數(shù)為正,表示夠減,相應(yīng)位上商為1,余數(shù)左移一位(相當(dāng)于除數(shù)右移)減去除數(shù);若所得余數(shù)為負(fù),表示不夠減,相應(yīng)位上商為0,余數(shù)加上除數(shù)(恢復(fù)余數(shù)),再左移一位減去除數(shù);2/5/2023103⑤重復(fù)第④步,直到求得所要求的商的各位為止。例:x=-0.1011y=+0.1101用原碼恢復(fù)余數(shù)法求x/y.解:|x|=00.1011|y|=00.1101[-|y|]補(bǔ)=11.0011

2/5/20231042/5/2023105得商|q|=0.1101,余數(shù)|r|=0.0111商的符號qf=xf⊕yf=1⊕0=1∴商[q]原=1.1101余數(shù)[r]原=1.0111×2-4注意:余數(shù)符號與被除數(shù)符號相一致。2/5/2023106在恢復(fù)余數(shù)法中:余數(shù)為正時,需作余數(shù)左移、相減,共兩步操作;余數(shù)為負(fù)時,需作相加、左移、相減,三步操作。由于操作步驟的不一致,控制復(fù)雜。且恢復(fù)余數(shù)的過程也降低了除法速度。因此在實際應(yīng)用中,很少采用恢復(fù)余數(shù)法。2/5/20231072.原碼不恢復(fù)余數(shù)法(加減交替法)

在恢復(fù)余數(shù)法中,若某次余數(shù)ri<0,它的操作是相加(恢復(fù)余數(shù))→左移→減除數(shù),結(jié)果是2(ri+y)-y。把它變換一下,即

2(ri+y)-y=2ri+2y-y=2ri+y

2/5/2023108

將原碼恢復(fù)余數(shù)法中余數(shù)ri<0時的操作——相加、左移、相減三步,用左移、相加兩步來代替。這樣:余數(shù)為正,左移,減除數(shù);

余數(shù)為負(fù),左移、加除數(shù)。2/5/2023109原碼不恢復(fù)余數(shù)法算法①判溢出,若|被除數(shù)|≥|除數(shù)|,則除法將發(fā)生溢出,不能進(jìn)行除法運(yùn)算;②商的符號單獨按兩個操作數(shù)符號異或求得;③被除數(shù)減去除數(shù);2/5/2023110④若所得余數(shù)為正,夠減,相應(yīng)位上商為1,將余數(shù)左移一位減去除數(shù);若所得余數(shù)為負(fù),不夠減,相應(yīng)位上商為0,將余數(shù)左移一位加上除數(shù);⑤重復(fù)第④步,直到求得所要求的商的各位為止。2/5/2023111在原碼不恢復(fù)余數(shù)法中,如果最后一次所得余數(shù)仍為負(fù),表示不夠減,這時需要再做一次加除數(shù)的操作,以便得到正確的余數(shù)。2/5/2023112例

x=0.10101,y=0.11110,用原碼不恢復(fù)余數(shù)法求x/y。解:|x|=00.10101|y|=00.11110[-|y|]補(bǔ)=11.000102/5/2023113余數(shù)上商說明

00.101010.00000初始余數(shù)為被除數(shù),初始商為0+11.00010

減y11.101110.00000

余數(shù)為負(fù),上商為011.011100.00000左移一位+00.11110

加y00.011000.00001

余數(shù)為正,上商為100.110000.00010左移一位+11.00010

減y11.110100.00010

余數(shù)為負(fù),上商為011.101000.00100左移一位+00.11110

加y00.100100.00101

余數(shù)為正,上商為101.001000.01010左移一位+11.00010

減y00.001100.01011

余數(shù)為正,上商為100.011000.10110左移一位+11.00010

減y11.011100.10110

余數(shù)為負(fù),上商為0+00.11110

最后一步,余數(shù)為負(fù),加y恢復(fù)余數(shù)

00.011002/5/2023114商符qf=xf⊕yf=0⊕0=0商:|x/y|=0.10110x/y=0.10110余數(shù):r=0.01100×2-52/5/2023115原碼不恢復(fù)余數(shù)法的硬件實現(xiàn)2/5/2023116

A寄存器:存放被除數(shù),最終結(jié)果是余數(shù)。

B寄存器:存放除數(shù)。

C寄存器:存放被除數(shù),最終結(jié)果是商。運(yùn)算過程中寄存器A、C聯(lián)合左移。商的符號Cf:Cf=Af⊕Bf上商由加法器Ff控制,F(xiàn)f=0,為正,上商為1,且控制進(jìn)行A+B+1操作;Ff=1,為負(fù),上商為0,控制進(jìn)行A+B操作2/5/2023117以上算法同樣適用于定點整數(shù)除法。實現(xiàn)定點整數(shù)除法時,注意要滿足|被除數(shù)|>|除數(shù)|,且被除數(shù)的高n位要比n位除數(shù)小,否則即為溢出。在實現(xiàn)定點小數(shù)和定點整數(shù)除法時,寄存器的分配使用略有不同。2/5/20231183.4.2并行除法器(陣列除法器)與陣列乘法器相類似,利用大規(guī)模集成電路技術(shù),可制成陣列除法器組件。陣列除法器:利用若干個加減單元組成陣列,并行操作,從而提高除法運(yùn)算速度。2/5/20231191.可控加減單元(CAS)的邏輯框圖2/5/2023120當(dāng)控制信號P=0時,CAS作為全加器單元;當(dāng)P=1時,輸入Bi被變反,CAS作為減法單元。設(shè):被除數(shù)x=0.x1x2x3x4x5x6

除數(shù)y=0.y1y2y3

商q=0.q1q2q3

余數(shù)R=0.00r3r4r5r6

用CAS單元組成的6位除3位不恢復(fù)余數(shù)法的陣列除法器框圖如下。2/5/20231212/5/2023122(1)因為最上面一行所執(zhí)行的初始操作經(jīng)常是減法,所以最上面一行的控制線P固定置成1。減法是用2的補(bǔ)碼運(yùn)算實現(xiàn)的,這時右端各CAS單元上的反饋線用作初始的進(jìn)位輸入,即最低位上加1。(2)每一行最左邊的CAS單元的進(jìn)位輸出決定著商的數(shù)值。2/5/2023123(3)在不恢復(fù)余數(shù)陣列除法器中,若余數(shù)為正,表示夠減,上商為1,將除數(shù)右移作減法;若余數(shù)為負(fù),表示不夠減,上商為0,將除數(shù)右移作加法。(4)將當(dāng)前的商反饋到下一行,就可確定下一行的操作是加法還是減法。2/5/2023124例:x=0.101001,y=0.111,求x/y解:[-y]補(bǔ)=1.001經(jīng)運(yùn)算得:商q=q0.q1q2q3=0.101

余數(shù)r=0.000110具體運(yùn)算見下:2/5/20231250.1010011.001+[-y]補(bǔ)

1.110001<0q0=00.0111+[y]補(bǔ)

0.001101>0q1=11.11001+[-y]補(bǔ)

1.111111<0q2=00.000111+[y]補(bǔ)0.000110>0q3=1被除數(shù)x減除數(shù)Y,即+[-y]補(bǔ)余數(shù)為負(fù),商0,除數(shù)右移加余數(shù)為正,商1,除數(shù)右移減余數(shù)為負(fù),商0,除數(shù)右移加余數(shù)為正,商12/5/20231263.5定點運(yùn)算器的組成運(yùn)算器是CPU的重要組成部分,盡管各種計算機(jī)的運(yùn)算器不盡相同,但它們的最基本結(jié)構(gòu)中必須有算術(shù)/邏輯運(yùn)算單元(ALU)。2/5/2023127(1)多功能算術(shù)/邏輯單元算術(shù)邏輯運(yùn)算單元(簡稱ALU)就是一種以加法器為基礎(chǔ)的多功能組合邏輯電路。其基本設(shè)計思想是:在加法器的輸入端加入一個函數(shù)發(fā)生器,這個函數(shù)發(fā)生器可以在多個控制信號的控制下,為加法器提供不同的輸入函數(shù),從而構(gòu)成一個具有較完善的算術(shù)邏輯運(yùn)算功能的運(yùn)算部件。2/5/20231282/5/2023129

74181電路

SN74181是一個4位ALU組件,它可以實現(xiàn)16種算術(shù)運(yùn)算功能和16種邏輯運(yùn)算功能,其具體功能由S3、S2、S1、S0和M信號控制實現(xiàn)。

SN74181有正邏輯和負(fù)邏輯兩種芯片,圖3-4給出了采用負(fù)邏輯方式工作的SN74181芯片的外部特性。2/5/20231302/5/2023131其中A3~0、B3~0為參加運(yùn)算的兩組4位操作數(shù);Cn為低位來的進(jìn)位;F3~0為輸出的運(yùn)算結(jié)果;Cn+4為向高位的進(jìn)位;G為小組本地進(jìn)位;P為小組傳遞函數(shù);A=B用于輸出兩個操作數(shù)的相等情況,如果將多個74181的“A=B”端按“與”邏輯連接,就可以檢測兩個字長超過4位的操作數(shù)的相等情況。在控制信號中,S3S2S1S0用于控制產(chǎn)生16種不同的邏輯函數(shù);M用于控制芯片執(zhí)行算術(shù)運(yùn)算還是邏輯運(yùn)算,若M=0,則允許位間進(jìn)位,執(zhí)行算術(shù)運(yùn)算;若M=1,則封鎖位間進(jìn)位,執(zhí)行邏輯運(yùn)算。2.74181功能表2/5/20231322/5/2023133(2)定點運(yùn)算器基本結(jié)構(gòu)

運(yùn)算器結(jié)構(gòu)的基本組成部分:包括ALU、寄存器、多路開關(guān)和數(shù)據(jù)總線等基本邏輯部件。運(yùn)算器設(shè)計主要是圍繞著ALU和寄存器同數(shù)據(jù)總線之間如何傳送操作數(shù)和運(yùn)算結(jié)果而進(jìn)行的。

2/5/2023134單總線結(jié)構(gòu)運(yùn)算器單總線結(jié)構(gòu)運(yùn)算器:所有部件都接在同一總線上。在同一時間內(nèi),只能有一個操作數(shù)放在單總線上,所以需要A、B兩個緩沖器。執(zhí)行雙操作數(shù)運(yùn)算的操作步驟:①把一個操作數(shù)送入A緩沖器。②把另一操作數(shù)送入B緩沖器,只有兩個操作數(shù)同時出現(xiàn)在ALU的輸入端時,ALU才能正確執(zhí)行相應(yīng)運(yùn)算,并將運(yùn)算結(jié)果送上單總線。2/5/2023135③把結(jié)果存入目的寄存器中。單總線結(jié)構(gòu)運(yùn)算器的主要缺點是操作速度慢。2/5/2023136單總線結(jié)構(gòu)運(yùn)算器2/5/2023137雙總線結(jié)構(gòu)運(yùn)算器雙總線結(jié)構(gòu)運(yùn)算器:操作部件連接在兩組總線上。執(zhí)行雙操作數(shù)運(yùn)算的操作步驟:①兩個操作數(shù)同時加到ALU輸入端進(jìn)行運(yùn)算,一步完成操作并得到結(jié)果。但ALU輸出不能直接加到數(shù)據(jù)總線上,需要用輸出緩沖器暫存運(yùn)算結(jié)果。②把結(jié)果從緩沖器中傳送到目標(biāo)寄存器中。雙總線結(jié)構(gòu)運(yùn)算器的執(zhí)行速度比單總線結(jié)構(gòu)運(yùn)算器的執(zhí)行速度快。2/5/2023138雙總線結(jié)構(gòu)運(yùn)算器2/5/2023139三總線結(jié)構(gòu)運(yùn)算器三總線結(jié)構(gòu)運(yùn)算器:操作部件連接在三組總線上。執(zhí)行雙操作數(shù)運(yùn)算的操作步驟:由于三總線結(jié)構(gòu)運(yùn)算器有三組總線,能夠分別接收兩個操作數(shù)和ALU結(jié)果,因此只需一步就可完成一次雙操作數(shù)運(yùn)算。與前兩種結(jié)構(gòu)的運(yùn)算器相比較,三總線結(jié)構(gòu)運(yùn)算器的操作速度最快,不過其控制也更復(fù)雜。2/5/2023140三總線結(jié)構(gòu)運(yùn)算器2/5/2023141運(yùn)算器實驗(實驗一)介紹1.實驗?zāi)康?1)了解運(yùn)算器的組成結(jié)構(gòu),學(xué)習(xí)運(yùn)算器的設(shè)計方法。(2)掌握簡單運(yùn)算器的數(shù)據(jù)傳送通路。(3)驗證運(yùn)算功能發(fā)生器(74LS181)的組合功能,驗證移位控制的組合功能。2/5/20231422.實驗儀器

TDN-CM+計算機(jī)組成原理教學(xué)實驗系統(tǒng)一臺,排線若干。

3.實驗中的運(yùn)算器通路圖2/5/20231432/5/2023144圖中運(yùn)算器由兩片74LS181以并/串形式構(gòu)成8位字長的ALU。運(yùn)算器的輸出經(jīng)過一個三態(tài)門(74LS245)和數(shù)據(jù)總線相連,運(yùn)算器的兩個數(shù)據(jù)輸入端分別由兩個鎖存器(74LS273)鎖存,鎖存器的輸入連至數(shù)據(jù)總線,數(shù)據(jù)開關(guān)(INPUTDEVICE)用來給出參與運(yùn)算的數(shù)據(jù),并經(jīng)過一三態(tài)門(74LS245)和數(shù)據(jù)總線相連,數(shù)據(jù)顯示燈(BUSUNIT)已和數(shù)據(jù)總線相連,用來顯示數(shù)據(jù)總線內(nèi)容。2/5/20231454.實驗步驟(1)按實驗指導(dǎo)書圖連接實驗線路,仔細(xì)查線無誤后,接通電源。(2)用二進(jìn)制數(shù)碼開關(guān)向DR1和DR2寄存器置數(shù)。具體操作步驟:向DR1置數(shù)(00000100):設(shè)置輸入開關(guān)(置數(shù))ALU-B=1SW-B=0LDDR1=1LDDR2=0kk2+2/5/2023146向DR2置數(shù)(00000011):設(shè)置輸入開關(guān)(置數(shù))ALU-B=1SW-B=0LDDR1=0LDDR2=1kk2+ALU-B:取低電平時,運(yùn)算結(jié)果輸出到總線。SW-B:取低電平時,開關(guān)上的數(shù)據(jù)通過三態(tài)門進(jìn)入內(nèi)總線。。2/5/2023147LDDR1、LDDR2:鎖存器控制端,當(dāng)為高電平,且T4脈沖到來時,總線上的數(shù)據(jù)鎖存至DR1或DR2。Kk2+:即T4脈沖。(3)改變運(yùn)算器的功能設(shè)置,觀察運(yùn)算結(jié)果a.SW-B=1、ALU-B=0(為什么?)b.根據(jù)運(yùn)算要求查74LS181功能表設(shè)置S3、S2、S1等,觀察數(shù)據(jù)顯示燈的結(jié)果是否與期望的一致。(要求做加法、減法、異或運(yùn)算)2/5/2023148移位運(yùn)算實驗按實驗指導(dǎo)書上的步驟,將移位寄存器的初始置設(shè)為01101011,按功能表驗證循環(huán)右移、帶進(jìn)位循環(huán)右移、循環(huán)左移、帶進(jìn)位循環(huán)左移。2/5/2023149實驗報告格式(1)實驗?zāi)康模?)實驗設(shè)備(3)實驗原理(4)實驗步驟(5)實驗結(jié)果與分析2/5/20231503.6浮點運(yùn)算方法

浮點運(yùn)算表示數(shù)據(jù)范圍大,有效精度高,適合于科學(xué)與工程計算的需要。浮點運(yùn)算復(fù)雜,硬件成本高,運(yùn)算速度慢。在浮點運(yùn)算中,階碼與尾數(shù)的運(yùn)算分別進(jìn)行,與定點運(yùn)算類似。但增加了階碼的定點運(yùn)算和結(jié)果的規(guī)格化處理。浮點運(yùn)算分為規(guī)格化運(yùn)算和非規(guī)格化運(yùn)算兩類。

2/5/20231513.6.1浮點加減運(yùn)算設(shè)有兩個浮點數(shù)x與y,分別為

其中Sx、Sy分別為數(shù)x、y的尾數(shù),ex、ey分別為數(shù)x、y的階碼。兩個浮點數(shù)加減運(yùn)算的步驟1.對階把兩數(shù)的小數(shù)點對齊,稱為對階。2/5/2023152對階時,首先應(yīng)求出兩數(shù)階碼之差,即

若△e=0,表示兩數(shù)階碼相等,小數(shù)點已經(jīng)對齊;若△e>0,表示ex>ey;若△e<0,表示ex<ey;

對階的基本方法是:小階向大階看齊,即將階碼小的數(shù)的尾數(shù)向右移位,每右移一位,階碼加1,直到兩數(shù)的階碼相等為止。右移位數(shù)等于兩數(shù)階碼之差|△e|。2/5/20231532.尾數(shù)求和/差對階完畢,兩數(shù)階碼相等,即可對其尾數(shù)進(jìn)行加/減運(yùn)算。尾數(shù)運(yùn)算的規(guī)則與定點加/減運(yùn)算規(guī)則相同。2/5/20231543.結(jié)果規(guī)格化在規(guī)格化浮點運(yùn)算中,若運(yùn)算結(jié)果不是規(guī)格化數(shù),必須進(jìn)行規(guī)格化處理。原碼表示中,滿足1/2≤|S|<1的數(shù)為規(guī)格化數(shù).

補(bǔ)碼表示中,滿足一1≤S<-1/2和1/2≤S<1的數(shù)為規(guī)格化數(shù).

規(guī)格化可分為:向左規(guī)格化與向右規(guī)格化

2/5/20231554.舍入

為減少對階和向右規(guī)格化時,因尾數(shù)右移而造成的誤差,可進(jìn)行舍入處理。舍入的原則:⑴誤差不超過所允許的范圍,一般要求不超過最

溫馨提示

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

評論

0/150

提交評論