第2章方法和運算器_第1頁
第2章方法和運算器_第2頁
第2章方法和運算器_第3頁
第2章方法和運算器_第4頁
第2章方法和運算器_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章

運算方法和運算器本章學習目標:掌握計算機中數(shù)據(jù)的表示方法掌握定點數(shù)的加減法運算和基本加法器掌握定點運算器的構(gòu)成和功能了解定點乘除法運算和浮點運算器主要內(nèi)容數(shù)制數(shù)據(jù)的表示運算方法和運算器定點乘除法運算定點和浮點運算器第一節(jié)數(shù)據(jù)的表示選擇表示方式時,考慮的因素:要表示的數(shù)據(jù)的類型可能遇到的數(shù)值范圍數(shù)值精度數(shù)據(jù)存儲和處理所需的代價數(shù)據(jù)的分類非數(shù)值型數(shù)據(jù)數(shù)值型數(shù)據(jù)返回本章一、非數(shù)值數(shù)據(jù)的表示字符數(shù)據(jù)的編碼漢字的編碼返回本節(jié)1、字符數(shù)據(jù)的編碼字符又叫符號數(shù)據(jù),包括字母和符號。目前世界上用ASCII碼(AmericanStandardCodeforInformationInterchange)來表示。ASCII碼有7位ASCII碼和8位ASCII碼兩種:

7位ASCII碼稱為標準ASCII碼

8位ASCII碼稱為擴充ASCII碼。ASCII碼字符編碼表

2、漢字的二進制編碼漢字的二進制編碼分三種:輸入碼:將漢字用各種方式輸入到計算機中。數(shù)字編碼、字形編碼、拼音編碼、混合編碼機內(nèi)碼:是計算機內(nèi)部存儲和處理漢字的編碼。輸出碼:在顯示設(shè)備上顯示相應字形的漢字編碼。 常用點陣編碼。漢字編碼:機內(nèi)碼和機外碼

機內(nèi)碼:是在計算機內(nèi)部使用的用二進制代碼 表示的漢字編碼,用于在計算機內(nèi)部存儲、交 換、處理加工漢字信息

機外碼:是不在計算機內(nèi)使用的漢字編碼,主 要是指漢字輸入碼。此外還有供輸出的漢字字 型點陣碼。0880088400001000100000000000100010000100二、數(shù)值數(shù)據(jù)的表示需要考慮:符號(數(shù)值化)小數(shù)點(約定或浮動,不占存儲位)數(shù)值部分(采用某中編碼)各種機器碼

機器數(shù)

定點數(shù)和浮點數(shù)

原碼、反碼、補碼和移碼

十進制數(shù)的編碼

數(shù)據(jù)校驗碼返回本節(jié)1、機器數(shù)機器數(shù)與真值的概念機器數(shù):符號位和數(shù)值位一起編碼表示的數(shù)。符號用二進制數(shù)“0”或“1”來表示的符號位總在最高數(shù)值位之前常用的機器碼有原碼、補碼、反碼、移碼等真值:用“+”、“-”表示符號的數(shù)。 真值N1=+0.1011,N2=-0.1011, 機器數(shù)就為[N1]原=0.1011,[N2]原=1.1011。

用二進制數(shù)的編碼表示數(shù)值的大小符號的數(shù)值化表示.

用0表示正(“+”)號用1表示負(“-”)號。以字長為8位為例,和-1101101機器數(shù)的特點機器數(shù)所表示的數(shù)值范圍是有限的,例:一臺字長為n位的機器,它所能表示的機器數(shù)X除0以外,最小是1,最大是2n-1,即其所表示的范圍是:1≤X≤2n-1定點數(shù)和浮點數(shù)的不同表示2、定點數(shù)和浮點數(shù)定點數(shù):機器中數(shù)的小數(shù)點位置約定固定不變。通常采用兩種約定,如圖所示小數(shù)點固定在數(shù)值部分的最高位之前(純小數(shù))。小數(shù)點固定在數(shù)值部分的最后面(純整數(shù))。浮點數(shù):是指在數(shù)的表示中,其小數(shù)點的位置根據(jù)某個比例因子浮動。任一個二進制數(shù)N可以表示成:

N=2E·M----M為數(shù)N的尾數(shù)或數(shù)碼,

----E為指數(shù),是數(shù)N的階碼浮點數(shù)分為階碼和尾數(shù)兩個部分。Ms為尾數(shù)的符號位,安排在最高一位;E為階碼,緊跟符號位之后,占m位;M為尾數(shù),在低位部分,占n位。浮點數(shù)通常采用規(guī)格化的表示方法。所謂浮點數(shù)的規(guī)格化就是其尾數(shù)的第一位要為1,若不為1,就要用“左規(guī)”的方法使其為1。左規(guī)就是尾數(shù)向左移動(同時調(diào)整階碼),直至尾數(shù)的第一位為1或階碼為全0或最小值。例如:

210×0.1101,-210×0.1101就是規(guī)格化的浮點數(shù);211×0.0110,-211×0.0110是非規(guī)格化的浮點數(shù)。浮點數(shù)規(guī)格化

當一個浮點數(shù)的尾數(shù)為0,不論其階碼為何值;或者階碼的值遇到比它能表示的最小值還小時,不管其尾數(shù)為何值,計算機都把該浮點數(shù)看成是0,稱為機器零。浮點數(shù)的機器零3、定點數(shù)的原碼、反碼、補碼和移碼

設(shè)機器字長8位,最高位是符號位,其余7位是數(shù)值位原碼([X]原表示X的原碼)符號位0----‘+’,1----‘-’,數(shù)值部分用二進制數(shù)的絕對值表示的方法。8位二進制數(shù)的原碼表示范圍-127~+127例如:

[+59]原=00111011 [-59]原=10111011注意:原碼有“正零”和“負零”之分

[+0]原=00000000 [-0]原=10000000反碼:正數(shù)的反碼就是這個數(shù)本身,而負數(shù)的反碼是符號位為1,數(shù)值部分等于其絕對值各位求反。

8位二進制數(shù)的原碼表示范圍-127~+127例如:[+59]反=00111011,[-59]反=11000100。零的反碼也有兩個

[0]反=00000,[-0]反=11111補碼

求一個二進制數(shù)補碼的方法是,正數(shù)的補碼與其原碼相同;負數(shù)的補碼是先把其原碼除符號外的各位先求反,然后在最低位加1。

8位二進制數(shù)的原碼表示范圍-128~+127例:[+59]補=00111011,[-59]補=11000101。

0的補碼只有一種形式:[0]補=000000008位二進制數(shù)表示的原碼、反碼和補碼計算機均采用補碼運算,其運算結(jié)果仍為補碼形式?!纠?/p>

在字長為8位的計算機中,求下列數(shù)的原碼、反碼及補碼+18、-18、+31、-31、+127、-127

[+18]原=[+18]反=[+18]補=00010010[-18]原=10010010[-18]反=11101101[-18]補=11101110

[+31]原=[+31]反=[+31]補=00011111[-31]原=10011111[-31]反=11100000[-31]補=11100001

[+127]原=[+127]反=[+127]補=01111111[-127]原=11111111[-127]反=10000000[-127]補=10000001移碼:也叫增碼或偏碼,常用于表示浮點數(shù)中的階碼。對于字長為n的計算機,若最高位為符號位,數(shù)值為n-1位當偏移量取為2n-1時,其真值x所對應的移碼的表示公式為:

[X]移=2n-1+X(-2n-1≤X<2n-1)[X]移可由[X]補求得,方法是把[X]補的符號位取反,就得到[X]移。【例】X=,Y=-1011,求[X]移和[Y]移。解:

[X]補=01011,所以[X]移=11011 [Y]補=10101,所以[Y]移=00101①最高一位為符號位,其取值與原碼、補碼都相反,“1”表示正號,“0”表示負號。移碼常用于表示浮點數(shù)的階碼,通常只使用整數(shù)。②對移碼一般只執(zhí)行加減運算,在對兩個浮點數(shù)進行乘除運算時,是尾數(shù)實現(xiàn)乘除運算,階碼執(zhí)行加減運算。對階碼執(zhí)行加減運算時,需要對得到的結(jié)果加以修正,修正量為2n-1,即要對符號位的結(jié)果取反后,才得到移碼形式的結(jié)果。③

在移碼的表示中,0有惟一的編碼,即[0]移=1000…0,而且,機器零的形式為

000…000。即當浮點數(shù)的階碼≤-2n-1時,不管尾數(shù)值的大小如何,都屬于浮點數(shù)下溢,被認為其值為0,這時,移碼表示的階碼值正好是每一位都為0的形式,與補碼的0完全一致。這有利于簡化機器中的判零線路。移碼的性質(zhì)4、十進制數(shù)的編碼BCD碼(Binary-CodedDecimal)

是用4位二進制編碼來表示一個十進制數(shù),代碼的每位都是固定有權(quán)的,因此稱為有權(quán)碼。把4位代碼中為1的各位的權(quán)加起來,即得到這個對應的十進制數(shù)。

BCD碼分按權(quán)分為8421碼、2421碼、5211碼等,最常用的是8421碼8421BCD碼:

二進制編碼各位的權(quán)分別是8、4、2、1。

十進制數(shù)碼與8421碼對照表每1位十進制數(shù)碼對應1個8421碼十進制數(shù)175的8421碼是:(175)10=()BCD5、數(shù)據(jù)校驗碼在計算機系統(tǒng)中傳送的數(shù)據(jù)有時會出現(xiàn)錯誤。為了提高數(shù)據(jù)傳送的正確性,可通過電路的可靠性來保證,可在數(shù)據(jù)代碼傳送過程中,對代碼進行校驗。代碼校驗的方法最好能查錯和糾錯。數(shù)據(jù)校驗碼就是一種常用的帶有發(fā)現(xiàn)某些錯誤或帶有自動改錯能力的數(shù)據(jù)編碼方法。常用的有

奇偶校驗、漢明校驗和循環(huán)冗余校驗奇偶校驗碼

在每個傳送碼的左邊或右邊加上1位校驗位,若是奇校驗,則包括校驗位編碼中1的個數(shù)湊成奇數(shù);若是偶校驗,則包括校驗位編碼中1的個數(shù)湊成偶數(shù)。

。能發(fā)現(xiàn)奇數(shù)個錯誤,但不能定位。無定位糾錯能力漢(海)明(Hamming)糾錯碼m個數(shù)據(jù)位外加r個糾錯位。在2i(i=0,1,2…)的位置放的是糾錯位。m個數(shù)據(jù)位的次序不變。如字符m的7位二進制碼為1101101,要加上4位糾錯碼0011(偶校驗),共11個bit。糾錯位的取值一個糾錯位由多個信息異或然后取偶/奇校驗

糾錯位的取值一個信息位影響多個糾錯位海明碼糾錯位取值舉例采用偶校驗接收方的校驗計算結(jié)果S4S3S2S1為0000意味著接收正確計算結(jié)果S4S3S2S1為0101意味著第5位出錯循環(huán)冗余檢錯碼CRCCRC碼計算舉例CRC碼計算舉例(續(xù)1)CRC碼計算舉例(續(xù)2)三個生成多項式國際標準習題

一、選擇題1.(2000)10化成十六進制數(shù)是______。

A.(7CD)16B.(7D0)16C.(7E0)16D.(7F0)163.下列數(shù)中最大的數(shù)是______。

A.(10011001)2B.(227)8

C.(98)16D.(152)104.______表示法主要用于表示浮點數(shù)中的階碼。

A.原碼B.補碼C.反碼D.移碼5.在小型或微型計算機里,普遍采用的字符編碼是______。

A.BCD碼B.16進制C.格雷碼D.ASCⅡ碼6.目前的計算機,從原理上講______。

