計算機組成原理 運算方法與運算器_第1頁
計算機組成原理 運算方法與運算器_第2頁
計算機組成原理 運算方法與運算器_第3頁
計算機組成原理 運算方法與運算器_第4頁
計算機組成原理 運算方法與運算器_第5頁
已閱讀5頁,還剩120頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機組成原理武漢科技大學計算機科學與技術(shù)學院第二章運算方法和運算器本章內(nèi)容2.1數(shù)據(jù)與文字的表示方法2.2定點加法、減法運算2.3定點乘法運算2.4定點除法運算2.5定點運算器的組成2.6浮點運算方法和浮點運算器2.1數(shù)據(jù)與文字的表示方法計算機中的數(shù)據(jù)數(shù)值數(shù)據(jù)非數(shù)值數(shù)據(jù)定點數(shù)浮點數(shù)文字語音圖形圖像……定點整數(shù)定點小數(shù)西文字符中文漢字計算機中常用的數(shù)據(jù)表示格式:2.1.1數(shù)據(jù)格式計算機中選擇數(shù)的表示方式時考慮的因素:(1)數(shù)據(jù)類型(整數(shù)、小數(shù)、實數(shù)、復數(shù))(2)可能遇到的數(shù)值范圍(3)數(shù)值精確度

(4)數(shù)據(jù)存儲和處理的硬件代價(1)定點數(shù):容許的數(shù)值范圍有限,但硬件比較簡單(2)浮點數(shù):容許的數(shù)值范圍很大,但硬件比較復雜n位1位符號量值(1)純小數(shù)表示形式:x=xnxn-1xn-2…x0

表數(shù)范圍:0.000…0≤|X|≤0.111…11

即:0≤|X|≤1-2-n1.定點數(shù)的表示方法定點數(shù):小數(shù)點位置固定由于約定在固定位置,小數(shù)點不再使用記號“.”表示n位1位符號量值(2)純整數(shù)表示形式:x=xnxn-1xn-2…x0

表數(shù)范圍:0≤|X|≤111…11

即:0≤|X|≤2n-12浮點數(shù)的表示方法

任意一個R進制數(shù)可以寫成

N=Re×MR——基數(shù),定義后不能改變,可隱含M——尾數(shù),純小數(shù)e——指數(shù),純整數(shù),指出小數(shù)點的位置由于指數(shù)可以取不同的數(shù)值,所以,小數(shù)點的位置可在一定范圍內(nèi)自由浮動,故被稱為浮點數(shù)計算機中浮點數(shù)的表示格式:X=2E×MM——尾數(shù),定點小數(shù)(含數(shù)符),表示數(shù)的全部有效數(shù)字——精度E——階碼,純整數(shù),指示小數(shù)點的位置浮點數(shù):小數(shù)點位置可在一定范圍內(nèi)移動;能擴大表數(shù)范圍浮點數(shù)的表示方案:格式1:格式2:——IEEE754標準SE

M64位浮點數(shù)636252510S

E

M32位浮點數(shù)313023220其中:S—符號位,0表示正,1表示負E——階碼,移碼表示的指數(shù),E=e+127(32位)或1023(64位)即將浮點數(shù)的指數(shù)e變成階碼E時,將其加上一個固定的數(shù)值R——默認為2;M——尾數(shù);小數(shù)點在尾數(shù)域最左有效位的右邊尾數(shù)Mn-1Mn-2…M0數(shù)符Ms階碼EmEm-1……E0階符EsIEEE754標準浮點數(shù)的規(guī)格化及其與真值的關(guān)系規(guī)格化表示——尾數(shù)非0時,約定其最高有效位為1即:尾數(shù)規(guī)格化形式:

1.M例:A=24×0.0000000010101=2-5×1.0101階碼:用移碼表示,方便指數(shù)比較大小和對階操作IEEE754標準中,規(guī)格化的浮點數(shù)x與真值的關(guān)系:32位浮點數(shù)

x=(-1)s×(1.M)×2E-127

64位浮點數(shù)

x=(-1)s×(1.M)×2E-1023階碼與尾數(shù)的位數(shù)精度:范圍:尾數(shù)指數(shù)(1)當階碼E為全0且尾數(shù)M也為全0時,表示的真值x為零,結(jié)合符號位S,有正零和負零之分(2)當階碼E為全1且尾數(shù)M為全0時,表示的真值x為無窮大,結(jié)合符號位S,有+∞和-∞之分(對溢出的處理方式取決于用戶)(3)一個規(guī)格化的非零和非無窮的浮點數(shù),階碼E范圍1~254(32位)和1~2046(64位),其真值為-126~+127(32位格式的8位階碼)和-1022~+1023(64位格式的11位階碼),此時有效數(shù)據(jù)分別為24位或53位,即默認23位小數(shù)或52位小數(shù)的小數(shù)點左邊有一個隱含的1注意:IEEE754格式的某些位樣式用來表示特殊值[例1]

若浮點數(shù)x的32位754標準存儲格式為(41360000)16,求其十進制數(shù)值[解:]

將十六進制數(shù)展開后,可得二進制數(shù)格式為

41

360000

0100000100110110000000000000

0000

S階碼(8位)尾數(shù)(23位)指數(shù)e=E-127=(10000010)2-(01111111)2=00000011=(3)10

1.M=1.01101100000000000000000=1.011011所以,x=(-1)s×1.M×2e=+(1.011011)×23

=+1011.011=(11.375)10

[例2]

