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

下載本文檔

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

文檔簡介

§2.2定點(diǎn)加法、減法運(yùn)算一、補(bǔ)碼的加減法運(yùn)算1、加法

任意兩個數(shù)的補(bǔ)碼之和,等于該兩數(shù)和的補(bǔ)碼。[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)(mod2)兩個數(shù)不管正負(fù),均用補(bǔ)碼表示,符號位應(yīng)當(dāng)做數(shù)值參加運(yùn)算,符號位相加所產(chǎn)生的進(jìn)位要丟掉,結(jié)果為補(bǔ)碼。1可以證明:[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)[-Y]補(bǔ)的求法:將[Y]補(bǔ)連同符號位求反加1。例:X=1001Y=0101,求X+Y=?解:[X]補(bǔ)=01001[Y]補(bǔ)=00101[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=01001+00101=01110例:X=1001Y=-0101,求X+Y=?解:[X]補(bǔ)=01001[Y]補(bǔ)=11011[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=01001+11011=001102定點(diǎn)運(yùn)算器——定點(diǎn)加減法例:X=0.1011Y=-0.0101,求X+Y=?解:[X]補(bǔ)=0.1011[Y]補(bǔ)=1.1011+011010.丟到1

[X]補(bǔ)+[Y]補(bǔ)=0.0110X+Y=0.01103定點(diǎn)運(yùn)算器——定點(diǎn)加減法例:X=-11001,Y=-00011,求X+Y=?解:[X]補(bǔ)=100111[Y]補(bǔ)=111101+001011丟到1

[X]補(bǔ)+[Y]補(bǔ)=100100X+Y=-111000由以上兩例看到,補(bǔ)碼加法的特點(diǎn):一是符號位要作為數(shù)的一部分一起參加運(yùn)算。二是要在模2的意義下相加,即超過2的進(jìn)位要丟掉!4定點(diǎn)運(yùn)算器——定點(diǎn)加減法補(bǔ)碼的減法:[X]補(bǔ)-[Y]補(bǔ)=[X+(-Y)]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)(-Y)的補(bǔ)碼稱為[Y]補(bǔ)的機(jī)器負(fù)數(shù),由[Y]補(bǔ)求[-Y]補(bǔ)的過程稱為將[Y]補(bǔ)“變補(bǔ)”或?qū)Y]補(bǔ)求補(bǔ),由[Y]補(bǔ)求[-Y]補(bǔ)的方法是,不管Y的真值為正或?yàn)樨?fù),都是將[Y]補(bǔ)的各位連同符號位在內(nèi)全變反后,最低位加1。5定點(diǎn)運(yùn)算器——定點(diǎn)加減法例:X=-0.1011Y=-0.0110,求X-Y=?解:[X]補(bǔ)=1.0101[-Y]補(bǔ)=0.0110+11011.[X-Y]補(bǔ)=1.1011X-Y=-0.01016二、溢出及其判別方法在計算機(jī)中,由于機(jī)器碼的尾數(shù)通常是給定的(如16位字長,32位字長),因此,在計算機(jī)中數(shù)的表示范圍是有限的,若兩數(shù)進(jìn)行加減運(yùn)算的結(jié)果超出了給定的取值范圍,就稱為溢出。一旦出現(xiàn)溢出,必須及時處理,否則會出現(xiàn)錯誤。71、溢出例1:X=1010Y=1001求X+Y解:[X]補(bǔ)=01010+[Y]補(bǔ)=0100110011例2:X=-1010Y=-1011求X+Y解:[X]補(bǔ)=10110+[Y]補(bǔ)=1010101011較大正數(shù)相加產(chǎn)生進(jìn)位,影響符號位較大的負(fù)數(shù)對應(yīng)較小的正數(shù)補(bǔ)碼相加無進(jìn)位,符號位自己相加82、溢出原因:1)兩個正數(shù)太大:產(chǎn)生進(jìn)位而改變了符號位;2)兩個負(fù)數(shù)絕對值太大:對應(yīng)的補(bǔ)碼太小,不能向符號位產(chǎn)生進(jìn)位,使符號位相加后,向前產(chǎn)生進(jìn)位。1、兩異號數(shù)相加或兩同號數(shù)相減是否會產(chǎn)生溢出?2、僅當(dāng)兩同號數(shù)相加或兩異號數(shù)相減時才有可能產(chǎn)生溢出?問題:決不會產(chǎn)生溢出正確9例:X=-0.100Y=-0.101,求X+Y=?解:[X]補(bǔ)=1.100[Y]補(bǔ)=1.011+11110.丟到1兩負(fù)數(shù)相加,結(jié)果應(yīng)為負(fù)數(shù),但運(yùn)算結(jié)果為正數(shù),表明有溢出發(fā)生。數(shù)據(jù)向前無進(jìn)位,符號位向前有進(jìn)位3、溢出的判斷1)采用單符號位的判斷方法10例:X=100,Y=-110,求X-Y=?解:[X]補(bǔ)=0100[-Y]補(bǔ)=0110+011一個正數(shù)減去一個負(fù)數(shù),結(jié)果為正數(shù),但計算結(jié)果為負(fù)數(shù),表明有溢出發(fā)生,出錯數(shù)據(jù)向前有進(jìn)位,符號位向前無進(jìn)位0溢出邏輯表達(dá)式為:V=Cf⊕C0

