計算機(jī)組成原理--運(yùn)算方法與運(yùn)算器.ppt_第1頁
計算機(jī)組成原理--運(yùn)算方法與運(yùn)算器.ppt_第2頁
計算機(jī)組成原理--運(yùn)算方法與運(yùn)算器.ppt_第3頁
計算機(jī)組成原理--運(yùn)算方法與運(yùn)算器.ppt_第4頁
計算機(jī)組成原理--運(yùn)算方法與運(yùn)算器.ppt_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、運(yùn)算方法與運(yùn)算器,2/00,本章內(nèi)容: 1 數(shù)據(jù)與文字的表示方法 2 定點加法、減法運(yùn)算 3 定點乘法運(yùn)算 4 定點除法運(yùn)算 5 定點運(yùn)算器的組成 6 浮點運(yùn)算方法和浮點運(yùn)算器,3/00,1 數(shù)據(jù)與文字的表示方法,本節(jié)內(nèi)容: 1.1 數(shù)據(jù)格式 1.2 數(shù)的機(jī)器碼表示 1.3 字符與字符串的表示方法 1.4 漢字的表示方法 1.5 校驗碼,4/00,1.1 數(shù)據(jù)格式,計算機(jī)中常用的數(shù)據(jù)表示格式有兩種,一是定點格式,二是浮點格式。 一般來說,定點格式容許的數(shù)值范圍有限,但要求的處理硬件比較簡單。而浮點格式容許的數(shù)值范圍很大,但要求的處理硬件比較復(fù)雜。,5/00,定點數(shù)的表示方法,定點表示:約定機(jī)器

2、中所有數(shù)據(jù)的小數(shù)點位置是固定不變的。由于約定在固定的位置,小數(shù)點就不再使用記號“.”來表示。通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)。 定點數(shù)012 n 在定點機(jī)中表示如下(0 :符號位,0代表正號,1代表負(fù)號): 純小數(shù)的表示范圍為(012 n各位均為0時最?。桓魑痪鶠?時最大): 0|12n,6/00,純整數(shù)的表示范圍為: 0|2n1 目前計算機(jī)中多采用定點純整數(shù)表示,因此將定點數(shù)表示的運(yùn)算簡稱為整數(shù)運(yùn)算。,7/00,浮點數(shù)的表示方法,電子的質(zhì)量(91028克)和太陽的質(zhì)量(21033克)相差甚遠(yuǎn),在定點計算機(jī)中無法直接來表示這個數(shù)值范圍。要使它們送入定點計算機(jī)進(jìn)行某種運(yùn)算,必須對它們分別取不同的比

3、例因子,使其數(shù)值部分絕對值小于1,即: 9 10 28 0.9 1027 2 10330.2 1034,8/00,這里的比例因子1027 和 1034要分別存放在機(jī)器的某個存儲單元中,以便以后對計算結(jié)果按這個比例增大。顯然這要占用一定的存儲空間和運(yùn)算時間。因此得到浮點表示法如下: 浮點表示法:把一個數(shù)的有效數(shù)字和數(shù)的范圍在計算機(jī)的一個存儲單元中分別予以表示,這種把數(shù)的范圍和精度分別表示的方法,數(shù)的小數(shù)點位置隨比例因子的不同而在一定范圍內(nèi)自由浮動。,9/00,任意一個十進(jìn)制數(shù) 可以寫成: N = 10E.M 同樣,在計算機(jī)中一個任意進(jìn)制數(shù) 可以寫成 e. 其中: :尾數(shù),是一個純小數(shù)。 e :比

4、例因子的指數(shù),稱為浮點數(shù)的指數(shù),是一個整數(shù)。 R :比例因子的基數(shù),對于二進(jìn)計數(shù)值的機(jī)器是一個常數(shù),一般規(guī)定 為2,8或16。 一個機(jī)器浮點數(shù)由階碼和尾數(shù)及其符號位組成(尾數(shù):用定點小數(shù)表示,給出有效數(shù)字的位數(shù)決定了浮點數(shù)的表示精度; 階碼:用整數(shù)形式表示,指明小數(shù)點在數(shù)據(jù)中的位置,決定了浮點數(shù)的表示范圍。):,10/00,為便于軟件移植,按照 IEEE754 標(biāo)準(zhǔn),32位浮點數(shù)和64位浮點數(shù)的標(biāo)準(zhǔn)格式為 :,11/00,32位的浮點數(shù)中, :浮點數(shù)的符號位,1 位,0表示正數(shù),1表示負(fù)數(shù)。 :尾數(shù),23位,用小數(shù)表示,小數(shù)點放在尾數(shù)域的最前面。 :階碼(8 位),階符采用隱含方式,即采用移碼

5、方式來表示正負(fù)指數(shù)。移碼方法對兩個指數(shù)大小的比較和對階操作都比較方便,因為階碼域值大者其指數(shù)值也大。采用這種方式時,將浮點數(shù)的指數(shù)真值e 變成階碼 時,應(yīng)將指數(shù) e 加上一個固定的偏移值127(01111111),即 e127.,12/00,IEEE754 標(biāo)準(zhǔn)中,一個規(guī)格化的32位浮點數(shù)的真值可表示為: (1)s(1.)2127 e127 一個規(guī)格化的64位浮點數(shù)的真值為 : (1)s(1.)21023 e1023,13/00,同一個浮點數(shù)的表示方法不是唯一的,如: (1.75)10=1.1120 (IEEE規(guī)格化表示) =0.11121 (傳統(tǒng)規(guī)格化表示) =0.011122 =0.001

6、1123,14/00,為提高數(shù)據(jù)的表示精度,當(dāng)尾數(shù)的值不為 0 時,尾數(shù)域的最高有效位應(yīng)為1,否則以修改階碼同時左右移小數(shù)點的辦法,使其變成這一表示形式,這稱為浮點數(shù)的規(guī)格化表示。 當(dāng)浮點數(shù)的尾數(shù)為 0,不論其階碼為何值,或者當(dāng)階碼的值遇到比它能表示的最小值還小時,不管其尾數(shù)為何值,計算機(jī)都把該浮點數(shù)看成零值,稱為機(jī)器零。,15/00,當(dāng)階碼E 為全0且尾數(shù)M 也為全0時,表示的真值x 為零,結(jié)合符號位S 為0或1,有正零和負(fù)零之分。當(dāng)階碼E 為全1且尾數(shù)M 為全0時,表示的真值x 為無窮大,結(jié)合符號位S 為0或1,也有+和-之分。這樣在32位浮點數(shù)表示中,要除去E 用全0和全1(255)10