A指令以二進制形式存放,數(shù)據(jù)以十進制形式存放

B指令以十進制形式存放,數(shù)據(jù)以二進制形式存放

C指令和數(shù)據(jù)都以二進制形式存放

D指令和數(shù)據(jù)都以十進制形式存放7.根據(jù)國標規(guī)定,每個漢字在計算機內(nèi)占用______存儲。

A.一個字節(jié)B.二個字節(jié)

C.三個字節(jié)D.四個字節(jié)8.下列數(shù)中最小的數(shù)為______。

A.(101001)2B.(52)8

C.(01010100)BCDD.(44)109.存儲器是計算機系統(tǒng)的記憶設(shè)備,主要用于______。

A.存放程序B.存放軟件

C.存放微程序D.存放程序和數(shù)據(jù)10.設(shè)X=-0.1011,則[X]補為______。

A.1.1011B.1.0100C.1.0101D.1.100112.至今為止,計算機中的所有信息仍以二進制方式表示的理由是______。

A.節(jié)約元件B.運算速度快

C.物理器件性能決定D.信息處理方便

漢字的A._____、B._____、C._____是計算機用于漢字輸入、內(nèi)部處理、輸出三種不同用途的編碼。二、填空1.機器數(shù)字長為8位(含1位符號位),當X=-127(十進制)時,求[X]原,[X]反,[X]補,[X]移?2.求十進制數(shù)-113的原碼表示,反碼表示,補碼表示和移碼表示(用8位二進制表示,并設(shè)最高位為符號位,真值為7位)。(原碼11110001反碼10001110

補碼10001111移碼00001111)三、應用題第二節(jié)運算方法和運算器原碼加法補碼加減法溢出判斷基本的二進制加法/減法器返回本章一、原碼加法符號相同的兩個原碼相加:其符號不變,兩個數(shù)的數(shù)值相加即可?!纠?】設(shè)X=,Y=,求Z=X+Y2.符號相異的兩個原碼相加:

先比較兩數(shù)的絕對值大小,用絕對值大的數(shù)減去絕對值小的數(shù),結(jié)果的符號是絕對值大的數(shù)的符號?!纠吭O(shè)X=,Y=-01010,求Z=X+Y解:先比較X與Y的絕對值,本題∣X∣>|Y|,所以做減法|X∣-|Y|,結(jié)果是Z=用原碼進行帶符號數(shù)相加運算步驟:①比較兩個數(shù)的絕對值的大??;②用絕對值大的數(shù)的絕對值減去絕對值小的數(shù)的絕對值;③結(jié)果賦以絕對值大的那個數(shù)的符號。原碼優(yōu)缺點:①表示直觀,與真值轉(zhuǎn)換方便②進行加、減運算時,符號位處理規(guī)則復雜。

結(jié)論:一般不用原碼進行運算二、補碼加減法補碼加法公式:

[X+Y]補=[X]補+[Y]補補碼減法公式:

[X-Y]補=[X]補+[-Y]補

[-Y]補=[Y]補+11、補碼與真值之間的轉(zhuǎn)換一個定點補碼整數(shù)[N]補=anan-1…a1a0,an是符號位。an-1…a1a0數(shù)值位補碼與真值的關(guān)系可以表示成:

結(jié)論:補碼運算中符號位可作為數(shù)值的一部分一起參與運算。在計算機中數(shù)據(jù)是以補碼的形式的存儲和運算的。例:已知[x2]補=10000010求x2補碼與真值之間的轉(zhuǎn)換舉例例:已知[x1]補=01111110求x1解:x1=-0×27+1×26+1×25+1×24+1×23+1×22+1×21+0×20

=-0+64+32+16+8+4+2+0=126解:x2=-1×27+0×26+0×25+0×24+0×23+0×22+1×21+0×20

=-128+0+0+0+0+0+2+0=-1262、補碼加減法運算舉例【例2.32】已知:X=0.1001,Y=0.0101求:X+Y=?解:

[X]補=0.1001000[Y]補=0.0101000[X+Y]補=[X]補+[Y]補

0.1001000

+0.0101000

-------------------

0.1110000

[X+Y]補=0.1110000X+Y=+0.1110補碼加減法運算舉例【例2.33】已知:X=0.1011,Y=-0.0101求:X+Y=?解:

[X]補=0.1011000[Y]補=1.1011000[X+Y]補=[X]補+[Y]補

[X+Y]補=0.0110000X+Y=+0.01100.1011000

+1.1011000

-------------------

10.0110000

、、、、補碼加減法運算舉例【例2.34】已知:X=+0.1101,Y=+0.0110求:X-Y=?解:

[X]補=0.1101000[Y]補=0.0110000[-Y]補=1.1010000[X-Y]補=[X]補+[-Y]補

[X+Y]補=0.0111000X+Y=+0.01110.1101000

+1.1010000

-------------------

1

0.0111000

、、補碼加減法運算舉例【例2.35】已知:X=-0.1101,Y=-0.0110求:X+Y=?解:

[X]補=1.0011000[Y]補=1.1010000[-Y]補=0.0110000[X-Y]補=[X]補+[-Y]補[X+Y]補=1.1001000X+Y=-0.01111.0011000

+0.0110000

-------------------

1.1001000

、、結(jié)論

補碼運算能將減法變?yōu)榧臃ǎ\算器中只需一個加法器即可完成加減法運算。補碼加減法運算時,符號位與數(shù)碼位一樣參加運算。補碼小數(shù)的加減法運算以"2"為模,補碼整數(shù)運算以"2n+1"為模,即符號位向更高位的進位自然丟失,不影響運算結(jié)果的正確性?!纠恳阎篨=-0.0625,Y=-0.75。求:X+Y=?,X-Y=?解:X=-0.0001

Y=-0.1100[X]原=1.0001[X]補=1.1111[Y]原=1.1100[Y]補=1.0100[-Y]補=0.1100

[X]補=1.1111

[X]補=1.1111

+[Y]補=1.0100

+[-Y]補=0.1100--------------------------------------=[X+Y]補=1.0011

=[X-Y]補=0.1011[X+Y]原=1.1101

[X-Y]原=0.1011X+Y=-0.1101=-0.8125X-Y=+0.1011=+0.6875【例】已知:X=-20,Y=+9。求:X+Y,X-Y解:

X=-10100Y=+01001[X]原=110100

[X]補=101100[Y]原=001001

[Y]補=001001[-Y]補=110111

[X]補=101100

[X]補=101100+[Y]補=001001

+[-Y]補=110111-------------------

------------------=[X+Y]補=110101

=[X-Y]補=100011[X+Y]原=101011

[X-Y]原=111101

X+Y=-01011=-11X-Y=-11101=-29隨堂練習已知X=-10110,Y=用8位補碼運算求:X+Y,X-Y三、定點加減法運算中的溢出問題

“運算溢出”是指運算結(jié)果大于機器所能表示的最大正數(shù)或小于所能表示的最小負數(shù)“運算溢出”只對帶符號數(shù)的運算有效。溢出是一種錯誤,計算機在運算過程中必須能發(fā)現(xiàn)這種錯誤,并進行必要的處理常用的判溢出的方法有以下兩種:采用變形補碼判溢出利用符號位進位信號判溢出。

溢出舉例

[X]補=0.1010

[X]補=1.0001+[Y]補=0.1001

+[Y]補=1.0111--------------------------------------=[X+Y]補=1.0011

=[X+Y]補=0.10001、用變形補碼判定溢出“變形補碼”是采用2個符號位的補碼。記作[X]‘補例如:X=+0.1010,則[X]’補=00.1010Y=-0.1010,則[Y]’補=11.0110由S1⊕S2來判斷是否產(chǎn)生了溢出兩個符號位相同,S1⊕S2=0(即“00”或“11”)時,不溢出。兩位符號位相異,S1⊕S2=1(即“01”或“10”)時,產(chǎn)生溢出。S2S1若采用變形補碼運算,結(jié)果為:

[X]'補=00.1010

[X]'補=11.0001

+[Y]'補=00.1001

+[Y]'補=11.0111----------------------------------------[X+Y]'補=01.0011

[X+Y]'補=10.10002、用雙高位法判定溢出

對于帶符號數(shù),最高位是符號位,若將最高數(shù)碼位向符號位的進位叫做“進位入”,記作Cn-1,而將符號位向向更高位的進位叫做“進位出”,記作Cn。對上面的例子,有如下情形:

[X]補=0.1010

[X]補=1.0001+[Y]補=0.1001

+[Y]補=1.0111--------------------

--------------------=[X+Y]補=1.0011

=[X+Y]補=0.1000Cn-1=1

Cn-1=0Cn=0

Cn=1當Cn⊕Cn-1=0時,無溢出

當Cn⊕Cn-1=1時,產(chǎn)生了溢出隨堂練習已知X和Y,分別用變形補碼和雙高位法計算X-Y,并指出結(jié)果是否有溢出。(1)X=0.11011,Y=-0.11111(2)X=-0.10111,Y=0.11011[X+Y]補=[X]補+[Y]補[X-Y]補=[X]補+[-Y]補[-Y]補=[Y]補+1可以用一個加法器實現(xiàn)加、減法運算。做加法時,直接輸入加數(shù)的補碼。做減法時,先求出負的減數(shù)的補碼,再相加。四、基本的二進制加法/減法器(1)一位全加器兩個二進制數(shù)字Ai,Bi和一個進位輸入Ci相加,產(chǎn)生一個和輸出Si,以及一個進位輸出Ci+1。一位全加器進行加法運算的輸入輸出真值表如右圖所示。輸入輸出AiBiCiSiCi+10000000110010100110110010101011100111111根據(jù)真值表,三個輸入端和兩個輸入端可按如下邏輯方程進行聯(lián)系:

Si=Ai⊕Bi⊕Ci

Ci+1=AiBi+BiCi+CiAi按上面的表達式可組成的一位全加器FA。

Si—本位求和

Ci+1—進位第三節(jié)定點乘、除法運算原碼一位乘法定點原碼并行乘法原碼除法一、定點原碼并行乘法設(shè)n位被乘數(shù)和乘數(shù)用定點數(shù)表示被乘數(shù)[x]原=xf

xn-1…x1x0乘數(shù)[y]原=yf

yn-1…y1y0則乘積[z]原=(xf⊕yf)+(xn-1…x1x0)(yn-1…y1y0)xf為被乘數(shù)符號,yf為乘數(shù)符號。

設(shè)x=0.1101,y=0.1011.讓我們先用習慣方法求其乘積,其過程如下:習慣的算法對機器并不完全適用。兩個n位數(shù)相乘,乘積可能為2n位。只有兩個操作數(shù)相加的加法器難以勝任將各n位積一次相加起來的運算。早期計算機中采用串行的“加法—移位”實現(xiàn)。不需要很多器件串行方法太慢,目前多采用并行乘法器

二、并行乘法器FA是一位全加器,F(xiàn)A的斜線方向為進位輸出,豎線方向為和輸出,所有被加數(shù)項的排列和A*B=P乘法過程中的被加數(shù)矩陣相同。二、直接補碼乘法陣列

(a4)

a3

a2

a1

a0=A

×)(b4)

b3

b2

b1

b0=B

(a4b0)

a3b0

a1b0

a1b0

a0b0

(a4b1)

a3b1

a2b1

a1b1

a0b1

(a4b2)

a3b2

a2b2

a1b2

a0b2

(a4b3)

a3b3

a2b3

a1b3

a0b3

+)

a4b4

(a3b4)

(a2b4)

(a1b4)

(a0b4)

p9p8p7

p6

p5

p4

p3

p2

p1

p0

直接補碼乘法陣列三、原碼除法設(shè)有n位定點小數(shù)(定點整數(shù)也同樣適用):被乘數(shù)x,其原碼為

