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

下載本文檔

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

文檔簡(jiǎn)介

運(yùn)算器和運(yùn)算方法第1頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.1定點(diǎn)運(yùn)算器的組成和結(jié)構(gòu) 定點(diǎn)運(yùn)算器由算術(shù)邏輯運(yùn)算單元(ALU)、輸入數(shù)據(jù)選擇電路、通用寄存器組、輸出數(shù)據(jù)分配電路組成,如下頁(yè)圖所示。

其中算術(shù)邏輯運(yùn)算單元的核心部件是加法器,而加法器的邏輯組成包括加法單元與進(jìn)位傳遞邏輯單元。第2頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月CPU的結(jié)構(gòu)第3頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.1.1算術(shù)邏輯運(yùn)算單元(ALU)運(yùn)算器中完成數(shù)據(jù)算術(shù)與邏輯運(yùn)算的部件稱為算術(shù)邏輯運(yùn)算單元(ArithmeticandLogicUnit,ALU)。如CPU結(jié)構(gòu)圖所示,ALU是運(yùn)算器的核心,通常表示為兩個(gè)輸入端口,一個(gè)輸出端口和多個(gè)功能控制信號(hào)端的一個(gè)邏輯符號(hào)。

ALU處理數(shù)據(jù)的位數(shù)與機(jī)器的字長(zhǎng)有關(guān)。第4頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.1.2通用寄存器組現(xiàn)代計(jì)算機(jī)的中央處理器中都有一組通用寄存器,主要用于保存參加運(yùn)算的操作數(shù)和運(yùn)算結(jié)果。之所以在現(xiàn)代計(jì)算機(jī)中加入通用寄存器是因?yàn)樗拇嫒∷俣纫h(yuǎn)遠(yuǎn)高于內(nèi)存儲(chǔ)器的速度。通用寄存器的數(shù)量越多,對(duì)提高運(yùn)算器性能和程序執(zhí)行速度越有利。通用寄存器組是對(duì)用戶開(kāi)放的,可以通過(guò)指令去使用這些寄存器。第5頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月如上圖所示,8086微處理器有14個(gè)16位寄存器,包括8個(gè)通用寄存器,1個(gè)指令指針寄存器,1個(gè)標(biāo)志寄存器,4個(gè)段寄存器。它們都有名稱,編程時(shí)使用其名稱代表其保存的內(nèi)容。第6頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.1.3狀態(tài)寄存器狀態(tài)寄存器主要用于記錄一些運(yùn)算結(jié)果的狀態(tài)。通常情況下,狀態(tài)寄存器由以下幾種標(biāo)志狀態(tài)位組成:

V(溢出標(biāo)志位):當(dāng)運(yùn)算結(jié)果有溢出時(shí),該位被置位;當(dāng)運(yùn)算結(jié)果沒(méi)有溢出時(shí),該位被清0。

Z(零標(biāo)志位):當(dāng)運(yùn)算結(jié)果為0時(shí),該位被置位;當(dāng)運(yùn)算結(jié)果不為0時(shí),該位被清0。

C(進(jìn)位或借位標(biāo)志位):當(dāng)作加法時(shí)如果最高位向前有進(jìn)位,或當(dāng)作減法時(shí)最高位向前無(wú)借位,該標(biāo)志位被置位;當(dāng)作加法時(shí)如果最高位向前無(wú)進(jìn)位,或當(dāng)作減法時(shí)最高位向前有借位,該標(biāo)志位被清0。