將十進制數(shù)數(shù)20.59375轉(zhuǎn)換成IEEE754標準32位浮點數(shù)的二進制格式存儲[解:]

首先轉(zhuǎn)換成二進制數(shù):

20.59375=(10100.10011)2=(1.010010011)2×24于是:S=0,E=4+127=131,M=010010011

IEEE754標準的32位浮點數(shù)的二進制存儲格式為:(01000001101001001100000000000000)2=(41A4C000)16

補充:非IEEE754標準尾數(shù)的規(guī)格化一般地,浮點數(shù)規(guī)格化是指尾數(shù)M滿足1/2≤|M|<1若尾數(shù)采用原碼表示,尾數(shù)的最高數(shù)值位一定為1若尾數(shù)采用補碼表示對于正數(shù),M=00.1ф…ф;對于負數(shù),有M=11.0ф…ф

(兩符號位相同,且最高數(shù)值位與符號位不同)當運算結(jié)果出現(xiàn)下面情況時,需要規(guī)格化①M=00.0ф…ф或11.1ф…ф(最高數(shù)值位與符號位相同)說明尾數(shù)的絕對值小于1/2,應向左規(guī)格化(左移尾數(shù),每左移一位,階碼減1)M=01.ф…ф10.ф…ф(兩個符號位不同)表明尾數(shù)求和結(jié)果的絕對值大于1,應向右規(guī)格化(結(jié)果右移,尾數(shù)右移1位,階碼加1)(1).字符串形式:一個字節(jié)存放一個十進制的數(shù)位或符號位——用于非數(shù)值計算(2).

壓縮的十進制數(shù)串形式:一個字節(jié)存放兩個十進制的數(shù)位(值為BCD碼),節(jié)省存儲空間,且便于直接完成十進制數(shù)的算術(shù)運算符號位和每個數(shù)位都占半個字節(jié);符號位放在最低數(shù)字位之后,其值選用四位編碼中的冗余狀態(tài)規(guī)定:數(shù)位加符號位之和必須為偶數(shù),否則在最高數(shù)字位之前補一個0,例如+123和-12分別被表示成:123C(+123)012D(-12)3.十進制數(shù)串的表示方法2.1.2數(shù)的機器碼表示無符號數(shù)的表示——所有位均表示數(shù)值;舉例機器碼:符號數(shù)值化后的數(shù)據(jù)編碼——便于計算機中存儲和運算真值:一般書寫表示的數(shù)機器碼的種類(以定點整數(shù)為例)(1)原碼(2)補碼(3)反碼(4)移碼原碼表示法的優(yōu)點:簡單易懂缺點:(1)加/減法運算復雜(同號相減或異號相加時)

(2)零的原碼不惟一定點整數(shù)的原碼形式為xnxn-1xn-2…x0,則原碼表示的定義[x]原=x2n-x=2n+|x|

0≤x<2n-2n<x≤0例: x=+1001, y=-1001

則[x]原=01001, [y]原=110011.原碼表示法2.補碼表示法如:以校時為例,減3和加9是等價的,即,9是(-3)對12的補碼,可以用數(shù)學公式表示

-3=+9 (mod12)——數(shù)學上稱為同余式

mod12是指以12為模數(shù),這個“?!北硎颈粊G掉的數(shù)值補碼的引出——“模”和“同余”的概念“?!笔侵敢粋€計量系統(tǒng)的計量范圍,即產(chǎn)生“溢出”的量負數(shù)用補碼表示時,可以把減法轉(zhuǎn)化為加法定點整數(shù)的補碼形式為xnxn-1xn-2…x0

[x]補=x2n+1+x=2n+1-|x|0≤x<2n-2n≤x≤0定義:[x]反=x

(2n+1-1)+x0≤x<2n-2n<x≤0對于定點負整數(shù),由補碼和反碼的定義可知:[x]補=2n+1+x=[x]反+1

3.反碼表示法反碼的實現(xiàn)——若觸發(fā)器Q端輸出表示原碼,則Q端就是反碼對定點整數(shù),反碼表示的定義為

結(jié)論:若要求一個負數(shù)的補碼,其方法是先求其反碼,再在未位上加1即可由[x]原求[x]補(x<0)的簡便原則:符號位保持不變;從最低位開始遇到的第一個1以前的各位(包括該位)保持不變;其余各位按位取反例:[x]原=110110100[x]補=

101001100100100求補碼的方法由[x]補求[-x]補:連符號位一起各位求反,末位加1例: [x]補=1.1010101 [-x]補=0.0101011由[-X]補求[X]補規(guī)則相同將[x]補的符號位和數(shù)值位一起向右移動一次,且左補符號位例: [x]補=10101000 [x/2]補=11010100(0)稱為“算術(shù)右移”如何求[x/4]補和[x/8]補嗎?由[x]補求[x/2]補補碼的性質(zhì):0的補碼惟一便于加減運算n+1位補碼所能表示的整數(shù)的范圍:定點整數(shù):MAX=2n-1,MIN=﹣2n補碼與真值的關(guān)系:設一個二進制整數(shù)的補碼有n+1位(含1位符號位),即[x]補=xnxn-1xn-2

…x0

則其補碼表示的真值為:x=-2nxn+∑2ixi當x為正數(shù)時,xn=0,[x]補的形式:0xn-1xn-2

…x0

真值為:x=∑2ixi

當x為負數(shù)時,xn=1,[x]補的形式:1xn-1xn-2

…x0

真值為:x=-2n+∑2ixi

當x為0時,[x]補=