7、表示零和無窮大的特殊情況,指數(shù)的偏移值不選128(10000000),而127(01111111)。對于規(guī)格化浮點數(shù),E 的范圍變?yōu)?到254,真正的指數(shù)值e 則為-126到+127。因此32位浮點數(shù)表示的絕對值的范圍是10-381038(以10的冪表示)。 浮點數(shù)所表示的范圍遠(yuǎn)比定點數(shù)大。一臺計算機(jī)中究竟采用定點表示還是浮點表示,要根據(jù)計算機(jī)的使用條件來確定。一般在高檔微機(jī)以上的計算機(jī)中同時采用定點、浮點表示,由使用者進(jìn)行選擇,而單片機(jī)中多采用定點表示。,16/00,例1 若浮點數(shù)的754標(biāo)準(zhǔn)存儲格式為(41360000)16,求其浮點數(shù)的十進(jìn)制數(shù)值。,17/00,解: 將十六進(jìn)制數(shù)展開后,

8、可得二進(jìn)制數(shù)格式為: 指數(shù)e階碼127100000100111111100000011=(3)10 包括隱藏位1的尾數(shù)1.M1.011 0110 0000 0000 0000 00001.011011 于是有(1)s1.M2e (1.011011)231011.011(11.375)10,18/00,例2 將(20.59375)10轉(zhuǎn)換成754標(biāo)準(zhǔn)的32位浮點數(shù)的二進(jìn)制存儲格式。,19/00,解: 首先分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù): 20.5937510100.10011 然后移動小數(shù)點,使其在第1,2位之間 10100.100111.01001001124e4 于是得到: S0,E41

9、27131,M010010011 最后得到32位浮點數(shù)的二進(jìn)制存儲格式為: 0100 0001 1010 0100 1100 0000 0000 0000(41A4C000)16,20/00,1.2 數(shù)的機(jī)器碼表示,在計算機(jī)中對數(shù)據(jù)進(jìn)行運(yùn)算操作時,符號位如何表示呢?是否也同數(shù)值位一道參加運(yùn)算操作呢?為了妥善的處理好這些問題,就產(chǎn)生了把符號位和數(shù)字位一起編碼來表示相應(yīng)的數(shù)的各種表示方法,如原碼、補(bǔ)碼、反碼、移碼等。為了區(qū)別一般書寫表示的數(shù)和機(jī)器中這些編碼表示的數(shù),通常將前者稱為真值,后者稱為機(jī)器數(shù)或機(jī)器碼。,21/00,1.原碼表示法 (1)若定點小數(shù)的原碼形式為x0 x1 x2 xn,則原碼表

10、示的定義是 式中原是機(jī)器數(shù),是真值 例如,+0.1001,則原0.1001 -0.1001,則原1.1001 對于0,原碼機(jī)器中往往有“+0”、“-0”之分,故有兩種形式: +0原=0.000.0 -0原=1.000.0,22/00,(2)若定點整數(shù)的原碼形式為x0 x1 x2 xn,則原碼表示的定義是 采用原碼表示法簡單易懂,但它的最大缺點是加法運(yùn)算復(fù)雜。這是因為,當(dāng)兩數(shù)相加時,如果是同號則數(shù)值相加;如果是異號,則要進(jìn)行減法。而在進(jìn)行減法時還要比較絕對值的大小,然后大數(shù)減去小數(shù),最后還要給結(jié)果選擇符號。為了解決這些矛盾,人們找到了補(bǔ)碼表示法。,23/00,2.補(bǔ)碼表示法 我們先以鐘表對時為例

11、說明補(bǔ)碼的概念。假設(shè)現(xiàn)在的標(biāo)準(zhǔn)時間為4點正; 而有一只表已經(jīng)7點了,為了校準(zhǔn)時間,可以采用兩種方法:一是將時針退 7-4=3 格;一是將時針向前撥12-3=9格。這兩種方法都能對準(zhǔn)到4點,由此可以看出,減3和加9是等價的,就是說9是(-3)對12的補(bǔ)碼,可以用數(shù)學(xué)公式表示 -3+9(mod12) mod12的意思就是12模數(shù),這個“?!北硎颈粊G掉的數(shù)值。上式在數(shù)學(xué)上稱為同余式。 上例中其所以7-3和7+9(mod12)等價,原因就是表指針超過12時,將12自動丟掉,最后得到16-12=4。從這里可以得到一個啟示,就是負(fù)數(shù)用補(bǔ)碼表示時,可以把減法轉(zhuǎn)化為加法。這樣,在計算機(jī)中實現(xiàn)起來就比較方便。,

12、24/00,(1)若定點小數(shù)補(bǔ)碼形式為x0 . x1 x2 xn,則補(bǔ)碼表示的定義是 例如,+0.1011,則補(bǔ)0.1011 -0.1011, 則補(bǔ)10+10.0000-0.10111.0101 對于0,0補(bǔ)0補(bǔ)0.0000 (mod 2) 注意,0的補(bǔ)碼表示只有一種形式。,25/00,(2)對定點整數(shù),補(bǔ)碼表示的定義是 采用補(bǔ)碼表示法進(jìn)行減法運(yùn)算就比原碼方便得多了。因為不論數(shù)是正還是負(fù),機(jī)器總是做加法,減法運(yùn)算可變?yōu)榧臃ㄟ\(yùn)算。但根據(jù)補(bǔ)碼定義,求負(fù)數(shù)的補(bǔ)碼要從2減去|x|。為了用加法代替減法,結(jié)果還得在求補(bǔ)碼時作一次減法,這顯然是不方便的。下面介紹的反碼表示法可以解決負(fù)數(shù)的求補(bǔ)問題。,26/0

13、0,3.反碼表示法 所謂反碼,就是二進(jìn)制的各位數(shù)碼0變?yōu)?,1變?yōu)?。 即:若xi=1,則反碼為xi=0;若xi=0,則反碼xi=1。 在計算機(jī)中用觸發(fā)器寄存數(shù)碼,若觸發(fā)器Q端輸出表示原碼,則其Q端輸出就是反碼。由此可知,反碼是容易得到的。,27/00,(1)對定點小數(shù),反碼表示的定義為 其中n代表數(shù)的位數(shù)。 在一些文獻(xiàn)中,這種以2為基數(shù)的反碼又稱為1的補(bǔ)碼。,28/00,一般情況下, 對于正數(shù) 0. x1 x2 xn, 則 反0. x1 x2 xn 對于負(fù)數(shù) 0. x1 x2 xn,則有 反1. x1 x2 xn 對于0,有0反和0反 之分: 0反0.00.0 0反1.11.1,29/00,