N(符號(hào)標(biāo)志位):當(dāng)運(yùn)算結(jié)果為負(fù)數(shù)時(shí),該位被置位;當(dāng)運(yùn)算結(jié)果為正數(shù)時(shí),該位被清0。第7頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.1.4數(shù)據(jù)通路從一個(gè)功能部件向另一個(gè)功能部件傳送數(shù)據(jù)所經(jīng)過(guò)的功能部件、總線等稱為數(shù)據(jù)通路。下面以CPU結(jié)構(gòu)圖所示的CPU的各功能部件的右半部分運(yùn)算器為例,解釋其數(shù)據(jù)通路,進(jìn)而說(shuō)明運(yùn)算器的工作過(guò)程。第8頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月第9頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月在圖中,MUX1和MUX2分別是兩個(gè)多路數(shù)據(jù)選擇器,用來(lái)選擇當(dāng)前哪兩組數(shù)據(jù)送到ALU中。MUX1數(shù)據(jù)有兩個(gè)來(lái)源:通用寄存器的輸出和指令中的相對(duì)位移量。MUX2數(shù)據(jù)有3個(gè)來(lái)源:通用寄存器的輸出、數(shù)據(jù)寄存器的輸出和程序計(jì)數(shù)器的輸出。ALU的輸出信息通過(guò)內(nèi)部數(shù)據(jù)總線送到通用寄存器中。如果通用寄存器有兩個(gè)輸出端口RA和RB,有一個(gè)輸入端口RL。寄存器中的數(shù)據(jù)用補(bǔ)碼表示。并且寄存器1用R1表示,寄存器2用R2表示,寄存器3用R3表示。運(yùn)算之前R1=1100,R2=0110,V、Z、C、N標(biāo)志位都為0。進(jìn)行下面的操作后,請(qǐng)問(wèn)標(biāo)志位V、Z、C、N和R3的值如何變化?第10頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月

1.R1+R2,結(jié)果送到R3中 操作過(guò)程:R1的內(nèi)容通過(guò)端口RA輸出,MUX1將RA的內(nèi)容送入ALU的A輸入端;R2的內(nèi)容通過(guò)端口RB輸出,MUX2將RB的內(nèi)容送入ALU的B輸入端。ALU進(jìn)行A+B操作,從Y輸出端輸出結(jié)果,并存入R2寄存器中。

ALU中的運(yùn)算:

1100 +0110 10010

送往進(jìn)位位 所以R3=0010,標(biāo)志位C由0變?yōu)?,其他標(biāo)志位不變。第11頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月

2.求與R1相補(bǔ)的數(shù) 操作過(guò)程:R1的內(nèi)容通過(guò)端口RB輸出,經(jīng)過(guò)MUX2的選擇,將RB的內(nèi)容送入ALU的B輸入端。在MUX1處選擇常數(shù)“0”送入ALU的A輸入端,ALU進(jìn)行A-B操作,從Y輸出端輸出結(jié)果,并存入R3寄存器中。由于運(yùn)算器要進(jìn)行的是補(bǔ)碼運(yùn)算,A-B的功能是通過(guò)[A]補(bǔ)+[-B]補(bǔ)來(lái)完成的。

ALU中的運(yùn)算:

[A]補(bǔ)

0000 + [-B]補(bǔ)

0100 [0-B]補(bǔ)

0100

所以R3=0100,結(jié)果為負(fù),N標(biāo)志位由0變?yōu)?,其他標(biāo)志位不變。第12頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.利用運(yùn)算器計(jì)算操作數(shù)地址或轉(zhuǎn)移地址

如果當(dāng)前執(zhí)行轉(zhuǎn)移指令,轉(zhuǎn)移地址由程序計(jì)數(shù)器的值加上相對(duì)位移量得出。 操作過(guò)程:MUX1選擇指令寄存器中的相對(duì)位移量送入ALU的A輸入端,MUX2選擇程序計(jì)數(shù)器PC的內(nèi)容送入ALU的B輸入端,ALU進(jìn)行A+B運(yùn)算,從Y輸出端輸出結(jié)果,并存入PC中,即為轉(zhuǎn)移地址。下次執(zhí)行指令就從轉(zhuǎn)移地址開(kāi)始執(zhí)行。第13頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月

4.關(guān)于移位操作 這里以4位二進(jìn)制數(shù)最左邊一位為符號(hào)位為例,來(lái)說(shuō)明移位操作的規(guī)則和操作結(jié)果。 (1)算術(shù)左移SAL