[+0]補=[-0]補=0結(jié)論:如果把符號位的權(quán)值當成負權(quán),則真值是其相應補碼的各位值乘以該位的權(quán)的累加和舉例:[x]補=010011011,[y]補=110011011,求x,y

n-1i=0n-1i=0n-1i=0通常用于表示浮點數(shù)的階碼設定點整數(shù)e的移碼形式為ekek-1ek-2…e0,其定義是

[e]移=2k+e-2k≤e<2k若階碼數(shù)值部分為5位(連同符號位6位),以e表示真值,則[e]移=25+e

-25≤e<25

例如,當正數(shù)e=+10101時,[e]移=1,10101負數(shù)e=-10101時,[x]移=25+e=25-10101=0,01011移碼中的逗號表示左邊一位是符號位移碼中符號位ek的表示規(guī)律與原碼、補碼、反碼相反4.移碼表示法在已知補碼的情況下,將符號位求反即得移碼IEEE754標準浮點格式中e的移碼上述數(shù)據(jù)的四種機器表示法小結(jié):移碼表示法主要用于表示浮點數(shù)的階碼由于補碼表示對加減法運算十分方便,因此目前機器中廣泛采用補碼表示法;在這類機器中,數(shù)用補碼表示,補碼存儲,補碼運算有些機器,用原碼進行存儲和傳送,運算時改用補碼還有些機器在做加減法時用補碼運算,在做乘除法時用原碼運算[例6]以n+1位定點整數(shù)為例,用數(shù)軸形式說明原碼、反碼、補碼表示范圍和可能的數(shù)碼組合情況[解:]設機器碼形式為xnxn-1xn-2…x0補碼表示中“0”只有一種形式;且負數(shù)的范圍可到-2n

[例7]將十進制真值(-127,-1,0,+1,+127)列表表示成二進制數(shù)及8位的原碼、反碼、補碼、移碼[解:]真值x(十進制)真值x(二進制)[x]原[x]反[x]補[x]移-1281000000000000000-127-111111111111111100000001000000100000001-1-00000001100000011111111011111111011111110000000000000000010000000000000001111111100000000100000001+000000100000001000000010000000110000001127+111111101111111011111110111111111111111

由表中數(shù)據(jù)可知,補碼值與移碼值差別僅在于符號位不同

[例8]設機器字長16位,定點表示,尾數(shù)15位,數(shù)符1位,問:定點原碼整數(shù)表示時,最大正數(shù)是多少?最小負數(shù)是多少?[解:]

最大正數(shù)值=(215-1)10=(+32767)10

0111111111111111

最小負數(shù)值=-(215-1)10=(-32767)10

1111111111111111[例9]假設由S,E,M三個域組成的一個32位二進制字所表示的非零規(guī)格化浮點數(shù)x,真值表示為:x=(-1)s×(1.M)×2E-128問:它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負數(shù)、最小負數(shù)是多少?

[解:](1)最大正數(shù)01111111111111111111111111111111 x=[1+(1-2-23)]×2127(2)最小正數(shù)00000000000000000000000000000000

x=1.0×2-128(3)最小負數(shù)11111111111111111111111111111111

x=-[1+(1-2-23)]×2127(4)最大負數(shù)10000000000000000000000000000000x=-1.0×2-1282.1.3字符與字符串的表示方法1.字符的表示方法七位的ASCII碼(美國國家信息交換標準字符碼)——十進制數(shù)碼、英文字母、一定數(shù)量的專用符號,共128個元素其中:可顯示或打印的字符95個,其編碼值為32~126

控制字符33個,其編碼值為0~31和127采用7位二進制編碼,加一位偶校驗位,共8位表2.1七單位的ASCII碼字符編碼表字符串是連續(xù)的一串字符,占連續(xù)多個字節(jié),每個字節(jié)存一個字符[例]存儲字符串:

IF└┘A>B└┘THEN└┘READ(C)

IFA>BTHEN

READ(C)[解:]設主存字單元由4個字節(jié)組成按從高位字節(jié)到低位字節(jié)依次存放各字節(jié)單元依次存放十進制的73、70、32、65、62、66、32、84、72、69、78、32、82、69、65、68、40、67、41、322.字符串的表示方法1.漢字的輸入編碼(1)數(shù)字編碼:常用的是區(qū)位碼區(qū)位碼——4位十進制數(shù),前2位區(qū)碼,后2位位碼如“中”位于54區(qū)48位——區(qū)位碼5448優(yōu)點:

無重碼,且輸入碼與內(nèi)部編碼的轉(zhuǎn)換比較方便缺點:

代碼難以記憶(2)拼音碼:使用簡單方便,但重碼率很高(3)字形編碼:按漢字的形狀編碼,如五筆字形碼2.1.4漢字的表示方法2.漢字的內(nèi)碼用于漢字的存儲、交換、檢索等操作的機內(nèi)代碼用兩個字節(jié)表示(兩個字節(jié)的最高位均為1)如“武”字機內(nèi)碼為2E44H+A0A0H=CEE4H3.漢字字模碼是用點陣表示的漢字字形代碼,有16×16點陣,24×24點陣,32×32點陣,用于漢字的顯示或打印輸出字模點陣只能用來構(gòu)成漢字庫,而不能用于機內(nèi)存儲2.1.5校驗碼——奇偶校驗設x=(x0x1…xn-1)是一個n位字奇校驗位C定義為:C=x0⊕x1⊕…⊕xn-1偶校驗位C定義為:C=x0⊕x1⊕…⊕xn-1注意:奇偶校驗可提供奇數(shù)個錯誤檢測,但無法檢測偶數(shù)個錯誤,更無法識別錯誤信息的位置