(其中Cf為符號位產(chǎn)生的進(jìn)位,C0為最高有效位產(chǎn)生的進(jìn)位)11溢出的原因:之所以發(fā)生錯誤,是因?yàn)檫\(yùn)算結(jié)果產(chǎn)生了溢出。兩個正數(shù)相加,結(jié)果大于機(jī)器所能表示的最大正數(shù),稱為上溢。而兩個負(fù)數(shù)相加,結(jié)果小于機(jī)器所能表示的最小負(fù)數(shù),稱為下溢。為了判斷“溢出”是否發(fā)生,可采用兩種檢測的方法。第一種方法是采用雙符號位法,這稱為“變形補(bǔ)碼”或“模4補(bǔ)碼”。從而可使模2補(bǔ)碼所能表示的數(shù)的范圍擴(kuò)大一倍。12定點(diǎn)運(yùn)算器——定點(diǎn)加減法采用雙符號位的判斷方法每個操作數(shù)的補(bǔ)碼符號用兩個二進(jìn)制數(shù)表示,稱為交形補(bǔ)碼,用“00”表示正數(shù),“11”表示負(fù)數(shù),左邊第一位叫第一符號位,右邊第一位稱為第二符號位,兩個符號位同時參加運(yùn)算,如果運(yùn)算結(jié)果兩符號位相同,則沒有溢出發(fā)生。如果運(yùn)算結(jié)果兩符號位不同,則表明產(chǎn)生了溢出?!?0”表示負(fù)溢出(下溢出),說明運(yùn)算結(jié)果為負(fù)數(shù),“01”表示正溢出(下溢出),說明運(yùn)算結(jié)果為正數(shù)。13定點(diǎn)運(yùn)算器——定點(diǎn)加減法采用雙符號位的判斷方法

高符號位低符號位

結(jié)果00正01上溢10下溢11負(fù)14定點(diǎn)運(yùn)算器——定點(diǎn)加減法利用進(jìn)位值的判斷方法兩補(bǔ)碼數(shù)進(jìn)行加減運(yùn)算時,若最高數(shù)值位產(chǎn)生向符號的進(jìn)位而符號位不產(chǎn)生進(jìn)位時,發(fā)生正溢出,若最高數(shù)值位無進(jìn)位而符號位有進(jìn)位時,發(fā)生負(fù)溢出。15例:X=+0.1100Y=+0.1000,求X+Y=?解:[X]補(bǔ)=00.1100[Y]補(bǔ)=00.1000+01.0100正數(shù)太大了,向前有進(jìn)位,而符號位向前無進(jìn)位;兩個符號位:01,表示溢出16例:X=-0.1100Y=-0.1000,求X+Y=?解:[X]補(bǔ)=11.0100[Y]補(bǔ)=11.1000+10.1100負(fù)數(shù)絕對值太大了對應(yīng)的補(bǔ)碼小,向前無進(jìn)位,而符號位向前有進(jìn)位;兩個符號位:10,表示溢出溢出邏輯表達(dá)式為:V=Sf1⊕Sf2