14、比較反碼與補(bǔ)碼的公式 反(22n) 補(bǔ)2 可得到 補(bǔ)反2n 這就是通過反碼求補(bǔ)碼的重要公式。這個公式告訴我們,若要一個負(fù)數(shù)變補(bǔ)碼,其方法是符號位置1,其余各位0變1,1變0,然后在最末位(2-n)上加1。,30/00,(2)對定點整數(shù),反碼表示的定義為:,31/00,4.移碼表示法 移碼通常用于表示浮點數(shù)的階碼。由于階碼是個n位的整數(shù),假定定點整數(shù)移碼形式為 x1 x2 xn時,對定點整數(shù),移碼的傳統(tǒng)定義是真值加上一個固定常數(shù)2n,32/00,若階碼數(shù)值部分為7位,以表示真值,則 移27 = 128 + 128 128 例如,當(dāng)正數(shù)1010101 時, 移1,1010101 ; 當(dāng)負(fù)數(shù)1010

15、1 01時, 移27271010101 10000000 - 1010101 = 0,0101011。 移碼中的逗號不是小數(shù)點,而是表示左邊一位是符號位。,33/00,小結(jié):上面的數(shù)據(jù)四種機(jī)器表示法中,移碼表示法主要用于表示浮點數(shù)的階碼。由于補(bǔ)碼表示對加減法運(yùn)算十分方便,因此目前機(jī)器中廣泛采用補(bǔ)碼表示法。在這類機(jī)器中,數(shù)用補(bǔ)碼表示,補(bǔ)碼存儲,補(bǔ)碼運(yùn)算。也有些機(jī)器,數(shù)用原碼進(jìn)行存儲和傳送,運(yùn)算時改用補(bǔ)碼。還有些機(jī)器在做加減法時用補(bǔ)碼運(yùn)算,在做乘除法時用原碼運(yùn)算。,34/00,例3以定點整數(shù)為例,用數(shù)軸形式說明原碼、反碼、補(bǔ)碼表示范圍和可能的數(shù)碼組合情況。 解: 原碼、反碼、補(bǔ)碼表示分別示于下圖。

16、與原碼、反碼不同,在補(bǔ)碼表示中“0”只有一種形式,且用補(bǔ)碼表示負(fù)數(shù)時范圍可到2n 。,35/00,例4將十進(jìn)制真值(127,1,0,1,127)列表表示成二進(jìn)制數(shù)及原碼、反碼、補(bǔ)碼、移碼值。 解:二進(jìn)制真值及其諸碼值列于下表,其中0在原反中有兩種表示。由表中數(shù)據(jù)可知,補(bǔ)碼值與移碼值差別僅在于符號位不同。,36/00,例5設(shè)機(jī)器字長16位,定點表示,尾數(shù)15位,數(shù)符1位,問: (1)定點原碼整數(shù)表示時,最大正數(shù)是多少?最小負(fù)數(shù)是多少? (2)定點原碼小數(shù)表示時,最大正數(shù)是多少?最小負(fù)數(shù)是多少?,37/00,解: (1)定點原碼整數(shù)表示 最大正數(shù)值(2151)10(32767) 10 最小負(fù)數(shù)值(

17、2151) 10(32767) 10 (2)定點原碼小數(shù)表示 最大正數(shù)值(1215) 10(0.111.11)2 最小負(fù)數(shù)值(1 215) 10 (0.111.11) 2,38/00,例6假設(shè)由S,E,M三個域組成的一個32位二進(jìn)制字所表示的非零規(guī)格化浮點數(shù),真值表示為: (1)s(1.M)2E128 問:它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負(fù)數(shù)、最小負(fù)數(shù)是多少?,39/00,解: (1)最大正數(shù) 1(12-23)2127 (2)最小正數(shù) 1.02128 (3)最小負(fù)數(shù) 1(12-23)2127 (4)最大負(fù)數(shù) 1.02128,40/00,1.3 字符與字符串的表示方法,1.字符的表示方

18、法 現(xiàn)代計算機(jī)不僅處理數(shù)值領(lǐng)域的問題,而且處理大量非數(shù)值領(lǐng)域的問題。這樣一來,必然要引入文字、字母以及某些專用符號,以便表示文字語言、邏輯語言等信息。 目前國際上普遍采用的字符系統(tǒng)是七單位的ASCII碼(美國國家信息交換標(biāo)準(zhǔn)字符碼),它包括10個十進(jìn)制數(shù)碼,26個英文字母和一定數(shù)量的專用符號,如$,%,等,共128個元素,因此二進(jìn)制編碼需7位,加一位偶校驗位,共8位一個字節(jié)。ASCII碼規(guī)定8個二進(jìn)制位的最高一位為0,余下的7位可以給出128個編碼,表示128個不同的字符。其中95個編碼,對應(yīng)著計算機(jī)終端能敲入并且可以顯示的95個字符,打印機(jī)設(shè)備也能打印這95個字符,如大小寫各26個英文字母,

19、09這10個數(shù)字符,通用的運(yùn)算符和標(biāo)點符號,*,/, 等等。另外的33個字符,其編碼值為031和127,則不對應(yīng)任何一個可以顯示或打印的實際字符,它們被用作控制碼,控制計算機(jī)某些外圍設(shè)備的工作特性和某些計算機(jī)軟件的運(yùn)行情況。,41/00,2.字符串 字符串是指連續(xù)的一串字符,通常方式下,它們占用主存中連續(xù)的多個字節(jié),每個字節(jié)存一個字符。當(dāng)主存字由2個或4個字節(jié)組成時,在同一個主存字中,既可按從低位字節(jié)向高位字節(jié)的順序存放字符串的內(nèi)容,也可按從高位字節(jié)向低位字節(jié)的次序順序存放字符串的內(nèi)容。,42/00,1.4 漢字的表示方法,1.漢字的輸入編碼 為了能直接使用西文標(biāo)準(zhǔn)鍵盤把漢字輸入到計算機(jī),就必

20、須為漢字設(shè)計相應(yīng)的輸入編碼方法。當(dāng)前采用的方法主要有以下三類: 數(shù)字編碼 常用的是國標(biāo)區(qū)位碼,用數(shù)字串代表一個漢字輸入。區(qū)位碼是將國家標(biāo)準(zhǔn)局公布的6763個兩級漢字分為94個區(qū),每個區(qū)分94位,實際上把漢字表示成二維數(shù)組,每個漢字在數(shù)組中的下標(biāo)就是區(qū)位碼。區(qū)碼和位碼各兩位十進(jìn)制數(shù)字,因此輸入一個漢字需按鍵四次。 數(shù)字編碼輸入的優(yōu)點是無重碼,且輸入碼與內(nèi)部編碼的轉(zhuǎn)換比較方便,缺點是代碼難以記憶。 拼音碼 拼音碼是以漢字拼音為基礎(chǔ)的輸入方法。使用簡單方便,但漢字同音字太多,輸入重碼率很高,同音字選擇影響了輸入速度。 字形編碼 字形編碼是用漢字的形狀來進(jìn)行的編碼。把漢字的筆劃部件用字母或數(shù)字進(jìn)行編碼