[例10]已知5個字節(jié)數(shù)據(jù),分別用奇校驗和偶校驗進行編碼數(shù)據(jù)偶校驗編碼C奇校驗編碼C101010100101010000000000011111111111111110101010-01010100-00000000-01111111-11111111-10101010-01010100-00000000-01111111-11111111-01010101012.2定點加法、減法運算2.2.1補碼加法任意兩個數(shù)的補碼之和,等于它們和的補碼以定點整數(shù)為例

[x+y]補=[x]補+[y]補

(mod2n+1)兩個數(shù)均用補碼表示,符號位當做數(shù)值參加運算,符號位相加所產(chǎn)生的進位丟掉,結(jié)果為補碼證明——分4種情況采用定點整數(shù)表示,因此證明的先決條件是︱x︱≤(2n-1),︱y︱≤(2n-1),︱x+y︱≤(2n-1)(1)x﹥0,y﹥0,則x+y﹥0根據(jù)補碼定義,[x]補=x,[y]補=y(tǒng),故

[x]補+[y]補=x+y=[x+y]補

(mod2n+1)證明——分4種情況(2)x﹥0,y﹤0,則x+y>0或x+y<0∵[x]補=x,

[y]補=2n+1+y∴[x]補+[y]補=x+2n+1+y=2n+1+(x+y) =[x+y]補(mod2n+1)

(3)x<0,y>0,則x+y>0或x+y<0同(2)(4)x<0,y<0,則x+y<0

∵[x]補=2n+1+x,

[y]補=2n+1+y

∴[x]補+[y]補=2n+1+x+2n+1+y=2n+1+(2n+1+x+y)因(x+y)是絕對值小于2n的負數(shù),故(2n+1+x+y)一定大于2n而小于2n+1,故進位2n+1必丟失,又因(x+y)<0,所以

[x]補+[y]補=2n+1+(x+y)=[x+y]補

(mod2n+1)[例11]

x=+1001,y=+0101,求x+y[解:]

[x]補=01001,[y]補=00101 [x+y]補=01001+00101=01110

x+y=+1110[例12]

x=+1011,y=-0101,求x+y[解:]

[x]補=01011,[y]補=11011 [x+y]補=01011+11011=00110

x+y=+0110解:[x]補=100111,[y]補=111101[x]補=100111[y]補=111101+丟掉1100100[x]補+[y]補=100100x+y=-11100例:x=-11001,y=-00011,求x+y=?結(jié)論——補碼加法的特點:(1)符號位作為數(shù)的一部分一起運算(2)在模2n+1的意義下相加,即超過2n+1的進位要丟掉[x-y]補=[x]補+[-y]補=[x]補-[y]補[-y]補稱為[y]補的機器負數(shù),由[y]補求[-y]補的過程稱為將[y]補“變補”或?qū)y]補求補從[y]補求[-y]補的法則是:對[y]補包括符號位“求反且最末位加1”寫成運算表達式為:

[-y]補=﹁[y]補+1其中符號﹁表示對[y]補作包括符號位在內(nèi)的求反操作2.2.2補碼減法證明:[x-y]補=[x]補+[-y]補=[x]補-[y]補只要證明[-y]補=-[y]補即可∵[x+y]補=[x]補+[y]補

(mod2n+1)∴[y]補=[x+y]補-[x]補

(2.15)∵[x-y]補=[x+(-y)]補=[x]補+[-y]補∴[-y]補=[x-y]補-[x]補

(2.16)將式(2.15)與(2.16)相加,得

[-y]補+[y]補=[x+y]補+[x-y]補-[x]補-[x]補=[x+y+x-y]補-[x]補-[x]補=0故[-y]補=-[y]補

(mod2n+1)[例13]

已知x1=-1110,x2=+1101

求:[x1]補,[-x1]補,[x2]補,[-x2]補[解:]

[x1]補=10010

[-x1]補=﹁[x1]補+1=01101+1=01110

[x2]補=01101

[-x2]補=﹁[x2]補+1=10010+1=10011[例14]

x=+1101,y=+0110,求x-y[解:]

[x]補=01101

[y]補=00110,

[-y]補=11010[x]補

01101

+[-y]補

11010

[x-y]補

所以x-y=+0111丟掉1001112.2.3溢出概念與檢測方法n+1位定點整數(shù)補碼數(shù)的表示范圍:-2n≤x<2n溢出的概念負整數(shù)正整數(shù)

+(2n-1)負溢出正溢出-2n0[例15]

x=+1011,y=+1001,求x+y[解]

[x]補=01011 [y]補=01001

[x+y]補=01011+01001=10100

[例16]x=-1101,y=-1011,求x+y[解] [x]補=10011 [y]補=10101

[x+y]補=10011+10101=01000發(fā)生錯誤的原因正溢出——兩正數(shù)相加,結(jié)果大于所能表示的最大正數(shù)負溢出——兩負數(shù)相加,結(jié)果小于所能表示的最小負數(shù)雙符號位補碼:也稱“變形補碼”或“模2n+2補碼”(對定點整數(shù))變形補碼可使模2n+1補碼表數(shù)的范圍擴大一倍判斷“溢出”的方法——變形補碼法;單符號位法單符號位法——最高有效位產(chǎn)生進位而符號位無進位時,產(chǎn)生正溢;最高有效位無進位而符號位有進位時,產(chǎn)生負溢故溢出邏輯表達式為V=CfCn