原數(shù)X3X2X1X0

算術(shù)左移一位之后變?yōu)?/p>

可見(jiàn),算術(shù)左移時(shí),最高位被移出,用0來(lái)補(bǔ)充最低位。移位后的結(jié)果(如果沒(méi)有溢出發(fā)生)是原數(shù)的2倍。在沒(méi)有溢出的情況下,如果左移n位,則移位后的結(jié)果是原數(shù)的2n倍;若有溢出情況發(fā)生,則移位后的結(jié)果數(shù)據(jù)不定。X3X2X1X0X2X1X00第14頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月(2)算術(shù)右移SAR

原數(shù)X3X2X1X0

算術(shù)右移一位之后變?yōu)? 可見(jiàn),算術(shù)右移時(shí),最低位被移出,最高位保持不變。移位后的結(jié)果(如果沒(méi)有溢出發(fā)生)是原數(shù)的1/2。在沒(méi)有溢出的情況下,如果右移n位,則移位后的結(jié)果是原數(shù)的1/2n;若有溢出情況發(fā)生,則移位后的結(jié)果數(shù)據(jù)不定。X3X2X1X0X3X3X2X1第15頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月(3)邏輯左移SHL

原數(shù)X3X2X1X0

邏輯左移一位之后變?yōu)? 可見(jiàn),邏輯左移時(shí),最高位被移出,用0來(lái)補(bǔ)充最低位,結(jié)果與算術(shù)左移相同。(4)邏輯右移SHR

原數(shù)X3X2X1X0

邏輯右移一位之后變?yōu)? 可見(jiàn),邏輯右移時(shí),最低位被移出,最高位用0補(bǔ)充,結(jié)果與算術(shù)右移不同。X3X2X1X0X2X1X00X3X2X1X00X3X2X1第16頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月(5)循環(huán)左移ROL

原數(shù)X3X2X1X0

循環(huán)左移一位之后變?yōu)? 可見(jiàn),循環(huán)左移時(shí),所有的位順序向左移一位,最低位由最高位循環(huán)移入。(6)循環(huán)右移ROR

原數(shù)X3X2X1X0

循環(huán)右移一位之后變?yōu)? 可見(jiàn),循環(huán)右移時(shí),所有的位順序向右移一位,最高位由最低位循環(huán)移入。X3X2X1X0X3X2X1X0X2X1X0X3X0X3X2X1第17頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月(7)帶進(jìn)位的循環(huán)左移RCL

原數(shù)X3X2X1X0

循環(huán)左移一位之后變?yōu)椋?)帶進(jìn)位的循環(huán)右移RCR

原數(shù)X3X2X1X0