(其中Sf1為最高符號位,Sf2為第二符號位)17由此可以得出如下結(jié)論:1.當(dāng)以模4補(bǔ)碼運(yùn)算,運(yùn)算結(jié)果的二符號位相異時,表示溢出;相同時,表示未溢出。2.模4補(bǔ)碼相加的結(jié)果,不論溢出與否,最高符號位始終指示正確的符號。18三、基本的加法/減法器1、一位全加器FAAiBiCiCi+1Si向高位進(jìn)位本位輸出結(jié)果輸入輸出AiBiCiSiCi+10000000110010100110110010101011100111111表2.2一位全加器真值表兩個輸出端的邏輯表達(dá)式:Si=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi19Si=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi按此表達(dá)式組成的一位全加器示圖:Ci+1=(Ai⊕Bi)CiAiBi20n個1位的全加器(FA)可級聯(lián)成一個n位的行波進(jìn)位加減器。M為方式控制輸入線,當(dāng)M=0時,作加法(A+B)運(yùn)算;當(dāng)M=1時,作減法(A-B)運(yùn)算,在后一種情況下,A-B運(yùn)算轉(zhuǎn)化成[A]補(bǔ)+[-B]補(bǔ)運(yùn)算,求補(bǔ)過程由B+1來實(shí)現(xiàn)。21單符號位判溢出雙符號正溢出0.100100.1001+0.110000.11001.010110.0101負(fù)溢出1.011111.0111+1.0011+11.001110.101010.101022補(bǔ)碼加減法的邏輯實(shí)現(xiàn)圖示:n個1位全加器組成。單符號位判溢出。V=c0⊕

c1雙符號位判溢出。V=Sf1⊕Sf2y0y1V=1cn=0做加法c0=1做減法(求反加1)23定點(diǎn)運(yùn)算器——定點(diǎn)乘法定點(diǎn)原碼一位乘法設(shè)被乘數(shù)[X]原=XfXn-1Xn-2……X1X0乘數(shù)[Y]原=YfYn-1Yn-2…Y1Y0乘積[X]原=ZfZ2n-1Z2n-2……Z1Z0運(yùn)算原則:同號相乘為正,異號相乘為負(fù),符號可按:異或運(yùn)算得到,數(shù)值部分的運(yùn)算方法與普通的十進(jìn)制乘數(shù)相類似。24定點(diǎn)運(yùn)算器——定點(diǎn)乘法手工算法0.11010.1011×1101110100001101+100011110.l

兩個n位數(shù)相乘,其積為2n位,則需要2n位長的加法器,這不適用于定點(diǎn)機(jī)的形式。l

機(jī)器一次只能進(jìn)行兩個數(shù)的相加,不能進(jìn)行多個數(shù)據(jù)的加法。l

手工計算中,乘數(shù)的每一位是0還是1都可直接看見,而在計算機(jī)中,采用放乘數(shù)的寄存器的每一位直接決定本次相加數(shù)是被乘數(shù)還是0是很不方便的,若采用該寄存器的最低一位來執(zhí)行這種判斷就簡便了。25定點(diǎn)運(yùn)算器——定點(diǎn)乘法運(yùn)算法則:

計算機(jī)中執(zhí)行乘法時,積的符號位由被乘數(shù)和乘數(shù)的符號位通過一個半加器實(shí)現(xiàn)。數(shù)值部分的運(yùn)算規(guī)則是:從最低位Y0開始,當(dāng)乘數(shù)Yi為1時,將上次部分積加上被乘數(shù)的絕對值,然后右移一位,得到新的部分積;當(dāng)Yi為0時,則寫下全0。然后再對乘數(shù)Y的高一位進(jìn)行類似乘法運(yùn)算。重復(fù)“加—右移”操作N次,可得到最后的乘積。26定點(diǎn)運(yùn)算器——定點(diǎn)乘法例:X=0.1101,Y=0.1011,求X*Y=?解:|X|=00.1101|Y|=00.1011部分積乘數(shù)說明00.000000.1101+Yf101100.110100.011000.1101→+01.001100.100100.0000+00.100100.010000.110101.000100.1000→→+→1Yf10111Yf10111Yf11111YfZ0=0Y0=1,+XY2=1,+XY1=0,+0Y0=1,+X右移,得Z1右移,得Z2右移,得Z3右移,得Z4=X*Y27定點(diǎn)運(yùn)算器——定點(diǎn)乘法結(jié)果:

計算:X=-0.1101Y=0.0110,用原碼陣列乘法器求X*Y?X*Y=0.10001111X*Y=1.0100111028定點(diǎn)運(yùn)算器——定點(diǎn)乘法原碼一位乘法的邏輯電路圖R0存放部分積,R2存放被乘數(shù),R1存放乘數(shù)。一、

R0清零,R2存放被乘數(shù),R1存放乘數(shù)。乘法開始時,“啟動”信號時控制CX置1,于是開啟時序脈沖T,當(dāng)乘數(shù)寄存其R1最末位為“1“時,部分積Z和被乘數(shù)X在加法器中相加,其結(jié)果輸出至R0的輸入端。一旦控制脈沖T到來,控制信號LDR0使部分積右移1位,與此同時,乘數(shù)寄存其R1也在控制型號LDR1作用下右移一位,且計數(shù)器I記數(shù)一次,二、

將步驟三重復(fù)執(zhí)行N次三、

當(dāng)計數(shù)器I=n時,計數(shù)器I的溢出信號使控制觸法器CX置0,關(guān)閉時序脈沖T,乘法宣告結(jié)束。

29定點(diǎn)運(yùn)算器——定點(diǎn)乘法原碼算法存在的缺點(diǎn):一是符號位需要單獨(dú)運(yùn)算,最后給運(yùn)算結(jié)構(gòu)以正確的符號;二是對于采用補(bǔ)碼存儲的機(jī)器,從存儲器中取出的是操作數(shù)的補(bǔ)碼,需先將其轉(zhuǎn)換成原碼,這樣很不方便,而且影響速度。30定點(diǎn)運(yùn)算器——定點(diǎn)乘法定點(diǎn)一位補(bǔ)碼乘法:補(bǔ)碼乘法的特點(diǎn)是乘數(shù)、被乘數(shù)用補(bǔ)碼表示,符號位參加運(yùn)算,希望得到的結(jié)果就是乘積的補(bǔ)碼,符號位在運(yùn)算中形成。31定點(diǎn)運(yùn)算器——定點(diǎn)乘法

[X*Y]補(bǔ)=[X]補(bǔ)*Y=[X]補(bǔ)[-YS+Y12-1+Y2*2-2+…+Yn2-n]=[X]補(bǔ)[-YS+(Y1-Y12-1)+(Y22-1-Y22-2)+…+(YN2-(n-1)-Yn2-n)]=[X]補(bǔ)[(Y1-YS)+(Y2-Y1)2-1+…+(Yn-Yn-1)2-(n-1)+(0-Yn)2-n]=[X]補(bǔ)(Y1-YS)+2-1([X]補(bǔ)(Y2-Y1)+2-1([X]補(bǔ)(Y3-Y2)…+2-1([X]補(bǔ)(Yn-Yn-1)+2-1([X]補(bǔ)(Yn+1-Yn)))…))(Yn+1=0)32定點(diǎn)運(yùn)算器----定點(diǎn)乘法遞推公式為:[P0]補(bǔ)=0[P1]補(bǔ)=2-1([P0]補(bǔ)+(Yn+1-Yn)[X]補(bǔ))[P2]補(bǔ)=2-1([P1]補(bǔ)+(Yn-Yn-1)[X]補(bǔ))…[Pi]補(bǔ)=2-1([Pi-1]補(bǔ)+(Yn-i+2-Yn-i+1)[X]補(bǔ))…[Pn]補(bǔ)=2-1([Pn-1]補(bǔ)+(Y2-Y1)[X]補(bǔ))[Pn+1]補(bǔ)=[Pn]補(bǔ)+(Y1-Ys)[X]補(bǔ)=[X*Y]補(bǔ)33①在乘數(shù)Y的最低位之后,增加一位補(bǔ)充位Yn+1。②從低位到高位,依次判斷相鄰的兩位乘數(shù)的狀態(tài),根據(jù)比較結(jié)果決定本次的操作,見下表判斷位YnYn+1操作說明0011[Pi]補(bǔ)=1/2[Pi-1]補(bǔ)上次部分積加0后,右移一位