結(jié)論:1.溢出——運算結(jié)果的二符號位相異,邏輯表達式為V=Sf1⊕Sf2Sf1Sf2=01——正溢;Sf1Sf2=10——負溢2.不論溢出與否,最高符號位Sf1始終指示正確的符號定點整數(shù)的變形補碼的模為2n+2,

用同余式表示為:

[x]補=2n+2+x(mod2n+2)對于正數(shù),兩個符號位都是0;負數(shù),兩個符號位都是1對于變形補碼,同樣有

[x]補+[y]補=[x+y]補(mod2n+2)運算過程中注意:兩個符號位都看作數(shù)碼參加運算;丟掉最高符號位上產(chǎn)生的進位變形補碼溢出判斷[例17]

x=+1100,y=+1000,求x+y[解:]

[x]補=001100,

[y]補=001000[x]補

001100+[y]補

001000

010100兩個符號位出現(xiàn)“01”,表示已溢出,即結(jié)果大于+15[例18]

x=-1100,y=-1000,求x+y[解:]

[x]補=110100,

[y]補=111000[x]補

110100+[y]補

111000

101100兩個符號位出現(xiàn)“10”,表示已溢出,即結(jié)果小于-16變形補碼法舉例[例17]Bx=+1100,y=+1000,求x+y[解:]

[x]補=01100,

[y]補=01000[x]補

01100+[y]補

01000

10100[例18]B

x=-1100,y=-1000,求x+y[解:]

[x]補=10100,

[y]補=11000[x]補

10100+[y]補

11000

01100Cf=0Cn=1Cf⊕Cn=1,溢出Cf⊕Cn=1,溢出Cf=1Cn=0單符號位法舉例2.2.4基本的二進制加法/減法器輸入:Ai、Bi、Ci輸出:Si、Ci+1一位全加器真值表

Si=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi=AiBi+(Ai⊕

Bi)

Ci輸入輸出AiBiCiSiCi+100000001100101001101100101010111001111111、一位全加器FAAiBiCiCi+1Si2、n位二進制加/減法器設5位二進制數(shù)[A]補=A4A3A2A1A0[B]補=B4B3B2B1B0兩數(shù)相加,則為[S]補=[A]補+[B]補=C5S4S3S2S1S0而[-B]補=﹁[B]補+1兩數(shù)相減,則為[S]補=[A]補-[B]補=[A]補+[-B]補=[A]補+[-B]補[A]補=A4A3A2A1A0C5S4S3S2S1S0[-B]補=B4B3B2B1B01+[A]補=A4A3A2A1A0[B]補=B4B3B2B1B0C5S4S3S2S1S0+2.2.4基本的二進制加法/減法器n位補碼運算的二進制加法/減法器的邏輯結(jié)構(gòu)圖——工作原理延遲時間分析設:一個“與”門/“或”門的延遲時間為T,一個異或門的延遲時間為3T,則:一位FA的Si時間延遲為6TCi+1的傳輸時間延遲為2Tn位行波進位加法器的時間延遲為

ta=n·2T+9T=(2n+9)Tn位行波進位加法器的延遲時間行波進位的補碼加/減法器結(jié)構(gòu)2.3定點乘法運算2.3.1原碼并行乘法1.人工算法與機器算法的同異性運算規(guī)則:乘積的符號位、數(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)設x=1101,y=1011,數(shù)值部分運算過程分析早期——采用串行的1位乘法,即多次執(zhí)行“加法—移位”操作簡單,但太慢;目前使用流水式陣列乘法器(并行)對于計算機而言,不同之處在于:1.機器字長為n位,兩個n位數(shù)相乘,乘積可能為2n位2.只有兩個操作數(shù)加法器不能將n個位積一次相加設A、B是兩個不帶符號的二進制整數(shù):

A=am-1…a1a0

m位

B=bn-1…b1b0

n位數(shù)值分別為a和b,即

m-1

n-1

a

=∑ai2i

b

=∑bj2j

i=0

j=0被乘數(shù)A與乘數(shù)B相乘,產(chǎn)生m+n位乘積P:

P=pm+n-1…p1p0m+

n位乘積P

的數(shù)值為2.不帶符號的陣列乘法器m位n位二進制數(shù)的計算過程a4a3a2a1a0b4b3b2b1b0a4b1a3b1a2b1a1b1a0b1a4b0a3b0a2b0a1b0a0b0a4b2a3b2a2b2a1b2a0b2a4b3a3b3a2b3a1b3a0b3a4b4a3b4a2b4a1b4a0b4p9p8p7p6p5p4p3p2p1p0×=A=B=P以m=n=5為例延遲時間電路中,

{aibj|0≤i≤m-1和0≤j≤n-1}可用

“與”門并行產(chǎn)生n位×n位的乘法器——需要n(n-1)個全加器和n2個“與”門設Ta為“與門”的傳輸延遲時間,Tf為FA的進位傳輸延遲假定用2級“與或”邏輯實現(xiàn)FA的進位鏈,則Ta

=T,Tf

=2T

n位×n位不帶符號的陣列乘法器總的乘法時間為:tm=Ta+(n-1)×6T+(n-1)×Tf+3T

=T+(n-1)×6T+(n-1)×2T+3T=(8n-4)T

5位×5位不帶符號陣列乘法器[例16]已知兩個不帶符號的二進制整數(shù)A

=11011,B

=10101,求每一部分乘積項aibj的值與p9p8……p0的值[解:]P=p9p8p7p6p5p4p3p2p1p0=512+32+16+7=1000110111(56710)a4b0=1