循環(huán)右移一位之后變?yōu)镃X3X2X1X00CX3X2X1CX3X2X1X0X3X2X1X0C第18頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.1.5定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)定點(diǎn)運(yùn)算器包括ALU、陣列乘除器、寄存器、多路開(kāi)關(guān)、緩沖器、數(shù)據(jù)總線等邏輯部件。定點(diǎn)運(yùn)算器大體有如下3種結(jié)構(gòu)形式。第19頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月1.單總線結(jié)構(gòu)的運(yùn)算器如圖(a)所示。由于所有部件都要接到同一單總線上,為了把兩個(gè)操作數(shù)輸入到ALU,需要分兩次來(lái)做,而且還需要A和B兩個(gè)緩沖寄存器。只有當(dāng)這兩個(gè)操作數(shù)同時(shí)出現(xiàn)在ALU的兩個(gè)輸入端時(shí),ALU才能執(zhí)行加法。當(dāng)加法結(jié)果出現(xiàn)在單總線上時(shí),由于輸入數(shù)據(jù)已保存在緩沖寄存器中,它并不會(huì)對(duì)輸入數(shù)據(jù)產(chǎn)生影響。然后,再由第3個(gè)傳送命令把加法的“和”傳送到目的寄存器中。由此可見(jiàn),這種結(jié)構(gòu)的主要缺點(diǎn)是操作速度較慢。第20頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月2.雙總線結(jié)構(gòu)的運(yùn)算器如圖(b)所示。在這種運(yùn)算器中,兩個(gè)操作數(shù)同時(shí)送到ALU進(jìn)行運(yùn)算,只需要一次操作數(shù)控制,而且馬上就可以得到運(yùn)算結(jié)果。從圖中可以看出,兩條總線各自把其數(shù)據(jù)送至ALU的輸入端。特殊寄存器分成兩組,它們分別與一條總線交換數(shù)據(jù)。這樣,通用寄存器中的數(shù)就可以進(jìn)入到任一組特殊寄存器中去,從而使數(shù)據(jù)傳送更為靈活。3.三總線結(jié)構(gòu)的運(yùn)算器如圖(c)所示。在三總線結(jié)構(gòu)中,ALU的兩個(gè)輸入端分別由兩條總線供給,而ALU的輸出則與第3條總線相連。這樣,算術(shù)邏輯操作就可以在一步的控制之內(nèi)完成。由于ALU本身有時(shí)間延遲,所以,打入輸出結(jié)果的選通脈沖必須考慮到包括這個(gè)延遲。另外,設(shè)置了一個(gè)總線旁路器。如果一個(gè)操作數(shù)不需要修改,而直接從總線2傳送到總線3,那么可以通過(guò)控制總線旁路器把數(shù)據(jù)傳出;如果一個(gè)操作數(shù)傳送時(shí)需要修改,那么就借助于ALU。很顯然,三總線結(jié)構(gòu)的運(yùn)算器的特點(diǎn)是操作速度快。第21頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.2算術(shù)邏輯運(yùn)算的基本電路

3.2.1半加器有兩個(gè)輸入端,以供兩個(gè)代表數(shù)字(A0、B0)的電位輸入;有兩個(gè)輸出端,用以輸出總和S0和進(jìn)位C0。這樣的電路可能出現(xiàn)的狀態(tài)可用左圖表示。第22頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月從下圖中可以看出這分別是“與”和“異或”的關(guān)系,可以用“與門(mén)”和“異或門(mén)”組成半加器,如(a)圖。在電子技術(shù)中常把基本元件的電路圖簡(jiǎn)化成符號(hào),如圖(b)所示就是半加器的符號(hào)。第23頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.2.2全加器全加器有3個(gè)輸入端,即Ai、Bi和Ci,有兩個(gè)輸出端,即Si和Ci+1。其真值表和電路圖如下圖所示。第24頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月由此圖分析可知,其總和Si可用“異或門(mén)”來(lái)實(shí)現(xiàn),而其進(jìn)位Ci+1可用3個(gè)“與門(mén)”和1個(gè)“異或門(mén)”來(lái)實(shí)現(xiàn)??梢?jiàn)全加器可以處理低位進(jìn)位,如果多個(gè)一位全加器按進(jìn)位方向串聯(lián)起來(lái),就可以實(shí)現(xiàn)多位全加。全加器的電路如下圖所示。第25頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.3定點(diǎn)加/減法運(yùn)算數(shù)據(jù)在計(jì)算機(jī)中可以采用原碼、反碼和補(bǔ)碼表示,但是對(duì)于計(jì)算機(jī)來(lái)講,原碼加減法運(yùn)算規(guī)則比較復(fù)雜,實(shí)際上機(jī)器中很少采用原碼表示數(shù)的加減法運(yùn)算,而用補(bǔ)碼來(lái)表示,其運(yùn)算結(jié)果也是用補(bǔ)碼表示的。若結(jié)果的符號(hào)為0,表示正數(shù),得到的補(bǔ)碼即是原碼,只需在數(shù)值部分前面加上“+”號(hào),即為真值。若結(jié)果的符號(hào)為1,表示負(fù)數(shù),得到的是補(bǔ)碼,這時(shí)需要對(duì)得到的補(bǔ)碼再求補(bǔ)碼,得到原碼,然后在數(shù)值部分前面加上“-”號(hào)才為真值。第26頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.3.1定點(diǎn)補(bǔ)碼的加法運(yùn)算規(guī)則:[X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)(mod2n)現(xiàn)根據(jù)X、Y的符號(hào)及絕對(duì)值的大小分4種情況進(jìn)行討論。(1)X>0,Y>0,X+Y>0。相加兩數(shù)都是正數(shù),故其和也一定是正數(shù)。正數(shù)的補(bǔ)碼和原碼是一樣的,可得: [X]補(bǔ)+[Y]補(bǔ)=X+Y=[X+Y]補(bǔ)(mod2n)第27頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月例3-1:已知X=+00010100B,Y=+00000101B,進(jìn)行補(bǔ)碼加法運(yùn)算,求[X]補(bǔ)+[Y]補(bǔ)。