01[Pi]補(bǔ)=1/2([Pi-1]補(bǔ)+[X]補(bǔ))上次部分積加[X]補(bǔ)后,右移一位10[Pi]補(bǔ)=1/2([Pi-1]補(bǔ)-[X]補(bǔ))上次部分積減[X]補(bǔ)后,右移一位③第二步操作循環(huán)執(zhí)行n+1次。但最后一步不移位,包括一位符號位,所得乘積為2n+1位,其中n為尾數(shù)位數(shù)。算法:34定點(diǎn)運(yùn)算器——定點(diǎn)乘法例:[X]補(bǔ)=0.1101,[Y]補(bǔ)=0.1011,求X*Y=?解:部分積乘數(shù)說明00.00000.10110Yn+1=011.0011YnYn+1=10,加[-X]補(bǔ)+11.0011→11.1001101011右移一位+00.0000YnYn+1=11,加011.1001→11.1100110101

右移一位+00.1101YnYn+1=01,加[X]補(bǔ)00.1001→00.0100111010

右移一位+11.001111.0111YnYn+1=10,加[-X]補(bǔ)→11.1011111101右移一位00.1101+YnYn+1=01,加[X]補(bǔ)00.1000111101最后一次不移位35定點(diǎn)運(yùn)算器——定點(diǎn)乘法結(jié)果:

X=-0.1101,Y=0.1011,求(X*Y)補(bǔ)=?[X*Y]補(bǔ)=0.10001111[X*Y]補(bǔ)=1.0111000136補(bǔ)碼一位乘法的邏輯實(shí)現(xiàn)

被乘數(shù)的符號X0和乘數(shù)的符號Y0都參加運(yùn)算。

乘數(shù)寄存器R1有附加位Yn+1,其初始狀態(tài)為“0”。當(dāng)乘數(shù)和部分積每次右移時,部分積最低位移至R1的首位位置,故R1必須是具有右移功能的寄存器。

被乘數(shù)寄存器R2的每一位用原碼或反碼經(jīng)多路開關(guān)傳送到加法器對應(yīng)位的一個輸入端,而開關(guān)的控制信號由YnYn+1的輸出譯碼器產(chǎn)生。當(dāng)YnYn+1=01時,送[X]補(bǔ);當(dāng)YnYn+1=10時,送[-X]補(bǔ),即送R2的反碼且在加法器最末位加上“1”。

R0保存部分積,它也是具有右移功能的移位寄存器,其符號位與加法器符號位始終一致。當(dāng)計數(shù)器i=n+1時,封鎖LDR1和LDR0控制信號,使最后一步不移位。

37定點(diǎn)運(yùn)算器——定點(diǎn)除法定點(diǎn)原碼一位除法在定點(diǎn)計算機(jī)中,完成兩個原碼表示的數(shù)相除時,商的符號由兩數(shù)的符號位和原碼乘法運(yùn)算方法一樣,用模2求和得到,而商的數(shù)值部分則是兩個正數(shù)相除得到。設(shè)被除數(shù)[X]原=Xf.X1X2…Xn除數(shù)[Y]原=Yf.Y1Y2…Yn則商[Q]原=(Xf+Yf).(X1X2…Xn/Y1Y2…Yn)38定點(diǎn)運(yùn)算器——定點(diǎn)除法計算機(jī)中執(zhí)行除法時,商的符號位由被除數(shù)和除數(shù)的符號位通過一個半加器實(shí)現(xiàn);對于數(shù)值部分,由于定點(diǎn)小數(shù)的絕對值小于1,如果被除數(shù)大于或等于除數(shù),則商就大于或等于1,因而會產(chǎn)生溢出,這是不允許的。因此在執(zhí)行除法以前,先要判別是否溢出,不溢出時才執(zhí)行除法運(yùn)算。判別溢出的方法是被除數(shù)減去除數(shù),若差為正,就表示溢出。39定點(diǎn)運(yùn)算器——定點(diǎn)除法手工計算除法的方法:設(shè)被除數(shù)為X=0.1001,Y=0.1011,求X/Y=?40定點(diǎn)運(yùn)算器——定點(diǎn)除法0.110111011011011011001011011010011010111