a3b0=1

a2b0=0

a1b0=1a0b0=1a4b1=0a3b1=0

a2b1=0a1b1=0a0b1=0a4b2=1

a3b2=1

a2b2=0

a1b2=1a0b2=1a4b4=1

a3b4=1a2b4=0

a1b4=1a0b4=1a4b3=0

a3b3=0

a2b3=0

a1b3=0

a0b3=0有符號數(shù)乘法的實現(xiàn)方法一是將補碼轉(zhuǎn)成原碼再用無符號數(shù)乘法器方案二是設計一種直接用補碼進行乘法運算的新型乘法器對2求補電路——可將補碼表示的帶符號數(shù)轉(zhuǎn)換成絕對值

0≤i≤n-13.帶符號的陣列乘法器按位掃描技術(shù)求(n+1)位補碼表示的帶符號數(shù)A=anan-1…a1a0的絕對值利用符號位來作為控制信號E例,在5位有符號數(shù)11010,對2求補器中,E=1,a3a0輸入為1010,輸出a3*

a0*是0110轉(zhuǎn)換一個(n+1)位帶符號數(shù),所需的總時間延遲為

tTC=(n-1)·Ta+Ta+Td=n·Ta+Td其中Ta是一個與門/一個或門的延遲時間,Td是異或門延遲時間(n+1)×(n+1)位帶求補器的陣列乘法器邏輯方框圖(2)帶符號的陣列乘法器帶求補級的陣列乘法器三個求補器的作用設A=anan-1…a1a0和B=bnbn-1…b1b0均為用定點表示的(n+1)位帶符號整數(shù)。在必要的求補操作后,用n×n位不帶符號的陣列乘法器產(chǎn)生2n位真值乘積: A·B=P=p2n-1…p1p0 p2n=an⊕bn其中P2n為符號位帶求補級的陣列乘法器既適用于原碼乘法,也適用于間接的補碼乘法;但間接的補碼乘法時間大約比原碼乘法增加1倍[例20]設x=+15,y=-13,用帶求補器的原碼陣列乘法器求x·y[解:]

設最高位為符號位,則輸入數(shù)據(jù)為

[x]補=01111

[y]補=10011

符號位單獨考慮,算前求補級后|x|=1111;|y|=1101

驗證:符號位:0⊕1=1算后求補結(jié)果:100111101換算成真值是x·y =(-11000011)2=-(128+64+3)=(-195)10

[例21]設x=-15,y=-13,用帶求補器的原碼陣列乘法器x·y[解:]

設最高位為符號位,則輸入數(shù)據(jù)為

[x]補=10001

[y]補=10011符號位單獨考慮,算前求補級后|x|=1111;|y|=1101

驗證:乘積的真值是x·y =(11000011)2=(195)10符號位:1⊕1=0算后求補結(jié)果:0

110000112.3.2直接補碼并行乘法1.補碼與真值的轉(zhuǎn)換公式

計算補碼真值的方法——使其符號位帶負權(quán)設定點整數(shù)的補碼:[N]補=anan-1…a1a0,其中an是符號位補碼數(shù)[N]補和真值N的關(guān)系可以表示成:直接補碼乘法——符號位參與運算,不需要求補級;快速把負權(quán)-2n強加到符號位an上,則真值N為:[例22]已知[N1]補=(01101)2,[N2]補=(10011)2,求[N1]補,[N2]補的數(shù)值[解:]

[N1]補=(01101)2

具有的數(shù)值為:N1=-0×24+1×23+1×22+0×21+1×20=(+13)10[N2]補=(10011)2具有的數(shù)值為:N2=-1×24+0×23+0×22+1×21+1×20=(-13)10對于0類、3類全加器:S=XYZ+XYZ+XYZ+XYZC=XY+YZ+ZX對于1類、2類全加器:S=XYZ+XYZ+XYZ+XYZC=XY+XZ+YZ*2.一般化的全加器形式全加器根據(jù)輸入端負權(quán)的數(shù)量可分為四類——0類、1類、2類、3類常規(guī)的一位全加器可假定3個輸入和2個輸出都是正權(quán)利用混合型全加器構(gòu)成直接補碼數(shù)陣列乘法器設被乘數(shù)A和乘數(shù)B是兩個5位的二進制補碼數(shù):A=(a4)a3a2a1a0B=(b4)b3b2b1b0帶負權(quán)的符號位a4和b4用括號標注下面用括號來標注負的被加項,則有:

(a4)a3

a2

a1

a0=A

×)(b4)b3

b2

b1

b0=B

(a4b0)a3b0

a2b0

a1b0

a0b0

(a4b1)a3b1

a2b1

a1b1

a0b1

(a4b2)

a3b2

a2b2

a1b2

a0b2

(a4b3)

a3b3

a2b3a1b3

a0b3

+a4b4

(a3b4)(a2b4)(a1b4)(a0b4)________________________________

(p9)p8

p7

p6

p5

p4

p3

p2

p1

p0=P

*3.直接補碼陣列乘法器5位乘5位的直接補碼陣列乘法器邏輯原理1000a0b0a2b0a1b0a4b0a3b0a0b1a1b1a2b1a3b1100a0b2a1b2a2b2a3b2110a1b3a2b3a3b311a1b4a2b4a3b422222222a4b4a4b3a4b2a4b1a0b3a0b400000p0p1p2p3p4p5(p9)p8p7p65位乘5位的情況下需要6個0類全加器(右上角)6個1類全加器(左上角)8個2類全加器(最下兩行)總數(shù)仍為5*4=20個2類和1類FA具有同樣的結(jié)構(gòu)但使用不同的邏輯符號[解:]