21、,按筆劃的順序依次輸入,就能表示一個漢字。,43/00,2.漢字內(nèi)碼 漢字內(nèi)碼是用于漢字信息的存儲、交換、檢索等操作的機(jī)內(nèi)代碼,一般采用兩個字節(jié)表示。英文字符的機(jī)內(nèi)代碼是七位的ASCII碼,當(dāng)用一個字節(jié)表示時,最高位為“0”。為了與英文字符能相互區(qū)別,漢字機(jī)內(nèi)代碼中兩個字節(jié)的最高位均規(guī)定為“1”。 注意:有些系統(tǒng)中字節(jié)的最高位用于奇偶校驗位,這種情況下用三個字節(jié)表示漢字內(nèi)碼。,44/00,3.漢字字模碼 字模碼是用點陣表示的漢字字形代碼,它是漢字的輸出形式。 根據(jù)漢字輸出的要求不同,點陣的多少也不同。字模點陣的信息量很大,所占存儲空間也很大。因此字模點陣只能用來構(gòu)成漢字庫,而不能用于機(jī)內(nèi)存儲。

22、字庫中存儲了每個漢字的點陣代碼。當(dāng)顯示輸出或打印輸出時才檢索字庫,輸出字模點陣,得到字形。,45/00,漢字的字模點陣及編碼 注意,漢字的輸入編碼、漢字內(nèi)碼、字模碼是計算機(jī)中用于輸入、內(nèi)部處理、輸出三種不同用途的編碼,46/00,1.5 校驗碼,1 問題提出,47/00,元件故障噪聲干擾等各種因素常常導(dǎo)致計算機(jī)在處理信息過程中出現(xiàn)錯誤。為了防止錯誤,可將信號采用專門的邏輯線路進(jìn)行編碼以檢測錯誤,甚至校正錯誤。通常的方法是,在每個字上添加一些校驗位,用來確定字中出現(xiàn)錯誤的位置。 最簡單且應(yīng)用廣泛的檢錯碼是采用一位校驗位的奇校驗或偶校驗。,48/00,設(shè)(012 n-1)是一個n位字,則奇校驗位定

23、義為 C0 1 n-1 式中代表按位加,表明只有當(dāng)中包含有奇數(shù)個1時,才使C1,即C0。 同理,偶校驗位定義為 C0 1 n-1 即中包含偶數(shù)個1時,才使C0。 假設(shè)一個字從部件 A 傳送到部件 B。在源點 A,校驗位C可用上面公式算出來,并合在一起將(0 1 n-1 C)送到B。假設(shè)在B點真正接收到的是(0 1 n-1 C ),然后計算 F0 1 n-1 C 若F1,意味著收到的信息有錯,若F0,表明字傳送正確。奇偶校驗提供奇數(shù)個錯誤檢測,無法檢測偶數(shù)個錯誤,更無法識別錯誤信息的位置。,49/00,例7已知下表中左面一欄有5個字節(jié)的數(shù)據(jù)。請分別用奇校驗和偶校驗進(jìn)行編碼,填在中間一欄和右面一欄

24、。,50/00,解:假定最低一位為校驗位,其余高8位為數(shù)據(jù)位,列表如下。從中看出,校驗位的值取0還是取1, 是由數(shù)據(jù)位中1的個數(shù)決定的。,51/00,2 定點加法、減法運(yùn)算,本節(jié)內(nèi)容: 2.1 補(bǔ)碼加法 2.2 補(bǔ)碼減法 2.3 溢出概念與檢驗方法 2.4 基本的二進(jìn)制加法、減法器 2.5 十進(jìn)制加法器,52/00,2.1 補(bǔ)碼加法,負(fù)數(shù)用補(bǔ)碼表示后,可以和正數(shù)一樣來處理。 這樣,運(yùn)算器里只需要一個加法器就可以了,不必為了負(fù)數(shù)的加法運(yùn)算,再配一個減法器。 補(bǔ)碼加法的公式是 補(bǔ)補(bǔ)補(bǔ) ( mod 2) 證明如下。,53/00,現(xiàn)分四種情況來證明。假設(shè)采用定點小數(shù)表示,因此證明的先決條件是 1, 1

25、, 1。 (1)0,0,則0。 相加兩數(shù)都是正數(shù),故其和也一定是正數(shù)。數(shù)的補(bǔ)碼和原碼是一樣的,可得: 補(bǔ)補(bǔ)補(bǔ) (mod 2),54/00,(2)0,0,則0或0時,2()2,進(jìn)位2必丟失,又因()0, 故 補(bǔ)補(bǔ)補(bǔ)(mod 2) 當(dāng)0時,2 () 2,又因()0, 故 補(bǔ)補(bǔ)2()補(bǔ)(mod 2),55/00,(3)0,則0或 0。這種情況和第2種情況一樣,把和的位置對調(diào)即得證。 至此我們證明了,在模2意義下,任意兩數(shù)的補(bǔ)碼之和等于該兩數(shù)之和的補(bǔ)碼.這是補(bǔ)碼加法的理論基礎(chǔ),其結(jié)論也適用于定點整數(shù)。,56/00,例8 0.1001, 0.0101,求。 解: 補(bǔ)0.1001, 補(bǔ)0.0101 所以

26、0.1110,57/00,例90.1011, 0.0101,求。 解: 補(bǔ)0.1011,補(bǔ)1.1011 所以0.0110 由以上兩例看到,補(bǔ)碼加法的特點,一是符號位要作為數(shù)的一部分一起參加運(yùn)算,二是要在模2的意義下相加,即超過2的進(jìn)位要丟掉。,58/00,2.2 補(bǔ)碼減法,負(fù)數(shù)的減法運(yùn)算也要設(shè)法化為加法來做,其所以使用這種方法而不使用直接減法,是因為它可以和常規(guī)的加法運(yùn)算使用同一加法器電路,從而簡化了計算機(jī)的設(shè)計。 數(shù)用補(bǔ)碼表示時,減法運(yùn)算的公式為 補(bǔ)補(bǔ)補(bǔ)補(bǔ)補(bǔ) 證明如下。,59/00,只要證明補(bǔ)補(bǔ),上式即得證?,F(xiàn)證明如下: 補(bǔ)補(bǔ)補(bǔ)(mod 2) 補(bǔ)補(bǔ)補(bǔ) (1) 補(bǔ)()補(bǔ)補(bǔ)補(bǔ) 補(bǔ)補(bǔ)補(bǔ) (2) 將