[x]原=xf·xn-1…x1x0除數(shù)y,其原碼為

[y]原=yf·yn-1…y1y0則有商q=x÷y,其原碼為:

[q]原=(xf⊕yf)·(xn-1…x1x0/yn-1…y1y0)1、手工計算除法設(shè)X=0.1001,Y=0.1011求x÷y012、恢復余數(shù)除法3、加減交替法例2.44:X=0.101001,y=0.111求X÷Y解:[X]補=0.101001,[Y]補=0.111[-Y]補=1.001+[-Y]補0.1010011.001被除數(shù)第一步減除數(shù)Y+[-Y]補->1.110001<0q0=00.0111余數(shù)負商0下步加除數(shù)右移1位+[-Y]補->0.001101>0q1=11.11001余數(shù)正商1下步減除數(shù)右移1位+[Y]補->1.111111<0q2=00.000111余數(shù)負商0下步加除數(shù)右移3位0.000110>0q3=0余數(shù)正商1第四節(jié)定點運算器

定點運算器的構(gòu)成算術(shù)邏輯運算單元寄存器組運算器的基本結(jié)構(gòu)一、定點運算器的構(gòu)成運算器是數(shù)據(jù)的加工處理部件,是CPU的重要組成部分。盡管各種計算機的運算器結(jié)構(gòu)可能有這樣或那樣的不同,但是它們的最基本的結(jié)構(gòu)中必須有算術(shù)/邏輯運算單元、數(shù)據(jù)緩沖寄存器、通用寄存器、多路轉(zhuǎn)換器和數(shù)據(jù)總線等邏輯構(gòu)件。

二、算術(shù)邏輯運算單元ALU算術(shù)/邏輯運算單元(ALU),它不僅具有多種算術(shù)運算和邏輯運算的功能,而且具有先行進位邏輯,從而能實現(xiàn)高速運算能處理的位數(shù)與計算機的機器字長有關(guān)。1、基本思想

先將Ai和Bi先組合成由控制參數(shù)S0,S1,S2,S3控制的組合函數(shù)Xi和Yi(如圖所示),然后再將Xi,Yi和下一位進位數(shù)通過全加器進行全加。這樣,不同的控制參數(shù)可以得到不同的組合函數(shù),因而能夠?qū)崿F(xiàn)多種算術(shù)運算和邏輯運算。2、74LS181ALU的電路3、算術(shù)和邏輯運算的實現(xiàn)圖中除了S0—S3四個控制端外,還有一個控制端M,它是用來控制ALU是進行算術(shù)運算還是進行邏輯運算的。當M=0時,M對進位信號沒有任何影響。此時Fi不僅與本位的被操作數(shù)Yi和操作數(shù)Xi有關(guān),而且與向本位的進位值Cn+i有關(guān),因此M=0時,進行算術(shù)操作。當M=1時,封鎖了各位的進位輸出,即Cn+i=0,因此各位的運算結(jié)果Fi僅與Yi和Xi有關(guān),故M=1時,進行邏輯操作。三、寄存器組位置:在cpu內(nèi)部作用:存放運算所需的操作數(shù)和結(jié)果優(yōu)點:是計算機中存取速度最快的存儲器件。缺點:容量小例如:8086CPU內(nèi)部的某些寄存器四、運算器的基本結(jié)構(gòu)⒈單總線結(jié)構(gòu)的運算器

運算器所有部件都接到同一條總線上的運算器結(jié)構(gòu)是單總線結(jié)構(gòu)的運算器。⒉雙總線結(jié)構(gòu)的運算器

雙總線結(jié)構(gòu)的運算器如下圖所示。在這種結(jié)構(gòu)中,兩個操作數(shù)同時加到ALU進行運算,只需要一次操作控制,而且馬上可以得到運算結(jié)果。ALU的輸出不能直接加到總線上,必須在ALU的輸出端設(shè)置一個緩沖寄存器。整個操作分兩步完成:第一步,在ALU的兩個輸入端輸入操作數(shù),形成結(jié)果并送入緩沖寄存器;第二步,把結(jié)果送入目的寄存器。⒊三總線結(jié)構(gòu)的運算器