X/Y=0.1101余數(shù)=0.0111*2-441恢復(fù)余數(shù)法恢復(fù)余數(shù)法的運(yùn)算規(guī)則:計算機(jī)中進(jìn)行除法時,是模仿十進(jìn)制除法筆算的過程,但又不能完全照搬。在機(jī)器中判斷是否夠減,必須先做減法,若余數(shù)為正,表示夠減;若余數(shù)為負(fù),表示不夠減,不夠減時,必須恢復(fù)原來的余數(shù),以便再繼續(xù)往下運(yùn)算,這種方法稱為恢復(fù)余數(shù)法。要恢復(fù)原來的余數(shù),只要當(dāng)前的余數(shù)加上除數(shù)即可。42定點(diǎn)運(yùn)算器—定點(diǎn)除法例:X=0.1001,Y=0.1011,用恢復(fù)余數(shù)法求X/Y=?解:[X]原=[X]補(bǔ)=0.1001[Y]補(bǔ)=0.1011[-Y]補(bǔ)=1.010143解:被除數(shù)/余數(shù)商數(shù)q說明商0移入q,r0’左移商1移入q,r1左移商1移入q,r2左移商0移入q,r3’左移00.100111.010111.111000.101100.100100.011101.001011.010100.111011.010100.001100.011011.010111.101100.101100.011000.110011.010100.000100.0001+[-Y]補(bǔ)+[Y]補(bǔ)+[-Y]補(bǔ)+[-Y]補(bǔ)+[-Y]補(bǔ)+[Y]補(bǔ)+[-Y]補(bǔ)←←←←00.10.110.1100.1101X減Y余數(shù)r0<0,商“0”恢復(fù)余數(shù)r0’減Y余數(shù)r1>0,商“1”減Y余數(shù)r4>0,商“1”減Y余數(shù)r3<0,商“0”恢復(fù)余數(shù)r3’=2r2減Y商1移入q,r4不左移余數(shù)r2>0,商“1”44定點(diǎn)運(yùn)算器—定點(diǎn)除法[Q]原=0.1101[R]原=0.0001,R=2-4*0.0001結(jié)果:45定點(diǎn)運(yùn)算器—定點(diǎn)除法恢復(fù)余數(shù)法的缺點(diǎn):

當(dāng)某一次-Y的差值為負(fù)時,要多一次+Y恢復(fù)余數(shù)的操作,降低了執(zhí)行速度,又使控制線路變得復(fù)雜,因此在計算機(jī)中很少采用。46定點(diǎn)運(yùn)算器—定點(diǎn)除法

在恢復(fù)余數(shù)除法中,若第i-1次求商的余數(shù)為+Ri-1時,下一次求商用的方法是Ri=2Ri-1-Y當(dāng)Ri<0時,第i位的商上0,而恢復(fù)余數(shù)的操作結(jié)果應(yīng)為Ri+Y,下一次,即第i+1次求商的減法操作是Ri+1=2(Ri+Y)-Y=2Ri+Y上述公式表明,當(dāng)某一次求商,其減得的差值為負(fù),即Ri<0時,本次上商為0,繼續(xù)求下一位商時,可以不必恢復(fù)余數(shù),而是直接將負(fù)的差值左移一位后(得2Ri),再采用加上除數(shù)的方法來完成。47定點(diǎn)運(yùn)算器—定點(diǎn)除法加減交替法的規(guī)則:首先作X-Y,余數(shù)為正,表明產(chǎn)生溢出,應(yīng)終止除法運(yùn)算;余數(shù)為負(fù),上商為0(作為商的符號位),然后重復(fù)下述操作n次,可得商的n位數(shù)值a.余數(shù)左移一位。b.余數(shù)為正時,減除數(shù);余數(shù)為負(fù)時,加除數(shù)。c.所得的新余數(shù)為正時,上商為1;為負(fù)時,上商為0。由于運(yùn)算中余數(shù)共左移了n次,相當(dāng)于乘2n,故最后得余數(shù)應(yīng)乘上2-n才是真正的正確余數(shù)。48定點(diǎn)運(yùn)算器—定點(diǎn)除法例:X=0.1001,Y=0.1011,求X/Y解:[X]補(bǔ)=0.1001[Y]補(bǔ)=0.1011[-Y]補(bǔ)=1.010149解:[X]原=[X]補(bǔ)=X=0.1001,[Y]補(bǔ)=0.1011,[-Y]補(bǔ)=1.0101被除數(shù)X/余數(shù)r商數(shù)q說明+[-Y]補(bǔ)00.100111.010111.111011.110000.101100.011100.111011.010100.001100.011011.010111.101111.011000.101100.0001+[-Y]補(bǔ)+[Y]補(bǔ)+[-Y]補(bǔ)+[Y]補(bǔ)←←←←00.10.110.1100.1101X減Y余數(shù)r0為負(fù)余數(shù)r1為正余數(shù)r2為正余數(shù)r3為負(fù)余數(shù)r4為正商0,r和q左移一位商1,r和q左移一位商1,r和q左移一位商0,r和q左移一位加Y減Y減Y加Y商1,僅q左移一位50Q=0.1101R=2-4*0.0001結(jié)果:51定點(diǎn)運(yùn)算器—定點(diǎn)除法