27、式(1)式與(2)式相加,得 補(bǔ)補(bǔ)補(bǔ)補(bǔ)補(bǔ)補(bǔ) 補(bǔ)補(bǔ)補(bǔ) 補(bǔ)補(bǔ)補(bǔ)0 故 補(bǔ)補(bǔ) (mod 2),60/00,從補(bǔ)求補(bǔ)的法則是:對補(bǔ)包括符號位“求反且最末位加1”,即可得到 補(bǔ)。寫成運(yùn)算表達(dá)式,則為 補(bǔ)補(bǔ)2 n 其中符號表示對補(bǔ)作包括符號位在內(nèi)的求反操作,2n表示最末位的1,61/00,例10 已知x1 0.1110,20.1101,求:1補(bǔ),1補(bǔ),2補(bǔ),2補(bǔ)。 解: 1補(bǔ)1.0010 1補(bǔ)1補(bǔ)2-40.11010.00010.1110 2補(bǔ)0.1101 2補(bǔ)2補(bǔ)2-4 1.00100.00011.0011,62/00,例11 0.1101,0.0110,求。 解: 補(bǔ)0.1101 ,補(bǔ)0.0110,

28、補(bǔ)1.1010 所以0.0111,63/00,2.3 溢出概念與檢測方法,在定點小數(shù)機(jī)器中,數(shù)的表示范圍為|1. 在運(yùn)算過程中如出現(xiàn)大于1的現(xiàn)象,稱為“溢出”。在定點機(jī)中,正常情況下溢出是不允許的。,64/00,例12 0.1011, 0.1001,求。 解: 補(bǔ)0.1011 補(bǔ)0.1001 補(bǔ)0.1011 補(bǔ)0.1001 - 補(bǔ)1.0100 兩個正數(shù)相加的結(jié)果成為負(fù)數(shù),這顯然是錯誤的。,65/00,例13 0.1101, 0.1011,求。 解: 補(bǔ)1.0011 補(bǔ)1.0101 補(bǔ)1.0011 補(bǔ)1.0101 - 補(bǔ)0.1000 兩個負(fù)數(shù)相加的結(jié)果成為正數(shù),這同樣是錯誤的。,66/00,之所

29、以發(fā)生錯誤,是因為運(yùn)算結(jié)果產(chǎn)生了溢出。兩個正數(shù)相加,結(jié)果大于機(jī)器所能表示的最大正數(shù),稱為上溢。而兩個負(fù)數(shù)相加,結(jié)果小于機(jī)器所能表示的最小負(fù)數(shù),稱為下溢。 為了判斷“溢出”是否發(fā)生,可采用兩種檢測的方法。,67/00,第一種方法是采用雙符號位法,這稱為“變形補(bǔ)碼”或“模4補(bǔ)碼”,從而可使模2補(bǔ)碼所能表示的數(shù)的范圍擴(kuò)大一倍。變形補(bǔ)碼定義為: 或用同余式表示為 補(bǔ)4(mod 4),68/00,為了得到兩數(shù)變形補(bǔ)碼之和等于兩數(shù)之和的變形補(bǔ)碼,同樣必須: 1. 兩個符號位都看作數(shù)碼一樣參加運(yùn)算 2. 兩數(shù)進(jìn)行以4位模的加法,即最高符號位上產(chǎn)生的進(jìn)位要丟掉。 采用變形補(bǔ)碼后,如果兩個數(shù)相加后,其結(jié)果的符號

30、位出現(xiàn)“01”或“10”兩種組合時,表示發(fā)生溢出。這是因為兩個絕對值小于1的數(shù)相加,其結(jié)果不會大于或等于2,所以最高符號位永遠(yuǎn)表示結(jié)果的正確符號。,69/00,例14 0.1100, 0.1000,求。 解: 補(bǔ)00.1100,補(bǔ)00.1000 補(bǔ) 00.1100 補(bǔ) 00.1000 - 01.0100 兩個符號位出現(xiàn)“01”,表示已溢出,即結(jié)果大于1。,70/00,例15 0.1100, -0.1000,求。 解: 補(bǔ)11.0100,補(bǔ)11.1000 補(bǔ)11.0100 補(bǔ)11.1000 - 10.1100 兩個符號位出現(xiàn)“10”,表示已溢出,即結(jié)果小于1。,71/00,由此可以得出如下結(jié)論:

31、 1. 當(dāng)以模4補(bǔ)碼運(yùn)算,運(yùn)算結(jié)果的二符號位相異時,表示溢出;相同時,表示未溢出。故溢出邏輯表達(dá)式為 VSf1Sf2,其中Sf1和Sf2分別為最高符號位和第二符號位。此邏輯表達(dá)式可用異或門實現(xiàn)。 2. 模4補(bǔ)碼相加的結(jié)果,不論溢出與否,最高符號位始終指示正確的符號。 第二種溢出檢測方法是采用單符號位法。從例1和例2中看到,當(dāng)最高有效位產(chǎn)生進(jìn)位而符號位無進(jìn)位時,產(chǎn)生上溢;當(dāng)最高有效位無進(jìn)位而符號位有進(jìn)位時,產(chǎn)生下溢。故溢出邏輯表達(dá)式為VCfCo,其中Cf為符號位產(chǎn)生的進(jìn)位,Co為最高有效位產(chǎn)生的進(jìn)位。此邏輯表達(dá)式也可用異或門實現(xiàn)。 在定點機(jī)中當(dāng)運(yùn)算結(jié)果發(fā)生溢出時,機(jī)器通過邏輯電路自動檢查出溢出,

32、并進(jìn)行中斷處理。,72/00,2.4 基本的二進(jìn)制加法/減法器,由于采用補(bǔ)碼運(yùn)算,我們可以把減法轉(zhuǎn)換成加法進(jìn)行,所以加法的功能是運(yùn)算器必備的最基本的功能,加法器就是實現(xiàn)該功能的器件,假設(shè)我們只有基本的門電路(與、或、非、異或等),如何實現(xiàn)加法器的邏輯電路? 1 、全加器 先看一個二進(jìn)制加法的簡單例子:,73/00,我們現(xiàn)在希望單獨把兩個位的相加作為一個模塊來設(shè)計,同時考慮低位來的進(jìn)位,以及向高位的進(jìn)位,那么,要實現(xiàn)多位如8位的加法,則只要把8個模塊串起來就可以。而這個模塊我們稱全加器。 模塊類似于函數(shù),考慮它的輸入/輸出,輸入是加數(shù)的一位和被加數(shù)的一位,以及低位的進(jìn)位,而輸出是和(稱本位和)和