[X]補(bǔ)=00010100(+20的補(bǔ)碼)

+)[Y]補(bǔ)=00000101(+5的補(bǔ)碼)

[X+Y]補(bǔ)=00011001(+25的補(bǔ)碼)符號(hào)位第28頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月(2)X>0,Y<0,且|X|≥|Y|,即0≤X+Y<2n–1 由補(bǔ)碼定義可知: [X]補(bǔ)=X [Y]補(bǔ)=2n+Y [X+Y]補(bǔ)=X+Y [X]補(bǔ)+[Y]補(bǔ)=X+2n+Y=X+Y=[X+Y]補(bǔ)(mod2n) 因?yàn)榻Y(jié)果為正數(shù),所以其補(bǔ)碼即為該數(shù)本身。第29頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月例3-2:已知X=+00010001B,Y=-01111101B,進(jìn)行補(bǔ)碼加法運(yùn)算,求[X]補(bǔ)+[Y]補(bǔ)。

[X]補(bǔ)=00010001(+17的補(bǔ)碼)

+)[Y]補(bǔ)=11111101(-3的補(bǔ)碼)

[X+Y]補(bǔ)=100001110(+14的補(bǔ)碼)丟失符號(hào)位第30頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月(3)X>0,Y<0,且|Y|>|X|,即–2n-1≤X+Y<0

由補(bǔ)碼定義可知:

[X]補(bǔ)=X[Y]補(bǔ)=2n+Y [X+Y]補(bǔ)=2n+(X+Y)

[X]補(bǔ)+[Y]補(bǔ)=X+2n

+Y=2n+(X+Y)=[X+Y]補(bǔ)(mod2n) 結(jié)果得到的是一個(gè)負(fù)數(shù)的補(bǔ)碼形式。第31頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月例3-3:已知X=+00000011B,Y=-01101001B,進(jìn)行補(bǔ)碼加法運(yùn)算,求[X]補(bǔ)+[Y]補(bǔ)。[X]補(bǔ)=00000011(+3的補(bǔ)碼)+)[Y]補(bǔ)=11101001(-23的補(bǔ)碼)[X+Y]補(bǔ)=11101100(-20的補(bǔ)碼)符號(hào)位第32頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月(4)X<0,Y<0,X+Y<0。相加兩數(shù)都是負(fù)數(shù),故其和也一定是負(fù)數(shù)。 由補(bǔ)碼定義可知: [X]補(bǔ)=2n+X[Y]補(bǔ)=2n+Y[X+Y]補(bǔ)=2n+(X+Y) [X]補(bǔ)+[Y]補(bǔ)=2n+X+2n+Y=2n+2n+(X+Y)=[X+Y]補(bǔ)(mod2n) 得到的結(jié)果也是一個(gè)負(fù)數(shù)的補(bǔ)碼形式。第33頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月例3-4:已知X=-01111101B,Y=-01101001B,進(jìn)行補(bǔ)碼加法運(yùn)算,求[X]補(bǔ)+[Y]補(bǔ)。