R1寄存器為 n位,是雙向移位寄存器,R0為雙向移位寄存器。

除法開始前R1可存放被除數(shù)的低n位,R0保存被除數(shù)或者余數(shù)。在進(jìn)商左移的過程中,被除數(shù)(余數(shù))的低位部分由R1串行移至R0。

每次進(jìn)商置于R1的最末位,由加法器符號位∑f來設(shè)置,

運(yùn)算結(jié)束后R1存放n位的商,R0中存放余數(shù)。52補(bǔ)碼一位除法:符號位參加運(yùn)算,除數(shù)與被除數(shù)均用雙符號補(bǔ)碼表示。被除數(shù)與除數(shù)同號,被除數(shù)減除數(shù)。被除數(shù)與除數(shù)異號,被除數(shù)加上除數(shù)。商符號位的取值見III。余數(shù)與除數(shù)同號,商上1,余數(shù)左移1位減去除數(shù);余數(shù)與除數(shù)異號,商上0,余數(shù)左移1位加上除數(shù)。采用校正法包括符號位在內(nèi),應(yīng)重復(fù)IIIn+1次。53補(bǔ)碼一位除法的流程圖54商的校正原則當(dāng)剛好能除盡時(即運(yùn)算過程中任一步余數(shù)為0),如果除數(shù)為正,則商不必校正;若除數(shù)為負(fù),則商需要校正,即加2-n進(jìn)行修正。不能除盡時,如果商為正,則不必校正;若商為負(fù),則商需要加2-n進(jìn)行修正。55余數(shù)的校正原則若商為正,當(dāng)余數(shù)與被除數(shù)異號時,則應(yīng)將余數(shù)加上除數(shù)進(jìn)行修正才能獲得正確的余數(shù)。若商為負(fù),當(dāng)余數(shù)與被除數(shù)異號時,則余數(shù)需減去除數(shù)進(jìn)行校正。56定點(diǎn)運(yùn)算器—定點(diǎn)除法例:X=0.1001,Y=0.1011,求[X/Y]補(bǔ)解:[X]補(bǔ)=0.1001[Y]補(bǔ)=0.1011[-Y]補(bǔ)=1.010157定點(diǎn)運(yùn)算器—定點(diǎn)除法解:[X]補(bǔ)=0.1001,[Y]補(bǔ)=0.1011,[-Y]補(bǔ)=1.0101

被除數(shù)/余數(shù)商數(shù)說明00.100111.010111.111011.110000.101100.011100.111011.010100.001100.011011.010111.101111.011000.101100.000100.0001+[-Y]補(bǔ)+[Y]補(bǔ)+[-Y]補(bǔ)+[-Y]補(bǔ)+[Y]補(bǔ)←←←←00101101100.1101[X]補(bǔ)和[Y]補(bǔ)同號,q0=1減除數(shù)加除數(shù)減除數(shù)減除數(shù)加除數(shù)余數(shù)和除數(shù)異號余數(shù)和除數(shù)同號余數(shù)和除數(shù)同號余數(shù)和除數(shù)異號余數(shù)和除數(shù)同號左移1位,商1左移1位,商1左移1位,商0左移1位,商1左移1位,商058定點(diǎn)運(yùn)算器—定點(diǎn)除法例:X=0.100,Y=-0.101,求[X/Y]補(bǔ)解:[X]補(bǔ)=0.100[Y]補(bǔ)=11.011[-Y]補(bǔ)=00.10159定點(diǎn)運(yùn)算器—定點(diǎn)除法解:[X]補(bǔ)=0.100,

溫馨提示

  • 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

提交評論