33、向高位的進(jìn)位。如下圖:,74/00,我們把所有輸入情況都寫下來得到下表,75/00,由上面的邏輯真值表我們可以得到如下邏輯表達(dá)式(可以采用邏輯函數(shù)的公式化簡法或卡諾圖化簡法,見數(shù)字邏輯教材) 由邏輯表達(dá)式可以畫出邏輯電路圖(可以用數(shù)據(jù)驗證):,76/00,用生物學(xué)來比喻,門電路(與門、或門、非門、異或門)相當(dāng)于最小的單位-細(xì)胞,則全加器(FA)相當(dāng)于是運(yùn)算器的構(gòu)成單位-組織,如果要構(gòu)造一個4位加法器-器官,則可以把4個全加器連接起來,如下頁圖。 試用兩組數(shù)據(jù)來驗證: A=1011 B=1001 A=0011 B=0101,77/00,78/00,分析串行進(jìn)位的邏輯電路性能:,79/00,3 補(bǔ)

34、碼定點乘法,本節(jié)內(nèi)容: 3.1補(bǔ)碼與真值的轉(zhuǎn)換公式,80/00,3.1補(bǔ)碼與真值的轉(zhuǎn)換公式,設(shè)X補(bǔ)=x0.x1x2.xn,令X為真值; 當(dāng)X 0 時, x0 =0 X補(bǔ)=0 .x1x2.xn =x12-1+ x22-2+.+ xn 2-n = xi2-i=X 當(dāng)X 0時, x0 =1 X補(bǔ)=1 .x1x2.xn = 2+X (按定義) X = 1 .x1x2.xn 2 =-1 +(-1.00.0)+ 1 .x1x2.xn = -1+ xi2-i 所以,可以用公式求補(bǔ)碼真值:,81/00,3.2 補(bǔ)碼一位乘法 使用上面的 公式進(jìn)行推導(dǎo),用Y補(bǔ)表示 =-y0+y12-1+y22-2+.+yn-12

35、-(n-1)+yn2-n = -y0+y1- y12-1+ y22-1- y22-2+.+ yn-12-(n-2) -yn-12-(n-1) +yn2-(n-1) - yn2-n =y1 -y0+ y22-1 - y12-1+.+ yn2-(n-1) -yn-12-(n-1) +0- yn2-n = (y1 -y0)+ ( y2 - y1 ) 2-1+.+ ( yn-yn-1 ) 2-(n-1) + ( 0- yn )2-n,82/00,對上面的公式兩邊乘上X,再求補(bǔ),得: XY=X(y1 -y0)+ ( y2 - y1 ) 2-1+.+ ( yn-yn-1 ) 2-(n-1) + ( 0-

36、yn2-n ) 故 XY補(bǔ)=X(y1 -y0)+ ( y2 - y1 ) 2-1+.+ ( yn-yn-1 ) 2-(n-1) + ( 0- yn2-n )補(bǔ) = (y1 -y0) X + ( y2 - y1 ) 2-1 X +.+ ( yn-yn-1 ) 2-(n-1) X + ( 0- yn ) 2-n X 補(bǔ) = (y1 -y0) X 補(bǔ)+ ( y2 - y1 ) 2-1 X 補(bǔ)+ . + ( 0- yn ) 2-n X 補(bǔ) = (y1 -y0) X 補(bǔ)+ ( y2 - y1 ) 2-1 X 補(bǔ)+ . + ( 0- yn ) 2-n X 補(bǔ) = (y1 -y0) X 補(bǔ)+ 2-1 ( 2

37、-1 ( 2-1 (. 2-1 (2-1 (0+ (yn+1 - yn ) X 補(bǔ)) + (yn-1 - yn ) X 補(bǔ)) . ) =,83/00,令 P0補(bǔ)=0 ,yn+1 =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- y0 ) X 補(bǔ)= XY補(bǔ),84/00,布斯Booth乘法規(guī)則 假設(shè)X、Y都是用補(bǔ)碼形

38、式表示的機(jī)器數(shù), X補(bǔ)和Y補(bǔ)=ys.y1y2yn,都是任意符號表示的數(shù)。比較法求新的部分積Pi ,取決于兩個比較位的數(shù)位,即yi+1yi的狀態(tài)。 布斯乘法規(guī)則歸納如下: 首先設(shè)置附加位yn+1=0,部分積初值P0補(bǔ)=0。 l 當(dāng)n0時,判斷ynyn+1, 若ynyn+1=00或ynyn+1= 11,即相鄰位相同時,上次部分積右移一位,直接得新部分積。 若ynyn+1=01,上次部分積加X補(bǔ),然后右移一位得新部分積。 若ynyn+1=10,上次部分積加-X補(bǔ),然后右移一位得新部分積。 l 當(dāng)n=0時,判斷ynyn+1(對應(yīng)于原乘數(shù)Y補(bǔ)的y0y1),運(yùn)算規(guī)則00、11、01、10的處理同(n0)的

39、情況,只是不移位。即在運(yùn)算的最后一步,乘積不再右移。,85/00,判斷位以及操作如圖: 注意: (1)比較法中不管乘數(shù)為正為負(fù),符號位都參加運(yùn)算 (2)運(yùn)算過程中采用變形補(bǔ)碼(雙符號位)運(yùn)算 (3)算法運(yùn)算時的關(guān)鍵是ynyn+1的狀態(tài):后者(yn+1)減前者(yn),判斷是加減( X補(bǔ)),86/00,結(jié)構(gòu)原理圖以及流程圖,87/00,舉例:已知 X=-0.1011 Y=0.1101,用補(bǔ)碼布斯乘法求X*Y,要求寫出機(jī)器的運(yùn)算步驟。 解:X補(bǔ)=1.0101 -X補(bǔ)=0.1011 Y補(bǔ)=0.1101計算過程如下: R0中為部分積 R1中為乘數(shù), ynyn+1 說明,00.0000,0 1 1 0

40、1 0,初值yn+1=0 P0=0,ynyn+1=10, +-X補(bǔ),00.1011,+ 00.1011,右移1位得P1補(bǔ),00.0101,1 0 1 1 0 1,ynyn+1=01, +X補(bǔ),+11.0101,11.1010,右移1位得P2補(bǔ),11.1101,0 1 0 1 1 0,+ 00.1011,00.1000,00.0100,+00.0000,00.0100,00.0010,+ 11.0101,11.0111,0 0 1 0 1 1,0 0 0 1 0 1,0 0 0 1 0 1,ynyn+1=10, +-X補(bǔ),右移1位得P3補(bǔ),ynyn+1=11, +0,右移1位得P4補(bǔ),ynyn+

41、1=01, +X補(bǔ),最后一步不移位,得P5補(bǔ),88/00,4定點除法運(yùn)算,本節(jié)內(nèi)容: 4.1、原碼恢復(fù)余數(shù)除法 4.2、原碼加減交替法除法(邏輯結(jié)構(gòu)和算法) 4.3、補(bǔ)碼加減交替法除法(邏輯結(jié)構(gòu)和算法),89/00,4.1 原碼定點除法 先看筆算除法的過程,90/00,其特點: (1)對n位除法而言,每次上商的過程總是由心算比較余數(shù)和除數(shù)大小,如果余數(shù)大于除數(shù),則商上1,否則 商上0; (2)商的符號單獨處理 (3)每次減法都是都保持余數(shù)不動,低位補(bǔ)0,再減右移的除數(shù)。 但 上面的特點用計算機(jī)來處理,很不方便。,91/00,1.原碼恢復(fù)余數(shù)除法 (1)主要思想:被除數(shù)(或余數(shù))先減除數(shù),如果得

42、到正余數(shù),說明夠減,則商上1;如果得到負(fù)余數(shù),說明不夠減,這時候應(yīng)把負(fù)余數(shù)加上除數(shù)|Y|,恢復(fù)成原來的正余數(shù),再繼續(xù)運(yùn)算。 (2)算法 商的符號單獨運(yùn)算Qs=Xs Ys 求|X| - |Y|, 用|X|+-Y補(bǔ)運(yùn)算,如果結(jié)果大于等于0,則說明溢出;如果結(jié)果小于0,則商的個位上0,再加 |Y| 恢復(fù)余數(shù)|X| ; 用減法比較2ri和|Y|的大小: 如果2ri-|Y|0,則商上1,余數(shù)ri+1左移一位減|Y|; 如果2ri-|Y|0,則商上0,加|Y|恢復(fù)余數(shù),再左移一位減|Y|; 如此循環(huán)直到得到所需的商的位數(shù)為止。 給商的絕對值附上符號位Qs ,得到商的原碼Q原。,92/00,(3)舉例 X=

43、0.10111101 Y=-0.1101求X Y的商和余數(shù)。 X原=0.10111101,Y原=1.1101 -|Y|補(bǔ)=1.0011 被除數(shù)或余數(shù) 商Q 說明,00.1011,1101,作|X|-|Y|,用+-|Y|補(bǔ)實現(xiàn),+-|Y|補(bǔ) 11.0011,11.1110,余數(shù)小于0,商上0,11010,恢復(fù)余數(shù)(被除數(shù)),+|Y|補(bǔ) 00.1101,00.1011,11010,商0移入Q,余數(shù)左移1位,01.0111,1010,減|Y|,+-|Y|補(bǔ) 11.0011,00.1010,余數(shù)大于0,商上1,10101,商1移入Q,余數(shù)左移1位,01.0101,0101,減|Y|,+-|Y|補(bǔ) 11

44、.0011,00.1000,余數(shù)大于0,商上1,10111,商1移入Q,余數(shù)左移1位,01.0000,1011,減|Y|,+-|Y|補(bǔ) 11.0011,00.0011,余數(shù)大于0,商上1,01011,商1移入Q,余數(shù)左移1位,00.0111,0111,減|Y|,+-|Y|補(bǔ) 11.0011,11.1010,余數(shù)小于0,商上0,商0移入Q,恢復(fù)余數(shù),00.1101,01110,00.0111,93/00,2.原碼加減交替法除法 (1)原碼加減交替法除法與恢復(fù)余數(shù)法除法相比的特點。 (2)原碼加減交替法除法規(guī)則: 當(dāng)余數(shù)為正,則商上1,余數(shù)左移一位,減除數(shù); 當(dāng)余數(shù)為負(fù),則商上0,余數(shù)左移一位,加

45、除數(shù); 這種方法來自于“恢復(fù)余數(shù)法”,由于“恢復(fù)余數(shù)法”是正確的,下面我們證明“原碼加減交替法除法”也是正確的。,94/00,設(shè)恢復(fù)余數(shù)法除法中各個余數(shù)的序列是r0,r1,r2.,ri-1,ri,ri+1,. 其中r0=X(初始的余數(shù)r0就是被除數(shù)X) , 以其中三個余數(shù)ri-1,ri,ri+1,作為代表,用類C語言描述“恢復(fù)余數(shù)法”:,95/00,當(dāng)把else中的語句簡化后, 得: 這就是原碼加減交替法的算法 (用類C語言描述) 。 文字描述為: 當(dāng)余數(shù)為正,則商上1,余數(shù)左移一位,減除數(shù); 當(dāng)余數(shù)為負(fù),則商上0,余數(shù)左移一位,加除數(shù);,96/00,1)原碼加減交替除法算法 商的符號位單獨運(yùn)