(0)1

1

0

1=+13

×)

(1)1

0

1

1=-5

(0)1

1

0

1

(0)11

0

1

(0)0

0

0

0

(0)1

1

0

1

0(1)(1)(0)(1)___________________

0(1)0

1

11111=-65=-1×27+1×25+1×24+1×23+1×22+1×21+1×20若用10位二進制數(shù)表示結(jié)果,則為(1)110111111=-1×29+28+27+25+24+23+22+21+20=-65

(13)×(-5)=-65[例]

設[A]補=(01101)2,[B]補=(11011)2,求[A×B]補=?2.4定點除法運算設有n位定點小數(shù)(定點整數(shù)也同樣適用):被除數(shù)x,原碼為[x]原=xf.xn-1…x1x0除數(shù)y,原碼為[y]原=yf.yn-1…y1y0

則有商q=x/y,原碼為[q]原=(xf⊕yf)+(0.xn-1…x1x0/0.yn-1…y1y0) ——商的符號qf=xf⊕yf;數(shù)值部分是兩個正數(shù)求商2.4.1原碼除法算法原理設被除數(shù)x=0.1001,除數(shù)y=0.1011,手算求x÷y

0.1101

商q

0.10110.10010

x(r0),被除數(shù)小于除數(shù),上0

-0.01011

2-1y除數(shù)右移1位,減除數(shù),上1

0.001110

r1得余數(shù)r1

-0.0

01011

2-2y除數(shù)右移1位,減除數(shù),上1

0.0000110

r2得余數(shù)r2

-0.0

000000

2-3y除數(shù)右移1位,不減除數(shù),上0

0.00001100

r3

得余數(shù)r3

-0.0

0001011

2-4y除數(shù)右移1位,減除數(shù),上1

0.00000001

r4得余數(shù)r4得x÷y的商q=0.1101,余數(shù)為r=0.00000001

0.1101

商q

0.10110.1001

x(r0)<y,上0

1.00102x(r0)被除數(shù)左移1位

+1.0101

減y,加上[-y]補,上1

0.0111

r1得余數(shù)r1

0.1110

2r1

r1左移1位

+1.0101

減y,加上[-y]補,上1

0.0011

r2得余數(shù)r2 0.0110

2r2

r2左移1位

+0.0000

因2r2小于y,上00.0110r3得余數(shù)r3

0.1100

2

r3r3左移1位,

+1.0101

減y,加上[-y]補,上1

0.0001

r4得余數(shù)r4商q=0.1101,余數(shù)為r=r4×2-4=0.0001×2-4=0.00000001例:設x=0.1001,y=0.1011,則[-y]補=1.0101,求x÷y計算機實現(xiàn)時處理方法的改進:將“被除數(shù)和余數(shù)不動,除數(shù)右移(相當于除2)”改為:除數(shù)不動(小數(shù)點固定),被除數(shù)和余數(shù)左移(相當于乘2),并將上商和余數(shù)左移結(jié)合起來具體算法:

恢復余數(shù)法加減交替法

0.1001x+[-y]補

1.0101

減y,加上[-y]補

1.11100

余數(shù)r1<0,所以商上0+y

0.1011

r1

+y,恢復為被除數(shù)

0.10011.0010余數(shù)和商左移一位+[-y]補

1.0101

2r1

y,0.01111

余數(shù)r2>0,商上1

0.1110

余數(shù)和商左移一位+[-y]補

1.0101

2r2

y,

0.00111

余數(shù)r3>0,商上1

0.0110余數(shù)和商左移一位+[-y]補

1.0101

2r3-

y,1.10110

余數(shù)r4<0,商上0+y

0.1011

r4

+y,恢復余數(shù)

0.0110

0.1100余數(shù)和商左移一位+[-y]補

1.0101

2r4

y,

0.00011

余數(shù)r5>0,商上1缺點:運算步數(shù)不確定恢復余數(shù)法01101規(guī)則:(1)首先進行減法操作(2)根據(jù)余數(shù)的符號確定具體操作及商的值:若余數(shù)為正,說明夠減,商上1若余數(shù)為負,說明不夠減,商上0,再加上除數(shù)(恢復余數(shù))(3)余數(shù)和商左移,重復進行分析恢復余數(shù)法——第i+1步的余數(shù)ri+1由前一步的余數(shù)ri(初值r0=x)得到:若ri>0,商上1,左移一位(即乘2)減y得ri+1,即:ri+1=2ri-y若ri<0,商上0,并恢復余數(shù)(即加y),然后左移一位再做減y的運算,即:ri+1=2(ri+y)-y=2ri

+y加減交替法ri若為負,不必恢復余數(shù),將ri左移一位(乘2)再加上除數(shù)y即可直接得ri+1,再由ri+1的正負決定商的值由此可得加減交替法的運算規(guī)則:

當余數(shù)為正時,商上“1”,下一步:余數(shù)左移一位,減除數(shù)當余數(shù)為負時,商上“0”,下一步:余數(shù)左移一位,加除數(shù)

0.1001x+[-y]補

1.0101

減y,即加上[-y]補

1.11100

余數(shù)r1<0,所以上0

1.11000余數(shù)左移一位后加除數(shù)y+y

0.1011

2r1

+y

0.0111

1余數(shù)r2>0,上1

0.111001余數(shù)和商左移一位后減y+[-y]補

1.0101

2r2

y

0.0011