[X]補(bǔ)=11111101(-3的補(bǔ)碼)

+)[Y]補(bǔ)=11101001(-23的補(bǔ)碼)

[X+Y]補(bǔ)=111100110(-26的補(bǔ)碼)

丟失符號(hào)位第34頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.3.2定點(diǎn)補(bǔ)碼的減法運(yùn)算規(guī)則:[X-Y]補(bǔ)=[X+(-Y)]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)(mod2n) 在進(jìn)行定點(diǎn)減法運(yùn)算時(shí),只要將減數(shù)Y換成[-Y]補(bǔ),減法運(yùn)算就轉(zhuǎn)換為加法運(yùn)算了。這里,只要將數(shù)值位連同符號(hào)位一起求反加1,即可得到,這個(gè)過(guò)程稱為求補(bǔ)。注意:求補(bǔ)是區(qū)別于求補(bǔ)碼的,在補(bǔ)碼系統(tǒng)內(nèi),求補(bǔ)就是求一個(gè)符號(hào)相反而絕對(duì)值相等的數(shù)。 因此,補(bǔ)碼減法運(yùn)算可歸結(jié)為對(duì)減數(shù)求補(bǔ),再做加法。第35頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月例3-5:已知X=+0010100B,Y=+0000011B,進(jìn)行補(bǔ)碼減法運(yùn)算,求X-Y。

[X]補(bǔ)=[X]原=00010100[Y]補(bǔ)=[Y]補(bǔ)=00000011[X]補(bǔ)=00010100(+20的補(bǔ)碼)

+)[Y]補(bǔ)=11111101(-3的補(bǔ)碼)

[X+Y]補(bǔ)=100010001(+17的補(bǔ)碼)

丟失符號(hào)位 其結(jié)果符號(hào)位為“0”,表示正數(shù),所以X-Y=+00010001B。第36頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月例3-6:已知X=-00010111B,Y=+00000011B,進(jìn)行補(bǔ)碼減法運(yùn)算,求X-Y。

[X]補(bǔ)=11101001(-23的補(bǔ)碼)

+)[Y]補(bǔ)=00000011(+3的補(bǔ)碼)

[X+Y]補(bǔ)=11101100(-20的補(bǔ)碼)符號(hào)位 其結(jié)果符號(hào)位為1,表示負(fù)數(shù),所以X-Y=-00010100B。第37頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.3.3無(wú)符號(hào)數(shù)的運(yùn)算無(wú)符號(hào)數(shù)的運(yùn)算是指參與運(yùn)算的X、Y都是正數(shù),且整個(gè)字長(zhǎng)全部用于表示數(shù)值部分。當(dāng)兩個(gè)n位無(wú)符號(hào)數(shù)相加時(shí),由于X、Y都是正數(shù),所以X+Y也必為正數(shù),當(dāng)X+Y的和超過(guò)字長(zhǎng)n位所允許的范圍時(shí),就向更高位進(jìn)位,這時(shí)必須采用多字節(jié)來(lái)表示。當(dāng)兩個(gè)n位無(wú)符號(hào)數(shù)相減時(shí),其值的符號(hào)取決于兩數(shù)絕對(duì)值的大小。在計(jì)算機(jī)中,對(duì)于減法運(yùn)算一律采用補(bǔ)碼運(yùn)算,即用減數(shù)求補(bǔ)相加代替兩數(shù)相減。即:

X–Y=X+(-Y)

[X–Y]補(bǔ)=[X]補(bǔ)+[–Y]補(bǔ)

[–Y]補(bǔ)=2n+(–Y)