46、算:qs=xs ys; 余數(shù)ri為正數(shù)時,商上1,余數(shù)左移一位減除數(shù);當(dāng)ri為負(fù)數(shù)時,商上0,余數(shù)左移一位加除數(shù),如此循環(huán)直到取得所需的n位商的絕對值。 給商的絕對值添上符號位qs即可得到Q原,97/00,由上面的算法可以設(shè)計如下的邏輯結(jié)構(gòu): 2)邏輯結(jié)構(gòu)原理圖,98/00,描述: R1為n位寄存器,除法開始前可存放被除數(shù)X原的低n位,運(yùn)算結(jié)束后存放n位的商。每次上商應(yīng)置于R1的最末位,因為它是由加法器的運(yùn)算結(jié)果最高位來控制的,所以由s來設(shè)置。運(yùn)算過程中,商要逐位左移,故R1寄存器具有左移功能。R0 保存被除數(shù)或余數(shù),初始時保存X原的高n位,在運(yùn)算中也要左移,所以它也是一個具有左移功能的寄存器

47、。,99/00,運(yùn)算中被除數(shù)(余數(shù))的低位部分由R1串行移至R0。n+1步運(yùn)算后,求得n+1位商,其中一位整數(shù)位,n位小數(shù)位,這n位小數(shù)位的數(shù)值存于R1寄存器中,而整數(shù)位在最后一次左移時丟掉,而商的符號Qs由Xs和Ys通過異或運(yùn)算得到, 所以可用一個異或門求得Qs。 見下圖的運(yùn)算流程圖。,100/00,101/00,3)原碼加減交替除法操作時間 為n+1步加減運(yùn)算和n步左移時間,102/00,2.4.2 補(bǔ)碼定點除法 1) 補(bǔ)碼應(yīng)用的廣泛性; 2) 要解決的問題: 已知 被除數(shù)X補(bǔ),除數(shù)Y補(bǔ), X 和Y都是定點小數(shù),即 |X|1, |Y|1;求商Q補(bǔ)=X Y補(bǔ), 首先要確定前提:|X|Y| (

48、?),103/00,3)補(bǔ)碼加減交替除法 要點是:在除法過程中必須比較被除數(shù)(余數(shù))的大小,并根據(jù)比較的結(jié)果來上商。 (1)規(guī)則: 先判斷是否溢出并得到商符號: 如果被除數(shù)X補(bǔ)與除數(shù)Y補(bǔ)同號,用X補(bǔ)+-Y補(bǔ)進(jìn)行運(yùn)算,得到余數(shù)r1補(bǔ),如果余數(shù)r1補(bǔ)和除數(shù)Y補(bǔ)同號,則溢出,否則商上0(正號); 如果X補(bǔ)與Y補(bǔ)異號,用X補(bǔ)+Y補(bǔ)進(jìn)行運(yùn)算,得到余數(shù)r1補(bǔ),如果余數(shù)r1補(bǔ)和除數(shù)Y補(bǔ)異號,則溢出,否則商上1 (負(fù)號) ; 以下 兩步是循環(huán): 如果余數(shù)ri補(bǔ)和Y補(bǔ)同號,商上1, ri補(bǔ)左移一位減Y補(bǔ);如果余數(shù)ri補(bǔ)和Y補(bǔ)異號,商上0, ri補(bǔ)左移一位加Y補(bǔ) 重復(fù),連同符號位的計算共n+1步;如果采用“末位恒