1余數(shù)r3>0,上1

0.0110011余數(shù)和商左移一位減y+[-y]補

1.0101

2r3

y1.10110

余數(shù)r4<0,上01.01100110余數(shù)和商左移一位加y+y

0.1011

2r4

+y

0.0001

1余數(shù)r5>0,上1

01101——商;2-4×0.0001——余數(shù)加減交替法實例:x=0.1001,y=0.1011,[-y]補=1.01012.4.2并行除法器(以不恢復余數(shù)陣列除法器為例)加減交替法——用可控的加/減法單元(CAS)構(gòu)成1.可控加法/減法單元——用于并行除法流水邏輯陣列有四個輸入端Ai、Bi、P、Ci和四個輸出端Si、

Ci+1、Bi、P

加減控制線P=0,CAS作加法運算;P=1作減法運算

CAS單元的輸入與輸出的關(guān)系:

Si=Ai⊕(Bi⊕P)⊕CiCi+1=(Ai+Ci)·(Bi⊕P)+AiCi

P=0時, Si=Ai⊕Bi⊕Ci(做加法) Ci+1=AiBi+BiCi+AiCi

P=1時, Si

=Ai⊕Bi⊕Ci

其中Bi=Bi⊕1

(做減法) Ci+1=AiBi+BiCi+AiCiSi=Ai⊕(Bi⊕P)⊕CiCi+1=(Ai+Ci)·(Bi⊕P)+AiCi可控加法/減法單元(CAS)邏輯圖

CAS單元的輸出方程:

Si=Ai⊕(Bi⊕P)⊕Ci

=AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP+AiBiCiP

Ci+1=(Ai+Ci)(Bi⊕P)+AiCi

=AiBiP+AiBiP+BiCiP+BiCiP+AiCi

Si和Ci+1都能用三級組合邏輯電路實現(xiàn)——每個基本CAS單元的延遲時間為3TCAS單元的延遲時間分析思路:每行執(zhí)行加法還是減法操作,取決于前一行輸出的符號與被除數(shù)的符號是否一致不夠減時,部分余數(shù)相對于被除數(shù)要改變符號,商上“0”,除數(shù)沿對角線右移,加(P=0)到下一行的部分余數(shù)上

部分余數(shù)不改變符號時,商上“1”,下一行執(zhí)行減法(P=1)舉例——6位除以3位的不恢復余數(shù)陣列除法器邏輯原理圖假定所有被處理的數(shù)都是正的小數(shù)被除數(shù)x=0.x1x2x3x4x5x6(雙倍長)

除數(shù)y=0.y1y2y3

商數(shù)q=0.q1q2q3

余數(shù)r=0.00r3r4r5r62.不恢復余數(shù)(加減交替)的陣列除法器1

P=1時減y即加[-y]補也就是加上﹁y+1,yi右移作為下一次操作數(shù)(b)6位除以3位陣列除法器邏輯結(jié)構(gòu)圖說明:被除數(shù)x是6位的小數(shù)(雙倍長度值):

x=0.x1x2x3x4x5x6

由頂部一行和最右邊的對角線上的垂直輸入線提供除數(shù)y是3位的小數(shù):y=0.y1y2y3沿對角線進入(用“余數(shù)保持固定,除數(shù)沿對角線右移”)商q是3位的小數(shù):q=0.q1q2q3

,在陣列的左邊產(chǎn)生余數(shù)r是6位的小數(shù):r=0.00r3r4r5r6

,在陣列的最下一行單元之間互連用n=3的陣列表示說明:初始操作經(jīng)常是減法,故最上面一行的控制線P固定為“1”減法——用2的補碼實現(xiàn),右端各CAS單元上的反饋線用作初始的進位輸入;每一行最左邊的單元的進位輸出決定商的數(shù)值;當前的商反饋到下一行確定下一行的操作(加法還是減法)運算時,沿著每一行都有進位(或借位)傳播,且所有行在進位鏈上都是串行連接,每個CAS單元的延遲時間為3T,因此,對一個2n位除以n位的不恢復余數(shù)陣列除法器來說,單元的數(shù)量為(n+1)2,考慮最大情況下的信號延遲,除法執(zhí)行時間為 td=3(n+1)2T其中n為尾數(shù)位數(shù)[例23]x=0.101001,y=0.111,求x÷y[解:]

[y]補=0.111

[-y]補=1.001被除數(shù)x

0.101001

+[-y]補

1.001

余數(shù)為負1.110001<0

q0=0

+2-1[y]補

0.0111

余數(shù)為正0.001101>0

q1=1

+2-2[-y]補

1.11001

余數(shù)為負1.111111<0

q2=0

+2-3[y]補

0.000111

余數(shù)為正0.000110>0

q3=1故得商q=q0.q1q2q3=0.101余數(shù)r=(0.00r3r4r5r6)=0.000110用CAS構(gòu)成的陣列除法器實現(xiàn)0.101001÷0.111

[y]補=0.111

[-y]補=1.001

0101001

0101

+[-y]補

1001

最高位無進位1110q0=0,下次做加法

+[y]補

0111

最高位有進位0011

q1=1,下次減法

+[-y]補

1001

最高位無進位1111

q2=0,下次加法

+[y]補

0111

最高位有進位0110

q3=1故得商q=q0.q1q2q3=0.101

余數(shù)r=0.1102-3=0.0001100012.5定點運算器的組成2.5.1邏輯運算

邏輯運算——邏輯非、邏輯加、邏輯乘、邏輯異1

溫馨提示

  • 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

提交評論