[X–Y]補(bǔ)=[X]補(bǔ)+[–Y]補(bǔ)=2n+(X–Y)=2n-(Y–X)由此得到以下兩點(diǎn)結(jié)論:第38頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月(1)若X>Y,則X–Y無(wú)借位,差值為正,[X–Y]補(bǔ)=[X]補(bǔ)+[–Y]補(bǔ)之和必大于2n,最高位有進(jìn)位,得到的和即是X–Y的原碼。例3-7:已知X=+0100100B,Y=+0000011B,進(jìn)行補(bǔ)碼減法運(yùn)算,求X-Y。

[X]補(bǔ)=[X]原=0100100 [Y]補(bǔ)=[Y]原=0000011 [–Y]補(bǔ)=11111101[X]補(bǔ)=00100100(+36的補(bǔ)碼)

+)

[–Y]補(bǔ)=11111101(-3的補(bǔ)碼)

[X-Y]補(bǔ)=100100001(+33的補(bǔ)碼)

丟失,有進(jìn)位表示無(wú)借位,結(jié)果為正數(shù) 結(jié)果為X–Y=+0100001B。第39頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月(2)若X<Y,則X–Y有借位,差值為負(fù),[X–Y]補(bǔ)=[X]補(bǔ)+[–Y]補(bǔ)之和必小于2n,最高位無(wú)進(jìn)位,得到的和即是(X–Y)=–(Y–X)的補(bǔ)碼。例3-8:已知X=+0001010B,Y=+0100000B,進(jìn)行補(bǔ)碼減法運(yùn)算,求X–Y。

[X]補(bǔ)=[X]原=00001010[Y]補(bǔ)=[Y]原=00100000[–Y]補(bǔ)=11100000[X]補(bǔ)=00001010(+10的補(bǔ)碼)

+)[–Y]補(bǔ)=11100000(–32的補(bǔ)碼)

[X+Y]補(bǔ)=11101010(–22的補(bǔ)碼)

無(wú)進(jìn)位,表示有借位,結(jié)果為負(fù)數(shù)結(jié)果為X–Y=–1101010B。第40頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月3.3.4溢出采用補(bǔ)碼運(yùn)算時(shí),若結(jié)果的數(shù)值超出了補(bǔ)碼能表示的范圍,計(jì)算結(jié)果錯(cuò)誤,我們把這種情況稱為溢出。注意:溢出與進(jìn)位的性質(zhì)是不同的,溢出主要用于判斷帶符號(hào)數(shù)的運(yùn)算結(jié)果是否超過(guò)數(shù)的表示范圍,而進(jìn)位是指運(yùn)算結(jié)果的最高位向更高位進(jìn)位或借位。例如:

01101001(+105)

+00110010(+50)

10011011

符號(hào)位 按照補(bǔ)碼規(guī)定10011011為–101D,這顯然是錯(cuò)誤的,因?yàn)?05D+50D=155D超過(guò)了8位有符號(hào)數(shù)所能表示范圍的最大值+127D,使數(shù)值部分占據(jù)了符號(hào)位的位置,導(dǎo)致了運(yùn)算錯(cuò)誤。

第41頁(yè),課件共44頁(yè),創(chuàng)作于2023年2月下面研究一下判斷溢出的方法。常用的判斷溢出的方法有多種,這里重點(diǎn)對(duì)利用雙進(jìn)位時(shí)位的狀態(tài)判斷溢出作介紹。該方法主要是利用字節(jié)的最高位(符號(hào)位)和次高位(數(shù)值部分的最高位)的進(jìn)位狀態(tài)來(lái)判斷結(jié)果是否發(fā)生溢出。為了說(shuō)明這種方法,引入兩個(gè)符號(hào)CS和CS+1,其中CS表示兩數(shù)值中次高位向符號(hào)位進(jìn)位時(shí)的狀態(tài),有進(jìn)位,則CS=1,否則為0;CS+1表示兩個(gè)符號(hào)位向更高位進(jìn)位時(shí)的狀態(tài),有進(jìn)位,則CS+1=1

溫馨提示

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

評(píng)論

0/150

提交評(píng)論