49、置1法”,則只用n步。,104/00,(2)算法流程圖,105/00,(3)舉例: 已知 X補(bǔ)=0.1011 , Y補(bǔ)=1.0011,用補(bǔ)碼交替除法求X Y補(bǔ) 由于要用減法,所以求Y補(bǔ) ,-Y補(bǔ)=0. 1101 被除數(shù)或余數(shù) 商數(shù) 說明,00.1011,0000,X和Y異號,商的符號為負(fù),+Y補(bǔ),+Y補(bǔ) 11.0011,11.1110,余數(shù)r1和Y補(bǔ)同號,商上1,00001,r1和Q同時左移一位,11.1100,0001,+-Y補(bǔ),+-Y補(bǔ) 00.1101,00.1001,余數(shù)r2和Y補(bǔ)異號,商上0,00010,r2和Q同時左移一位,01.0010,0010,+Y補(bǔ),+Y補(bǔ) 11.0011,0

50、0.0101,余數(shù)r2和Y補(bǔ)異號,商上0,00100,r3和Q同時左移一位,00.1010,0100,+Y補(bǔ),+Y補(bǔ) 11.0011,11.1101,余數(shù)r1和Y補(bǔ)同號,商上1,r3和Q同時左移一位,01001,11.1010,1001,商的末位恒置1,10011,106/00,2.5定點運(yùn)算器的組成與結(jié)構(gòu),CPU = 運(yùn)算器+控制器,而運(yùn)算器的核心部件是ALU, A (arithmetic )是前面所學(xué)的算術(shù)運(yùn)算方法:+、 、 L ( logic )是邏輯運(yùn)算,邏輯運(yùn)算就是表示真與假的符號的運(yùn)算,下面了解邏輯運(yùn)算。,107/00,2.5.1 邏輯運(yùn)算 1、基本邏輯運(yùn)算: 1)邏輯非運(yùn)算 也稱

51、求反,只對一個數(shù)操作,對某數(shù)按位求反,1變0 , 0變1 2)邏輯加運(yùn)算 也稱邏輯或,對兩個或多個數(shù)按位進(jìn)行“或”運(yùn)算, 0 0=0 ,0 1=1, 11=1; 3)邏輯乘運(yùn)算 也稱邏輯與,對兩個或多個數(shù)按位進(jìn)行“與”運(yùn)算, 0 0=0 ,0 1=0, 1 1=1;,108/00,4)邏輯異運(yùn)算 也稱邏輯加,對兩個或多個數(shù)按位進(jìn)行“異或”運(yùn)算, 0 0=0 ,0 1=1, 1 1=0; 2、應(yīng)用實例 可以在自動控制中,對開關(guān)量進(jìn)行輸出操作:,109/00,2.5.2 多功能算術(shù)/邏輯部件(了解) 1、多功能ALU的設(shè)計思想 多功能指ALU應(yīng)包括 算術(shù)運(yùn)算,也包括邏輯運(yùn)算,設(shè)已成功設(shè)計出全加器(

52、FA),如何在此基礎(chǔ)上再增加功能設(shè)計多功能ALU呢? 可以這樣考慮:設(shè)計一個外掛模塊(可以稱為函數(shù)發(fā)生器),該模塊定義四個控制參數(shù)s0,s1,s2,s3 ,這四個控制參數(shù)取不同的組合,則控制函數(shù)發(fā)生器完成不同的功能。,110/00,在加法器中只考慮一位的情況,則得到右圖: 由于有函數(shù)發(fā)生器,所以重新設(shè)計算術(shù)/邏輯單元:,在74181 ALU芯片中,使用4位控制參數(shù)s3s2s1s0 ,用s3s2控制Ai和Bi產(chǎn)生xi ,用s1s0控制Ai和Bi產(chǎn)生yi:,即:xi+yi=xi xi yi = yi,111/00,芯片74181ALU 見下頁。這里要了解正邏輯和負(fù)邏輯;在負(fù)邏輯中,在芯片外輸入低電

53、平為負(fù)邏輯;,112/00,113/00,114/00,115/00,2.5.3 運(yùn)算器數(shù)據(jù)通路 1、通用寄存器、累加器和鎖存器 當(dāng)前的計算機(jī)系統(tǒng)中的CPU基本上都有通用寄存器,如Intel的CPU中的AX,BX,CX,DX等寄存器,這些寄存器是通過觸發(fā)器構(gòu)成的,每個觸發(fā)器只保存一個位,如:,116/00,而累加器也是寄存器,但使用的頻度較高; 鎖存器也是用來保存數(shù)據(jù)的,當(dāng)P=1時,D來的數(shù)據(jù)被保存到鎖存器中,如果P=0,則不管D來的數(shù)據(jù)為0、1都不能影響鎖存器中的數(shù)據(jù),而同時Q可以隨時輸出鎖存器中的數(shù)據(jù),,117/00,2.多路選擇器 通過電平信號的組合控制,決定讓哪一個輸入信號可以通過該器件輸出,在圖中,s0s1 G是控制信號, 如令1G=1,2G=0, s0s1 =10,則只有2A的輸入可以從2Y的引腳輸出。,118/00,3 移位器 前面在乘法和除法的邏輯結(jié)構(gòu)中都用到左移、右移功能,下面匯總關(guān)于移位的內(nèi)容。 (1)算術(shù)移位 有算術(shù)左移、

溫馨提示

  • 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

提交評論