三總線結(jié)構(gòu)的運算器如下圖所示。在三總線結(jié)構(gòu)運算器中,ALU的兩個輸入端分別由兩條總線供給,而ALU的輸出則與第三條總線相連。三總線結(jié)構(gòu)的運算器的特點是操作時間快。五、運算器組成實例⒈最簡單的運算器

下圖示出的一個運算器只有三個邏輯部件:算術(shù)邏輯運算單元ALU、累加寄存器AC和數(shù)據(jù)緩沖寄存器DR。是最簡單的運算器。一臺小型機的運算器第五節(jié)浮點運算器浮點加減法運算浮點運算器一、浮點數(shù)的加減法運算完成浮點加減運算的操作過程大體分為四步:第一步,0操作數(shù)檢查;第二步,比較階碼大小并完成對階;第三步,尾數(shù)進行加或減運算;第四步,結(jié)果規(guī)格化并進行舍入處理。設(shè)有兩個浮點數(shù)x和y,它們分別為x=2Ex·Mxy=2Ey·My

其中Ex和Ey分別為數(shù)x和y的階碼,Mx和My為數(shù)x和y的尾數(shù)。1、0操作數(shù)檢查

浮點加減運算過程比定點運算過程復雜。如果判知兩個操作數(shù)x或y中有一個數(shù)為0,即可得知運算結(jié)果而沒有必要再進行后續(xù)的一系列操作,以節(jié)省運算時間。0操作數(shù)檢查步驟則用來完成這一功能。2、比較階碼大小并完成對階兩浮點數(shù)進行加減,首先要看兩數(shù)的階碼是否相同,即小數(shù)點位置是否對齊。若兩數(shù)階碼相同,表示小數(shù)點是對齊的,就可以進行尾數(shù)的加減運算。反之,若兩數(shù)階碼不同,表示小數(shù)點位置沒有對齊,此時必須使兩數(shù)的階碼相同,這個過程叫做對階。ΔE=Ex-Ey

若ΔE=0,表示兩數(shù)階碼相等,即Ex=Ey;若ΔE>0,表示Ex>Ey;

若ΔE<0,表示Ex>Ey。在對階時,總是使小階向大階看齊,即小階的尾數(shù)向右移位(相當于小數(shù)點左移),每右移一位,其階碼加1,直到兩數(shù)的階碼相等為止,右移的位數(shù)等于階差ΔE3、尾數(shù)求和運算對階結(jié)束后,即可進行尾數(shù)的求和運算。不論是加法運算還是減法運算,

都按加法進行操作,其方法與定點加減運算完全一樣。4、結(jié)果規(guī)格化

在浮點加減運算時,尾數(shù)求和的結(jié)果也可以得到01.XX…X或10.XX…X,即兩符號位不相等,這在定點加減運算中稱為溢出,是不允許的。但在浮點運算中,它表明尾數(shù)求和結(jié)果的絕對值大于1,向左破壞了規(guī)格化。此時將尾數(shù)運算結(jié)果右移以實現(xiàn)規(guī)格化表示,稱為向右規(guī)格化。規(guī)則是:尾數(shù)右移1位,階碼加1。5、舍入處理在對階或向右規(guī)格化時,尾數(shù)要向右移位,這樣,被右移的尾數(shù)的低位部分會被丟掉,從而造成一定誤差,因此要進行舍入處理。簡單的舍入方法有兩種:一種是“0舍1入”法,即如果右移時被丟掉數(shù)位的最高位為0則舍去,反之則將尾數(shù)的末位加“1”。另一種是“恒置1”法,即只要數(shù)位被移掉,就在尾數(shù)的末位恒置“1”。6、溢出處理

浮點數(shù)的溢出是以其階碼溢出表現(xiàn)出

溫馨提示

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

最新文檔

評論

0/150

提交評論