計(jì)算機(jī)組成原理課件第2章_第1頁
計(jì)算機(jī)組成原理課件第2章_第2頁
計(jì)算機(jī)組成原理課件第2章_第3頁
計(jì)算機(jī)組成原理課件第2章_第4頁
計(jì)算機(jī)組成原理課件第2章_第5頁
已閱讀5頁,還剩174頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1計(jì)算機(jī)組成原理第二章運(yùn)算方法和運(yùn)算器2本章內(nèi)容

2.1數(shù)據(jù)與文字的表示方法

2.2定點(diǎn)加法、減法運(yùn)算

2.3定點(diǎn)乘法運(yùn)算

2.4定點(diǎn)除法運(yùn)算

2.5定點(diǎn)運(yùn)算器的組成

2.6浮點(diǎn)運(yùn)算與浮點(diǎn)運(yùn)算器

2.7本章小結(jié)32.1數(shù)據(jù)與文字的表示方法

計(jì)算機(jī)中使用的數(shù)據(jù)可分成兩大類:符號(hào)數(shù)據(jù):非數(shù)字符號(hào)的表示(ASCII、漢字、圖形等)數(shù)值數(shù)據(jù):數(shù)字?jǐn)?shù)據(jù)的表示方式(定點(diǎn)、浮點(diǎn))計(jì)算機(jī)數(shù)字和字符的表示方法應(yīng)有利于數(shù)據(jù)的存儲(chǔ)、加工(處理)、傳送;編碼:用少量、簡(jiǎn)單的基本符號(hào),選擇合適的規(guī)則表示盡量多的信息,同時(shí)利于信息處理(速度、方便)42.1.1數(shù)據(jù)格式一、定點(diǎn)表示法所有數(shù)據(jù)的小數(shù)點(diǎn)位置固定不變理論上位置可以任意,但實(shí)際上將數(shù)據(jù)表示有兩種方法(小數(shù)點(diǎn)位置固定-定點(diǎn)表示法/定點(diǎn)格式):純小數(shù)純整數(shù)51、定點(diǎn)純小數(shù)x0

x1x2x3…xn-1xn表示數(shù)的范圍是-1<X<+162、純小數(shù)的表示范圍71、定點(diǎn)純整數(shù)

x0

x1x2x3…xn-1xn表示數(shù)的范圍是-1<X<+184、定點(diǎn)表示法的特點(diǎn)定點(diǎn)數(shù)表示數(shù)的范圍受字長(zhǎng)限制,表示數(shù)的范圍有限;定點(diǎn)表示的精度有限機(jī)器中,常用定點(diǎn)純整數(shù)表示92、浮點(diǎn)表示法電子質(zhì)量(克):9×10-28=0.9×10-27

太陽質(zhì)量(克):2×1033=0.2×1034

相差甚遠(yuǎn),在定點(diǎn)計(jì)算機(jī)中無法直接來表示這個(gè)數(shù)值范圍。10浮點(diǎn)表示法浮點(diǎn)表示:小數(shù)點(diǎn)位置隨階碼不同而浮動(dòng)格式:N=RE·M基數(shù)R,取固定值,如2,隱含表示指數(shù)E用整數(shù)形式表示尾數(shù)M用定點(diǎn)小數(shù)表示圖2-5浮點(diǎn)數(shù)據(jù)在機(jī)器中的表示形式11浮點(diǎn)表示法浮點(diǎn)數(shù)的規(guī)格化表示:通過移動(dòng)尾數(shù),使尾數(shù)M的最高位數(shù)字為1。即M滿足1/2≤|M|<1時(shí),這個(gè)浮點(diǎn)數(shù)就是規(guī)格化的數(shù),否則就不是。在字長(zhǎng)一定的情況下,規(guī)格化的浮點(diǎn)數(shù)精度最高。1.M規(guī)格化(IEEE754標(biāo)準(zhǔn)):

(1.75)10=1.11×20(規(guī)格化表示)

=0.111×21=0.0111×22

123、IEEE754標(biāo)準(zhǔn)(規(guī)定了浮點(diǎn)數(shù)的表示格式,運(yùn)算規(guī)則等)規(guī)則規(guī)定了單精度(32)和雙精度(64)的基本格式.規(guī)則中,尾數(shù)用原碼,指數(shù)用移碼(便于對(duì)階和比較)一個(gè)規(guī)格化的32位浮點(diǎn)數(shù)x的真值表示為

x=(-1)S×(1.M)×2E-127e=E-12713IEEE754標(biāo)準(zhǔn)基數(shù)R=2,基數(shù)固定,采用隱含方式來表示。32位的浮點(diǎn)數(shù):S數(shù)的符號(hào)位1位,在最高位,“0”表示正數(shù),“1”表示負(fù)數(shù)。M是尾數(shù),23位,在低位部分,采用純小數(shù)表示E是階碼,8位,采用移碼表示。移碼比較大小方便。規(guī)格化:若不對(duì)浮點(diǎn)數(shù)的表示作出明確規(guī)定,同一個(gè)浮點(diǎn)數(shù)的表示就不是唯一的。尾數(shù)域最左位(最高有效位)總是1,故這一位經(jīng)常不予存儲(chǔ),而認(rèn)為隱藏在小數(shù)點(diǎn)的左邊。采用這種方式時(shí),將浮點(diǎn)數(shù)的指數(shù)真值e變成階碼E時(shí),應(yīng)將指數(shù)e加上一個(gè)固定的偏移值127(01111111),即E=e+127。14IEEE754標(biāo)準(zhǔn)64位的浮點(diǎn)數(shù)中符號(hào)位1位,階碼域11位,尾數(shù)域52位,指數(shù)偏移值是1023。因此規(guī)格化的64位浮點(diǎn)數(shù)x的真值為:x=(-1)S×(1.M)×2E-1023

e=E-102315IEEE754標(biāo)準(zhǔn)真值x為零表示:當(dāng)階碼E為全0且尾數(shù)M也為全0時(shí)的值,結(jié)合符號(hào)位S為0或1,有正零和負(fù)零之分。真值x為無窮大表示:當(dāng)階碼E為全1且尾數(shù)M為全0時(shí),結(jié)合符號(hào)位S為0或1,也有+∞和-∞之分。這樣在32位浮點(diǎn)數(shù)表示中,要除去E用全0和全1(25510)表示零和無窮大的特殊情況,指數(shù)的偏移值不選128(10000000),而選127(01111111)。對(duì)于規(guī)格化浮點(diǎn)數(shù),E的范圍變?yōu)?到254,真正的指數(shù)值e則為-126到+127。因此32位浮點(diǎn)數(shù)表示的絕對(duì)值的范圍是10-38~1038(以10的冪表示)。浮點(diǎn)數(shù)所表示的范圍遠(yuǎn)比定點(diǎn)數(shù)大。一般在高檔微機(jī)以上的計(jì)算機(jī)中同時(shí)采用定點(diǎn)、浮點(diǎn)表示,由使用者進(jìn)行選擇。而單片機(jī)中多采用定點(diǎn)表示。16浮點(diǎn)數(shù)舉例[例1]若浮點(diǎn)數(shù)x的754標(biāo)準(zhǔn)存儲(chǔ)格式為(41360000)16,求其浮點(diǎn)數(shù)的十進(jìn)制數(shù)值。解:將16進(jìn)制數(shù)展開后,可得二制數(shù)格式為0

1000001001101100000000000000000符號(hào)S

階碼E(8位)

尾數(shù)M(23位)指數(shù)e=E-127=10000010-01111111=00000011=(3)10包括隱藏位1的尾數(shù)1.M=1.01101100000000000000000=1.011011于是有x=(-1)S×1.M×2e=+(1.011011)×23=+1011.011=(11.375)1017浮點(diǎn)數(shù)舉例[例2]將數(shù)(20.59375)10轉(zhuǎn)換成754標(biāo)準(zhǔn)的32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式。解:首先分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù):20.59375=10100.10011然后移動(dòng)小數(shù)點(diǎn),使其在第1,2位之間10100.10011=1.010010011×24e=4于是得到:S=0,E=4+127=131,M=010010011最后得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式為:01000001101001001100000000000000=(41A4C000)16182.1.2數(shù)的機(jī)器碼表示真值:一般書寫的數(shù)機(jī)器碼:機(jī)器中表示的數(shù),要解決在計(jì)算機(jī)內(nèi)部數(shù)的正、負(fù)符號(hào)和小數(shù)點(diǎn)運(yùn)算問題。原碼反碼補(bǔ)碼移碼191.機(jī)器數(shù)的原碼表示小數(shù)原碼的定義為:

[X]原為機(jī)器數(shù)的原碼,X為真值。

說明:有正0和負(fù)0之分范圍-(2n-1)

~+(2n-1)例:x=+11001110,y=-11001110[x]原=011001110,[y]原=11100111020機(jī)器數(shù)的原碼表示21機(jī)器數(shù)的原碼表示原碼特點(diǎn):表示簡(jiǎn)單,易于同真值之間進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)乘除運(yùn)算規(guī)則簡(jiǎn)單。進(jìn)行加減運(yùn)算十分麻煩。222、補(bǔ)碼表示法生活例子:現(xiàn)為北京時(shí)間下午4點(diǎn),但鐘表顯示為7點(diǎn)。有兩種辦法校對(duì):

(1)做減法7-3=4(逆時(shí)針退3格)

(2)做加法7+9=16(順時(shí)針進(jìn)9格)

16(mod12)=16-12=4(以12為模,變成4)

定義:正數(shù)的補(bǔ)碼就是正數(shù)的本身,負(fù)數(shù)的補(bǔ)碼是原負(fù)數(shù)加上模。計(jì)算機(jī)運(yùn)算受字長(zhǎng)限制,屬于有模運(yùn)算.定點(diǎn)小數(shù)x0.x1x2…xn

,以2為模定點(diǎn)整數(shù)x0x1x2…xn

,以2n+1為模232.機(jī)器數(shù)的補(bǔ)碼表示整數(shù)的補(bǔ)碼[X]補(bǔ)為整數(shù)X的補(bǔ)碼,X為任意整數(shù),n為整數(shù)的位數(shù)。小數(shù)的補(bǔ)碼:

[X]補(bǔ)是小數(shù)X的補(bǔ)碼,X為任意小數(shù),2為模數(shù)。補(bǔ)碼最大的優(yōu)點(diǎn)就是將減法運(yùn)算轉(zhuǎn)換成加法運(yùn)算。

通常不按表達(dá)式求補(bǔ)碼,而通過反碼來得到。242.機(jī)器數(shù)的補(bǔ)碼表示例2-15求正整數(shù)X=1011和負(fù)整數(shù)Y=-1011的補(bǔ)碼解:

[X]補(bǔ)=01011[Y]補(bǔ)=2n+1+X=24+1+X=100000-1011=10101例2-16求正小數(shù)X=0.1011和負(fù)小數(shù)Y=-0.1011的補(bǔ)碼解:

[X]補(bǔ)=0.1011[Y]補(bǔ)=2+X=2-0.1011=1.0101253、反碼表示法定義:正數(shù)的表示與原、補(bǔ)碼相同,負(fù)數(shù)的補(bǔ)碼符號(hào)位為1,數(shù)值位是將原碼的數(shù)值按位取反,就得到該數(shù)的反碼表示。電路容易實(shí)現(xiàn),觸發(fā)器的輸出有正負(fù)之分。26反碼表示法定義:整數(shù)反碼的數(shù)學(xué)定義為:

或[X]反

=X(mod2n+1-1)例2-20X=1011,則[X]反=01011

Y=-1011,則[Y]反=25-1+Y=10100273.機(jī)器的反碼表示定義:小數(shù)反碼的數(shù)學(xué)定義為:或[X]反

=X(mod2-2-n)X1=+0.1011011,[X1]反=0.1011011X2=-0.1011011,[X2]反=1.010010028補(bǔ)碼和反碼的關(guān)系以純小數(shù)為例[x]補(bǔ)=[x]反+2-n

反碼表示有正0和負(fù)0之分294.機(jī)器數(shù)的移碼表示法(1/2)定義:設(shè)階碼為n位整數(shù),[X]移

=2n+X2n>X≥-2n即無論X是正還是負(fù),一律加上2n,稱2n為基數(shù)。例2-21X=1001,[X]補(bǔ)=01001,可求得[X]移=11001X=-1001,[X]補(bǔ)=10111,可求得[X]移=00111304.機(jī)器數(shù)的移(增)碼表示法(2/2)性質(zhì):(1)0的移碼唯一。整數(shù)0[+0]移=2n+00…0=100…0[-0]移=2n-00…0=100…0(2)機(jī)器0的形式為00…0,它表示的真值是[X]移所能表示的最小的數(shù)。(3)移碼的最高位是符號(hào)位,但表示的意義與原碼和補(bǔ)碼的意義相反。符號(hào)為0時(shí),表示負(fù)數(shù);符號(hào)為1,表示正數(shù)。(4)移碼一般只進(jìn)行加減運(yùn)算,運(yùn)算后需要對(duì)結(jié)果進(jìn)行修正,修正量為2n,即要對(duì)結(jié)果的符號(hào)位取反后,才能得到移碼形式的結(jié)果。(5)通過比較兩個(gè)移碼的大小,可得知其對(duì)應(yīng)的真值大小。31各種編碼的比較相同點(diǎn):1、三種編碼(原碼、反碼、補(bǔ)碼)的最高位都是符號(hào)位。2、當(dāng)真值為正時(shí),三種編碼的符號(hào)位都用0表示,數(shù)值部分與真值相同。即它們的表示方法是相同的。3、當(dāng)真值為負(fù)時(shí),三種編碼的符號(hào)位都用1表示,但數(shù)值部分的表示各不相同,數(shù)值部分存在這樣的關(guān)系:補(bǔ)碼是原碼的“求反加1”(整數(shù)),或者“求反末位加1”(小數(shù));反碼是原碼的“每位求反”。4、它們所能表示的數(shù)據(jù)范圍基本一樣,-2n<X<2n(整數(shù))或-1<X<1(小數(shù)),補(bǔ)碼多表示一個(gè)數(shù)-2n(整數(shù))或-1(小數(shù))。區(qū)別:在于對(duì)負(fù)數(shù)的表示方法有所不同。32真值原碼反碼補(bǔ)碼移碼-128

1000000000000000-12711111111100000001000000100000001...............-110000001111111101111111101111111-010000000111111110000000010000000+000000000000000000000000010000000+100000001000000010000000110000001...............+12701111111011111110111111111111111【例】將十進(jìn)制真值(-128,-127,-1,0,+1,+127)列表表示成二進(jìn)制數(shù)及原碼、反碼、補(bǔ)碼、移碼值。33【例】

設(shè)機(jī)器字長(zhǎng)16位,定點(diǎn)表示,尾數(shù)15位,數(shù)符1位,問:

⑴定點(diǎn)原碼整數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少?

定點(diǎn)原碼小數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少?34解題過程⑴定點(diǎn)原碼整數(shù)表示最大正數(shù)值=(215-1)10=(+32767)10

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

=(-32767)10

⑵定點(diǎn)原碼小數(shù)表示最大正數(shù)值=(+0.111...11)2

=(1-2-15)10最小負(fù)數(shù)值=(-0.111..11)2=-(1-2-15)100

111111111111111

1

111111111111111

35[例]假設(shè)由S,E,M三個(gè)域組成的一個(gè)32位二進(jìn)制字所表示的非零規(guī)格化浮點(diǎn)數(shù)x,真值表示為(注意此例不是IEEE754標(biāo)準(zhǔn)):

x=(-1)s×(1.M)×2E-128問:它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負(fù)數(shù)、最小負(fù)數(shù)是多少?最大正數(shù)

x=[1+(1-2-23)]×2127最小正數(shù)

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

x=-[1+(1-2-23)]×2127

最大負(fù)數(shù)

x=-1.0×2-128

362.1.3字符編碼符號(hào)數(shù)據(jù):字符信息用數(shù)據(jù)表示,如ASCII等;字符表示方法ASCII:用一個(gè)字節(jié)來表示,低7位用來編碼(128),最高位為校驗(yàn)位,參見教材P24表2.1字符串的存放方法37ASCII碼“美國(guó)標(biāo)準(zhǔn)信息交換代碼”(AmericanStandardCodeforInformationInterchange),簡(jiǎn)稱ASCII碼。7位二進(jìn)制編碼,可表示27=128個(gè)字符。ASCII碼中,編碼值0~31不對(duì)應(yīng)任何可印刷(或稱有字形)字符,通常稱它們?yōu)榭刂谱址?,用于通信中的通信控制或?qū)τ?jì)算機(jī)設(shè)備的功能控制。編碼值為32的是空格(或間隔)字符SP。編碼值為127的是刪除控制DEL碼。其余的94個(gè)字符稱為可印刷字符。38ASCII碼(美國(guó)標(biāo)準(zhǔn)信息交換碼)標(biāo)準(zhǔn)ASCII碼用7位二進(jìn)制編碼,有128個(gè)不可顯示的控制字符:前32個(gè)和最后一個(gè)編碼回車CR:0DH換行LF:0AH響鈴BEL:07H可顯示和打印的字符:20H后的94個(gè)編碼數(shù)碼0~9:30H~39H大寫字母A~Z:41H~5AH小寫字母a~z:61H~7AH空格:20H擴(kuò)展ASCII碼:最高D7位為1,表達(dá)制表符號(hào)39ASCII字符編碼表000000010010001101000101011001110000NULDELSP0@P`p0001SOHDC1!1AQaq0010STXDC2"2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB'7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\1|1101CRGS-=M]m}1110SORS.>N^n~1111SIUS/?O_oDEL0-3位4-7位402.1.4漢字的表示特點(diǎn):(1)漢字是一種象形文字,據(jù)統(tǒng)計(jì),從甲骨文至今約有六萬左右的漢字。目前常見的漢字有約七千個(gè)。(2)漢字字形結(jié)構(gòu)復(fù)雜,筆劃繁多。(3)漢字同音字多,多音字多。涉及多種編碼:41漢字的輸入編碼數(shù)字編碼國(guó)標(biāo)區(qū)位碼,用數(shù)字串代表一個(gè)漢字輸入

字音編碼以漢字拼音為基礎(chǔ)的輸入方法字形編碼用漢字的形狀(筆劃)來進(jìn)行的編碼例如五筆字形混合編碼42漢字交換碼漢字交換碼是不同的漢字處理系統(tǒng)之間交換信息用的編碼漢字也是一種字符1981年我國(guó)制定了《信息交換用漢字編碼字符集基本集GB2312-80》國(guó)家標(biāo)準(zhǔn)(簡(jiǎn)稱國(guó)標(biāo)碼)。每個(gè)漢字的二進(jìn)制編碼用兩個(gè)字節(jié)表示。共收錄一級(jí)漢字3755個(gè),二級(jí)漢字3008個(gè),各種符號(hào)682個(gè),共計(jì)7445個(gè)43漢字內(nèi)碼漢字內(nèi)碼是用于漢字信息的存儲(chǔ)、檢索等操作的機(jī)內(nèi)代碼,一般采用兩個(gè)字節(jié)表示漢字內(nèi)碼有多種方案,常以國(guó)標(biāo)碼為基礎(chǔ)的編碼機(jī)內(nèi)碼=國(guó)標(biāo)碼+8080H=區(qū)位碼+A0A0H例如,將國(guó)標(biāo)碼兩字節(jié)的最高位置1后形成漢字“啊”的國(guó)標(biāo)碼

3021H(0011000000100001)對(duì)應(yīng)的漢字內(nèi)碼

B0A1H(1011000010100001)44字模碼漢字的字模碼為:16位×16位=32字節(jié)漢字字模點(diǎn)陣及編碼45漢字的表示方法漢字的輸入編碼、交換碼、漢字內(nèi)碼、字模碼是計(jì)算機(jī)中用于輸入、內(nèi)部處理、交換、輸出四種不同用途的編碼。顯示輸出打印輸出機(jī)內(nèi)碼向字形碼轉(zhuǎn)換機(jī)內(nèi)碼輸入碼向機(jī)內(nèi)碼轉(zhuǎn)換字符代碼化(輸入)462.1.5數(shù)據(jù)校驗(yàn)碼校驗(yàn)碼:能夠發(fā)現(xiàn)甚至糾正信息傳輸或存儲(chǔ)過程中出現(xiàn)錯(cuò)誤的編碼檢錯(cuò)碼:僅能檢測(cè)出錯(cuò)誤的編碼糾錯(cuò)碼:能夠發(fā)現(xiàn)并糾正錯(cuò)誤的編碼最簡(jiǎn)單且應(yīng)用廣泛的檢錯(cuò)碼:奇偶校驗(yàn)碼奇偶校驗(yàn)碼

海明校驗(yàn)碼循環(huán)冗余校驗(yàn)碼472.1.5數(shù)據(jù)校驗(yàn)碼1、數(shù)據(jù)校驗(yàn)的實(shí)現(xiàn)原理:數(shù)據(jù)校驗(yàn)碼是在合法的數(shù)據(jù)編碼之間,加進(jìn)一些不允許出現(xiàn)的(非法的)編碼,使合法的數(shù)據(jù)編碼出現(xiàn)錯(cuò)誤時(shí)成為非法編碼。這樣就可以通過檢測(cè)編碼的合法性達(dá)到發(fā)現(xiàn)錯(cuò)誤的目的。2、碼距:指任何一種編碼的任兩組二進(jìn)制代碼中,其對(duì)應(yīng)位置的代碼最少有幾個(gè)二進(jìn)制位不相同。48例:用奇校驗(yàn)和偶校驗(yàn)進(jìn)行編碼數(shù)據(jù)1010101001010100000000000111111111111111偶校驗(yàn)碼101010100010101001000000000011111111111111110奇校驗(yàn)碼101010101010101000000000001011111110111111111491.奇偶校驗(yàn)碼1、碼距:22、方法:它是在被傳送的n位信息組上,加上一個(gè)二進(jìn)制位作為校驗(yàn)位,使配置后的n+1位二進(jìn)制代碼中1的個(gè)數(shù)為奇數(shù)(奇校驗(yàn))或偶數(shù)(偶校驗(yàn))。

3、奇偶校驗(yàn)碼只能檢測(cè)出數(shù)據(jù)代碼中一位出錯(cuò)的情況,但無法判斷差錯(cuò)所發(fā)生的位置。常用于存儲(chǔ)器讀寫檢查,或ASCII字符傳送過程中的檢查。502.海明校驗(yàn)碼(1/8)1.原理:在數(shù)據(jù)位中加入幾個(gè)校驗(yàn)位,將數(shù)據(jù)代碼的碼距均勻地拉大,并把數(shù)據(jù)的每個(gè)二進(jìn)制位分配在幾個(gè)奇偶校驗(yàn)組中。當(dāng)某一位出錯(cuò)后,就會(huì)引起有關(guān)的幾個(gè)校驗(yàn)位的值發(fā)生變化,不但可以發(fā)現(xiàn)錯(cuò)誤,還能指出是哪一位出錯(cuò),為進(jìn)一步自動(dòng)糾錯(cuò)提供依據(jù)。2.編碼規(guī)則:若海明碼最高位號(hào)為m,最低位號(hào)為1,即HmHm-1…H2H1,則海明碼的編碼規(guī)則是:校驗(yàn)位與數(shù)據(jù)位之和為m,每個(gè)校驗(yàn)位Pi在海明碼中被分在位號(hào)2i-1的位置上,其余各位為數(shù)據(jù)位,并按從低向高逐位依次排列的關(guān)系分配各數(shù)據(jù)位。

海明碼的每一位位碼Hi(包括數(shù)據(jù)位和校驗(yàn)位)由多個(gè)校驗(yàn)位校驗(yàn),其關(guān)系是被校驗(yàn)的每一位位號(hào)要等于校驗(yàn)它的各校驗(yàn)位的位號(hào)之和。512.海明校驗(yàn)碼(2/8)3.增添校驗(yàn)位:假設(shè)欲檢測(cè)的有效信息為n位,需增加的校驗(yàn)位為k位,則校驗(yàn)碼的長(zhǎng)度為n+k位。校驗(yàn)位的狀態(tài)組合,應(yīng)當(dāng)具有指出n+k位中任一位有錯(cuò)或無錯(cuò)的能力,即需要區(qū)別出n+k+1種狀態(tài)。應(yīng)滿足關(guān)系式:2k≥n+k+1,此關(guān)系式稱為海明不等式,若信息位長(zhǎng)度n確定后,由此可得到校驗(yàn)位k的最短長(zhǎng)度。假設(shè)數(shù)據(jù)位是7位二進(jìn)制編碼,據(jù)上所述,校驗(yàn)位的位數(shù)k為4,故海明碼的總位數(shù)為11。它們的排列關(guān)系可表示為:位置號(hào):H11H10H9H8H7H6H5H4H3H2H1

海明碼:D7D6D5P4D4D3D2P3D1P2P1

由上知:每個(gè)校驗(yàn)位由其本身校驗(yàn);

每個(gè)數(shù)據(jù)位由若干校驗(yàn)位校驗(yàn)。522.海明校驗(yàn)碼(3/8)4.校驗(yàn)位校驗(yàn)任務(wù)的分配:根據(jù)海明碼編碼規(guī)則,每一位海明碼都有多個(gè)校驗(yàn)位,且被校驗(yàn)每一位的位號(hào)等于參與校驗(yàn)的幾個(gè)校驗(yàn)位的位號(hào)之和。 占據(jù)各權(quán)位上的校驗(yàn)位按權(quán)組成的8421碼,正好等于海明碼的位號(hào),即海明碼的位號(hào)Hi正好等于要校驗(yàn)它的校驗(yàn)位所占權(quán)位權(quán)值之和。例如:H11=P4×23+P2×22+P1×21這說明了H11位將由P4、P2、P1進(jìn)行校驗(yàn)。校驗(yàn)位P1可以校驗(yàn):H1、H3、H5、H7、H9、H11、H13、H15校驗(yàn)位P2可以校驗(yàn):H2、H3、

H6、H7、H10、H11、H14、H15校驗(yàn)位P3可以校驗(yàn):H4、H5、

H6、

H7、H12、H13、H14、H15校驗(yàn)位P4可以校驗(yàn):H8、H9、

H10、H11、H12、H13、H14、H15根據(jù)校驗(yàn)時(shí)采用奇校驗(yàn)或偶校驗(yàn),可以寫出相應(yīng)的校驗(yàn)方程。532.海明校驗(yàn)碼(4/8)例:設(shè)有一個(gè)7位信息碼位0110001,求它的海明碼。解:n=7,根據(jù)海明不等式,可求得校驗(yàn)位最短長(zhǎng)度k=4。其海明碼先表示如下:海明碼位號(hào):H11H10H9H8H7H6H5H4H3H2H1海明碼:0

1

1P4000

P31P2P1按偶校驗(yàn)寫出校驗(yàn)方程為:H1

H3

H5

H7

H9

H11=0(P1=H1)H2

H3

H6

H7

H10

H11=0(P2=H2)H4

H5

H6

H7=0(P3=H4)H8

H9

H10

H11=0(P4=H8)由此可得:P1=0、P2=0、P3=0、P4=0,所以0110001的海明碼為01100000100。542.海明校驗(yàn)碼(5/8)5.檢錯(cuò)與糾錯(cuò)方法:將錯(cuò)了的碼字重新代入校驗(yàn)方程校驗(yàn)一次即可。設(shè)上例中的海明碼01100000100傳送后,若H6位發(fā)生錯(cuò)誤,變成了01100100100,代入偶校驗(yàn)方程如下:H1

H3

H5

H7

H9

H11=0

1

0

0

1

0=0=E1H2

H3

H6

H7

H10

H11=0

1

1

0

1

0=1=E2H4

H5

H6

H7=0

0

1

0=1=E3H8

H9

H10

H11=0

1

1

0=0=E4可把E4E3E2E1=0110看成一個(gè)“指誤字”,其二進(jìn)制碼為0110,說明H6出了錯(cuò),是H6錯(cuò)成了1,所以要糾錯(cuò),糾錯(cuò)時(shí)將H6位取反值,讓它恢復(fù)到正確值0。糾錯(cuò)后,即可得到正確的海明碼01100000100。552.海明校驗(yàn)碼(6/8)6.討論:設(shè)有效信息n=4位,據(jù)海明不等式,得校驗(yàn)位k=3,海明碼位號(hào):

H7H6H5H4H3H2H1

海明碼:

D4D3D2P3D1P2P1

可以得到:P1參與D1、D2、D4的校驗(yàn);P2參與D1、D3、D4的校驗(yàn);P3參與D2、D3、D4的校驗(yàn)。若采用偶校驗(yàn),則:

P1=D1

D2

D4P2=D1

D3

D4P3=D2

D3

D4

上述編碼中,兩個(gè)正確碼之間若有一位有效信息不同,則由于該位至少參加兩組的奇偶校驗(yàn),故至少會(huì)影響到兩位校驗(yàn)位的不同,碼距=3(可檢測(cè)兩位錯(cuò),或檢測(cè)并糾正一位錯(cuò))562.海明校驗(yàn)碼(7/8)若按下述關(guān)系對(duì)所得的海明碼進(jìn)行偶校驗(yàn):S1=P1

D1

D2

D4S2=P2

D1

D3

D4S3=P3

D2

D3

D4則S3S2S1可以反映出錯(cuò)情況:(1)若S3S2S1=000,無錯(cuò)(2)若欲傳的海明碼=0101101,收到0111101,則

S1=P1

D1

D2

D4=1

1

1

0=1,S2=0,S3=1表明第5位(D2)出錯(cuò)(3)若欲傳的海明碼=0101101,收到0110101,則

S1=1,S2=0,S3=0表明有錯(cuò),但無法判斷是第1位出錯(cuò),還是4、5位同時(shí)出錯(cuò)。問題?572.海明校驗(yàn)碼(8/8)7.改進(jìn):增加一個(gè)校驗(yàn)位

S4=P4

P1

P2

P3

D1

D2

D3

D4P4=P1

P2

P3

D1

D2

D3

D4

(1)S4=0,S3S2S1=000,無錯(cuò)(2)S4=0,S3S2S1≠0,表明有兩位出錯(cuò)(3)S4=1,S3S2S1≠0,根據(jù)S3S2S1指出的值糾正一位錯(cuò)。在這種情況下,因多增加一位校驗(yàn)位,則海明不等式改為:2k-1≥n+k,稱為擴(kuò)展海明碼,其碼距=4,可發(fā)現(xiàn)兩位錯(cuò)并糾正一位錯(cuò)。58

小結(jié)數(shù)據(jù)可區(qū)分為數(shù)值型數(shù)據(jù)和非數(shù)值型數(shù)據(jù)。根據(jù)基數(shù)和位的權(quán)數(shù)可將數(shù)據(jù)表示成二進(jìn)制數(shù)(基數(shù)R為2),八進(jìn)制數(shù)(基數(shù)R為8),十六進(jìn)制數(shù)(基數(shù)R為16)等。數(shù)制之間可根據(jù)基數(shù)和位的權(quán)數(shù)實(shí)現(xiàn)相互之間的轉(zhuǎn)換。數(shù)的表示單位是位、字節(jié)和字。定點(diǎn)表示法和浮點(diǎn)表示法可實(shí)現(xiàn)數(shù)據(jù)的有效表示,可根據(jù)精度及表示范圍的不同采用不同的表示方法。帶符號(hào)數(shù)的表示要注意符號(hào)的表示方法和小數(shù)點(diǎn)的位置。計(jì)算機(jī)中數(shù)的表示方法有四種:原碼表示法、補(bǔ)碼表示法、反碼表示法、移碼表示法。十進(jìn)制的數(shù)據(jù)表示方法有:有權(quán)碼(2421碼、4311碼、8421碼等)和無權(quán)碼(余3碼、格雷碼等)英文字符采用ASCII碼、EBCDIC碼等,但最常用的還是ASCII碼。漢字的編碼有輸入碼、內(nèi)碼、字型碼等。主要的數(shù)據(jù)校驗(yàn)碼有:奇偶校驗(yàn)碼、循環(huán)冗余校驗(yàn)碼和海明校驗(yàn)碼等。59計(jì)算機(jī)進(jìn)行算術(shù)運(yùn)算的特點(diǎn)(1)所有數(shù)據(jù)都是用二進(jìn)制數(shù)位形式來表示的。(2)在計(jì)算機(jī)內(nèi)部數(shù)以編碼形式即機(jī)器數(shù)來表示的。(3)機(jī)器運(yùn)算用電子設(shè)備實(shí)現(xiàn),電子設(shè)備規(guī)模有限,因而機(jī)器運(yùn)算要解決運(yùn)算方法、數(shù)據(jù)表示格式及數(shù)據(jù)長(zhǎng)度的選取、規(guī)定等問題。(4)用計(jì)算機(jī)進(jìn)行運(yùn)算時(shí),都要把復(fù)雜的運(yùn)算,簡(jiǎn)化為一系列最基本的運(yùn)算才能實(shí)現(xiàn)。計(jì)算機(jī)可以實(shí)現(xiàn)的基本運(yùn)算有算術(shù)運(yùn)算(加、減、乘、除等)和邏輯運(yùn)算(與、或、異或等)。602.2定點(diǎn)數(shù)的加減運(yùn)算2.2.1補(bǔ)碼加減運(yùn)算規(guī)則2.2.2基本的二進(jìn)制加法/減法器2.2.3加法運(yùn)算及其加速方法61補(bǔ)碼加法補(bǔ)碼加法的公式是

[x]補(bǔ)+[y]補(bǔ)=[x+y]

補(bǔ)在模2意義下,任意兩數(shù)的補(bǔ)碼之和等于該兩數(shù)之和的補(bǔ)碼這是補(bǔ)碼加法的理論基礎(chǔ),其結(jié)論也適用于定點(diǎn)整數(shù)62例:x=0.1001,y=0.0101,求x+y[x]

補(bǔ)=0.1001,[y]

補(bǔ)=0.0101

[x]

補(bǔ)

0.1001+[y]

補(bǔ)

0.0101

[x+y]

補(bǔ)

0.1110

所以x+y=+0.1110

63例:x=+0.1011,y=-0.0101,求x+y[x]

補(bǔ)=0.1011,[y]

補(bǔ)=1.1011

[x]

補(bǔ)

0.1011+[y]

補(bǔ)

1.1011

[x+y]

補(bǔ)

10.0110

所以x+y=0.011064補(bǔ)碼減法負(fù)數(shù)的減法運(yùn)算可以轉(zhuǎn)化為加法來做,它可以和常規(guī)的加法運(yùn)算使用同一加法器電路,從而簡(jiǎn)化了計(jì)算機(jī)的設(shè)計(jì)數(shù)用補(bǔ)碼表示時(shí),減法運(yùn)算的公式為

[x-y]補(bǔ)=

[x]補(bǔ)-[y]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)65[x1]補(bǔ)=1.0010[-x1]補(bǔ)=﹁[x1]補(bǔ)+2-4

=0.1101+0.0001=0.1110[x2]補(bǔ)=0.1101[-x2]補(bǔ)=﹁[x2]補(bǔ)+2-4

=1.0010+0.0001=1.0011

例:

已知x1=-0.1110,x2=+0.1101

求:[x1]補(bǔ),[-x1]補(bǔ),[x2]補(bǔ),[-x2]補(bǔ)66例:x=+0.1101,y=+0.0110,求x-y[x]補(bǔ)=0.1101,[y]補(bǔ)=0.0110[-y]補(bǔ)=1.1010

[x]

補(bǔ)0.1101

+[-y]

補(bǔ)

1.1010

[x-y]

補(bǔ)

10.0111

所以x-y=+0.011167溢出概念與檢驗(yàn)方法兩個(gè)正數(shù)相加,結(jié)果為負(fù)(即:大于機(jī)器所能表示的最大正數(shù)),稱為上溢。兩個(gè)負(fù)數(shù)相加,結(jié)果為正(即:小于機(jī)器所能表示的最小負(fù)數(shù)),稱為下溢。運(yùn)算出現(xiàn)溢出,結(jié)果就是錯(cuò)誤的68[例]

x=+0.1011,y=+0.1001,求x+y。[解:]

[x]補(bǔ)=0.1011,[y]補(bǔ)=0.1001[x]補(bǔ)

0.1011+[y]補(bǔ)

0.1001[x+y]補(bǔ)

1.0100

兩正數(shù)相加,結(jié)果為負(fù),顯然錯(cuò)誤。--運(yùn)算中出現(xiàn)了“上溢”有進(jìn)位無進(jìn)位69[又例]

x=+0.1011,y=+0.0010,求x+y。[解:]

[x]補(bǔ)=0.1011,[y]補(bǔ)=0.0010[x]補(bǔ)

0.1011+[y]補(bǔ)

0.0010[x+y]補(bǔ)

0.1101兩正數(shù)相加,結(jié)果無溢出無進(jìn)位無進(jìn)位70[例]

x=-0.1101,y=-0.1011,求x+y。[解:]

[x]補(bǔ)=1.0011[y]補(bǔ)=1.0101

[x]補(bǔ)

1.0011

+[y]補(bǔ)

1.0101[x+y]補(bǔ)

0.1000兩負(fù)數(shù)相加,結(jié)果為正,顯然錯(cuò)誤。--運(yùn)算中出現(xiàn)了“下溢”無進(jìn)位有進(jìn)位71[又例]

x=-0.1101,y=-0.0010,求x+y。[解:]

[x]補(bǔ)=1.0011[y]補(bǔ)=1.1110

[x]補(bǔ)

1.0011

+[y]補(bǔ)

1.1110[x+y]補(bǔ)

1.0001兩負(fù)數(shù)相加,結(jié)果為負(fù),無溢出。有進(jìn)位有進(jìn)位72進(jìn)一步結(jié)論:

當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無進(jìn)位時(shí),產(chǎn)生上溢;當(dāng)最高有效位無進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生下溢。產(chǎn)生“溢出”的原因:分析可知,當(dāng)最高有效數(shù)值位的運(yùn)算進(jìn)位與符號(hào)位的運(yùn)算進(jìn)位不一致時(shí),將產(chǎn)生運(yùn)算“溢出”73“溢出”檢測(cè)方法

為了判斷“溢出”是否發(fā)生,可采用兩種檢測(cè)的方法。第一種方法:采用雙符號(hào)位法,稱為“變形補(bǔ)碼”或“模4補(bǔ)碼”,可使模2補(bǔ)碼所能表示的數(shù)的范圍擴(kuò)大一倍第二種溢出檢測(cè)方法:采用“單符號(hào)位法”。當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無進(jìn)位時(shí),產(chǎn)生上溢;當(dāng)最高有效位無進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生下溢。故:溢出邏輯表達(dá)式為:

V=Cf⊕Co其中:

Cf為符號(hào)位產(chǎn)生的進(jìn)位,Co為最高有效位產(chǎn)生的進(jìn)位。(顯然:此邏輯關(guān)系可用異或門方便地實(shí)現(xiàn))

在定點(diǎn)機(jī)中,當(dāng)運(yùn)算結(jié)果發(fā)生溢出時(shí),機(jī)器通過邏輯電路自動(dòng)檢查出溢出故障,并進(jìn)行中斷處理。

742.2.1補(bǔ)碼加減運(yùn)算規(guī)則(1/4)公式總結(jié):

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

[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)例3-1X=0.101101,Y=-0.110100,求[X+Y]補(bǔ)解:

[X]補(bǔ)=0.101101,[Y]補(bǔ)=1.001100

[X+Y]補(bǔ)

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

=0.101101+1.001100=1.111001752.2.1補(bǔ)碼加減運(yùn)算規(guī)則(2/4)例3-2X=0.001010,Y=-0.10011,求[X-Y]補(bǔ)解:[X]補(bǔ)

=0.001010[-Y]補(bǔ)

=0.100011

[X-Y]補(bǔ)

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

=0.001010+0.100011

=0.101101762.2.1補(bǔ)碼加減運(yùn)算規(guī)則(3/4)溢出及處理:補(bǔ)碼加減運(yùn)算可能溢出,為判斷,采用變形補(bǔ)碼形式判斷溢出的原則:以兩位符號(hào)位表示數(shù)的符號(hào)。當(dāng)兩符號(hào)位不同時(shí),溢出;兩符號(hào)位相同時(shí),無溢出。無論是否發(fā)生溢出,最高符號(hào)位代表真正的符號(hào)。變形補(bǔ)碼的加減法,同樣是兩個(gè)符號(hào)位都看作數(shù)值位參加運(yùn)算,最高符號(hào)位產(chǎn)生的進(jìn)位丟掉。

[X+Y]

補(bǔ)=[X]

補(bǔ)+[Y]

補(bǔ)

[X-Y]

補(bǔ)=[X]

補(bǔ)+[-Y]

補(bǔ)例3-3X=0.1011,Y=0.0011,求[X+Y]補(bǔ)

解:[X]補(bǔ)=00.1011,[Y]補(bǔ)=00.0011

[X+Y]補(bǔ)=00.1011+00.0011=00.1110

[X+Y]補(bǔ)=0.1110772.2.1補(bǔ)碼加減運(yùn)算規(guī)則(4/4)例3-4X=0.1011,Y=0.1001,求[X+Y]補(bǔ)

解:

[X]補(bǔ)=00.1011,[Y]補(bǔ)=00.1001

[X+Y]補(bǔ)=00.1011+00.1001=01.0100運(yùn)算結(jié)果的兩符號(hào)位是01,不相同,發(fā)生溢出,因第一符號(hào)位是0,代表正數(shù),這種溢出為“正溢出”。例3-5X=-0.1101,Y=-0.1010,求[X+Y]補(bǔ)解:

[X]補(bǔ)=11.0011,[Y]補(bǔ)=11.0110

[X+Y]補(bǔ)=11.0011+11.0110=10.1001結(jié)果的兩符號(hào)位是10,不相同,發(fā)生溢出,因第一符號(hào)位是1,代表負(fù)數(shù),所以稱這種溢出為“負(fù)溢出”。782.2.2基本的二進(jìn)制加法/減法器在計(jì)算機(jī)中完成兩個(gè)二進(jìn)制數(shù)相加的基本加法器有半加器和全加器。半加器在完成兩數(shù)相加時(shí),不需要考慮低位進(jìn)位。全加器用來完成兩個(gè)二進(jìn)制數(shù)相加,并且同時(shí)考慮低位的進(jìn)位,即全加器完成三個(gè)一位數(shù)相加的功能。設(shè)Ai表示被加數(shù)的第i位

Bi表示加數(shù)的第i位

Ci為第i-1位向第i位產(chǎn)生的進(jìn)位

Ci+1為第i位向第i+1位產(chǎn)生的進(jìn)位

Si為第i位產(chǎn)生的和則全加器以Ai、Bi、Ci為輸入,以Ci+1、Si為輸出構(gòu)成一個(gè)邏輯圖。792.2.2基本的二進(jìn)制加法/減法器圖3-1全加器邏輯圖CiAiBiSiCi+1FACiAiBiSiCi+1輸出輸入0110100001101000100010100010111010111111表3-1全加器真值表802.2.2基本的二進(jìn)制加法/減法器全加器的表達(dá)式為:

Si=AiBiCi

Ci+1=AiBi+BiCi+AiCi一位全加器內(nèi)部邏輯圖

BCSiCi+1ABCAAiBiCi812.2.2基本的二進(jìn)制加法/減法器利用全加器可以實(shí)現(xiàn)兩數(shù)的和或差1、串行加法:從低位開始,每步只完成一位運(yùn)算的加法。串行加法器只需要一個(gè)全加器和一個(gè)進(jìn)位觸發(fā)器計(jì)算兩個(gè)n位數(shù)之和,需要n+1步(1位符號(hào)位),或n+2步(2位符號(hào)位)運(yùn)算。高位運(yùn)算只有等低位運(yùn)算完成后才能進(jìn)行,速度較慢2、并行加法器:可在同一時(shí)刻完成n位數(shù)的運(yùn)算。若采用變形補(bǔ)碼表示一個(gè)機(jī)器數(shù),則符號(hào)位需2位,這時(shí)需要n+2個(gè)加法器。運(yùn)算速度比串行進(jìn)位加法器高很多,這是用足夠多的硬件設(shè)備換來的。822.2.2基本的二進(jìn)制加法/減法器圖3-3行波進(jìn)位補(bǔ)碼加法/減法器FAFAFAFAFAS0S1Sn-1Bs1As1Bs2As2Cs2Cs1Ss2Ss1Bn-1An-1Cn-1Cn-2B1A1B0A0C1C2C0溢出M方式控制M=1減M=0加832.2.3加法運(yùn)算及其加速方法在計(jì)算機(jī)技術(shù)發(fā)展過程中,人們提出了各種各樣提高運(yùn)算速度的方法:1、從計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)角度,提出了并行處理、流水線等方式;2、運(yùn)算電路特別是用高速化的邏輯電路實(shí)現(xiàn)加法和移位功能;3、運(yùn)算方法和邏輯結(jié)構(gòu)的高速化。842.2.3加法運(yùn)算及其加速方法1.一級(jí)分組先行進(jìn)位法(1)相鄰4位加法器單元邏輯(第i-1,i-2,i-3,i-4位)

Ci=Gi+PiCi-1Ci-1=Gi-1+Pi-1Ci-2Ci-2=Gi-2+Pi-2Ci-3Ci-3=Gi-3+Pi-3Ci-4

展開:

Ci-3=Gi-3+Pi-3Ci-4Ci-2=Gi-2+Pi-2Gi-3+Pi-2Pi-3Ci-4Ci-1=Gi-1+Pi-1Gi-1+Pi-1Pi-2Gi-3+Pi-1Pi-2Pi-3Ci-4Ci=Gi+PiGi-1+PiPi-1Gi-2+PiPi-1Pi-2Gi-3+PiPi-1Pi-2Pi-3Ci-4Ci中前四項(xiàng)記為GI*,最后一項(xiàng)的前四個(gè)因子記為PI*

則,Ci=GI*+PI*Ci-485四位一組先行進(jìn)位全加器Ci+1Ci+2Ci+3Ci+4Pi+3Gi+3Pi+2Gi+2Gi++++CiPiPi+1Gi+1GiPi86一級(jí)分組先行進(jìn)位及組間行波進(jìn)位C15C14C13C1(C0)C0C2C3C4C6C5C7C8C10C11C9C12G5~0G7~4G11~8……G15~12P3~0P7~4P11~8P15~121

Σ第3組先行進(jìn)位加法器第2組先行進(jìn)位加法器第1組先行進(jìn)位加法器第0組先行進(jìn)位加法器………………872.2.3加法運(yùn)算及其加速方法2.二級(jí)分組先行進(jìn)位法仿一級(jí)分析法:

C3=G3*+P3*(1

Σ)C7=G7*+P7*G3*+P7*P3*(1

Σ)C11=G11*+P11*G7*+P11*P7*G3*+P11*P7*P3*(1

Σ)C15=G15*+P15*G11*+P15*P11*G7*+P15*P11*P7*G3*

+P15*P11*P7*P3*(1

Σ)882.2.3加法運(yùn)算及其加速方法圖3.6由4片4位先行加法器構(gòu)成的16位快速進(jìn)位加法器邏輯示意圖GI+3PI+3CCI+3C2C0C0C1C3PI+0GI+0CI+0PI+1GI+1CI+1G15G12G11G8G7G4G3G0P15P12P11P8P7P4P3P0中組(包括四小組)加法器…………C6C5C7C10C9PI+2CI+2GI+2C11C14C13C15一級(jí)先行進(jìn)位第3組一級(jí)先行進(jìn)位第2組一級(jí)先行進(jìn)位第1組一級(jí)先行進(jìn)位第0組892.3定點(diǎn)乘法運(yùn)算實(shí)現(xiàn)乘除法運(yùn)算的方案:

1、當(dāng)使用乘除運(yùn)算較多,速度要求高時(shí),用硬件直接實(shí)現(xiàn);

2、一般情況,配置乘除法選件;

3、對(duì)速度要求不高的機(jī)器,用軟件實(shí)現(xiàn)。90早期計(jì)算機(jī)中為了簡(jiǎn)化硬件結(jié)構(gòu),采用串行的1位乘法方案,即多次執(zhí)行“加法—移位”操作來實(shí)現(xiàn)。這種方法并不需要很多器件。然而串行方法畢竟太慢,自從大規(guī)模集成電路問世以來,出現(xiàn)了各種形式的流水式陣列乘法器,它們屬于并行乘法器。1.不帶符號(hào)的陣列乘法器設(shè)有兩個(gè)不帶符號(hào)的二進(jìn)制整數(shù):

A=am-1…a1a0B=bn-1…b1b0它們的數(shù)值分別為a和b,即

m-1

n-1

a

=∑ai2i

b

=∑bj2j

i=0

j=0

2.3.1原碼并行乘法運(yùn)算91被乘數(shù)A與乘數(shù)B相乘,產(chǎn)生m+n位乘積P:P=pm+n-1…p1p0乘積P

的數(shù)值為

原碼并行乘法運(yùn)算92a3b1a2b1a1b1a0b1a4b1a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a3b4a2b4a1b4a0b4a4b4a4b0a3b0a2b0a1b0a0b0p9p8p7p6p5p4p3p2p1p0

p9p8p7p6p5p4p3p2p1p0a4a3a2a1a0

xb4b3b2b1b0+

多位乘法必須先計(jì)算一位乘法,然后累加求和93乘法器一位乘法電路實(shí)現(xiàn)S=X*Y一個(gè)與門就可以實(shí)現(xiàn)一位乘法111001010000OutputYiXi94符號(hào)位直接異或即可得到乘積的符號(hào)僅僅需要考慮其數(shù)值部分的計(jì)算以定點(diǎn)小數(shù)為例進(jìn)行討論多位原碼乘法95相加數(shù)產(chǎn)生部件…………a4b4a1b0a0b0A=0.a4a3a2a1a0B=0.b4b3b2b1b0&&&

經(jīng)過一級(jí)門電路延遲,即可得到所有的相加數(shù)96p8p2p1p05位無符號(hào)數(shù)陣列乘法器電路a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a4b0a3b0a2b0a1b0a0b0a1b1a0b1a3b1a2b1a4b1p6p7p3p4p5p900a3b4a2b4a0b4a4b4a1b400097n

n位原碼乘法器框圖相加數(shù)產(chǎn)生部件A=af.

an

1an

2…a1a0B=bf.

bn

1bn

2…b1b0……n×n乘法陣列an

1bn

1…a1b0a0b0Pf=1.…P2n

1P2n

2P2n

3P1P0984*5個(gè)全加器,8個(gè)全加器延遲99原碼陣列乘法器時(shí)間延遲n(n-1)個(gè)FA延遲時(shí)間(n-1)FA+(n-1)Ti每一個(gè)FA包含6級(jí)門電路延遲T故總延遲為(n-1)*6T+(n-1)*2T+2T(相加數(shù)產(chǎn)生時(shí)間)

=(8n-6)T1003、帶符號(hào)的陣列乘法器原理:算前求補(bǔ)-乘法器-算后求補(bǔ)求補(bǔ)電路:101帶符號(hào)的陣列乘法器

102[例20]設(shè)x=+15,y=-13,用帶求補(bǔ)器的原碼陣列乘法器求出乘積x·y=?解:[x]原=01111,[y]原=11101,|x|=1111,|y|=1101

符號(hào)位運(yùn)算:0⊕1=1

乘積符號(hào)為1,算后求補(bǔ)器輸出11000011,[x×y]原=111000011

換算成二進(jìn)制數(shù)真值是x·y=(-11000011)2=(-195)10

1032.4.1原碼除法兩個(gè)原碼表示的數(shù)相除時(shí),商的符號(hào)由兩數(shù)的符號(hào)“異或”求得,即同號(hào)時(shí)為正,異號(hào)為負(fù)。商的數(shù)值可由兩數(shù)的絕對(duì)值相除求得。

2.4定點(diǎn)除法運(yùn)算1042.2.3原位除法手算:假設(shè)被除數(shù)X=0.1001,除數(shù)Y=0.1011,計(jì)算X/Y0.1101 商Q0.1011

/----------------------------------------------

0.10010 X(R0)-0.01011 2-1Y,除數(shù)右移一位,減

----------------------------------0.001110 R1-

0.001011 2-2Y,除數(shù)右移一位,減

----------------------------------0.0000110 R20.0001011 2-3Y,除數(shù)右移一位,不減

----------------------------------0.00001100 R3-

0.00001011 2-4Y,除數(shù)右移一位,減

----------------------------------0.00000001 R4

得商X/Y=0.1101,余數(shù)=R4=0.000000011052.2.3原碼除法筆算特點(diǎn):(1)每次都是由心算來比較余數(shù)和除數(shù)的大小,余數(shù)大時(shí),商1;余數(shù)小時(shí),商0。第一次比較時(shí),余數(shù)就是被除數(shù)。(2)每做一次減法,總是保持余數(shù)不動(dòng),而除數(shù)向右移一位。(3)商的符號(hào)單獨(dú)處理。為適應(yīng)機(jī)器運(yùn)算,需要進(jìn)行改進(jìn):(1)用補(bǔ)碼加代替直接減(兩個(gè)符號(hào)位)(2)除數(shù)右移改為余數(shù)左移。1062不恢復(fù)余數(shù)的除法人工除法時(shí),人可以比較被除數(shù)(余數(shù))和除

數(shù)的大小來確定商1(夠減)或商0(不夠減)機(jī)器除法時(shí),余數(shù)為正表示夠減,余數(shù)為負(fù)表示不夠減。不夠減時(shí)必須恢復(fù)原來余數(shù),才能繼續(xù)向下運(yùn)算。這種方法叫恢復(fù)余數(shù)法,控制比較復(fù)雜。不恢復(fù)余數(shù)法(加減交替法)

余數(shù)為正,商1,下次除數(shù)右移做減法;

余數(shù)為負(fù),商0,下次除數(shù)右移做加法。

控制簡(jiǎn)單,有規(guī)律。107加減交替法例3-11X=-0.1011,Y=0.1101,求[X/Y]原解:[X]原=1.1011,[Y]原=0.1101[Y]補(bǔ)=0.1101,[-Y]補(bǔ)=1.0011

商的符號(hào)Qs=10=1

所以[X/Y]原

=1.1101

余數(shù)=0.0111×2-4108原碼不恢復(fù)余數(shù)除法運(yùn)算過程+)1.00111.11100.1011+Y余數(shù)與商左移一位余數(shù)與商左移一位初始狀態(tài)+[-Y]補(bǔ)+[-|Y|]補(bǔ)余數(shù)為負(fù),商“0”余數(shù)為正,商“1”操作說明商Q上商被除數(shù)(余數(shù))0.00000.00000.00010.00100.0000+)0.11011.1100+)1.00110.10011.00100.00110.0110+)1.00110.01010.1010余數(shù)為正,商“1”0.01110.11010.01100.1100+)0.11011.11011.1010余數(shù)與商左移一位+[-|Y|]補(bǔ)余數(shù)為正,商“1”+Y余數(shù)與商左移一位余數(shù)為負(fù),商“0”1092.2.4補(bǔ)碼一位除法-補(bǔ)碼加減交替除法補(bǔ)碼除法中,符號(hào)數(shù)和數(shù)值位參加運(yùn)算,商的符號(hào)與數(shù)值位由統(tǒng)一的算法求得補(bǔ)碼加減交替法的算法規(guī)則如下:(1)被除數(shù)與除數(shù)同號(hào),被除數(shù)減去除數(shù),得余數(shù);被除數(shù)與除數(shù)異號(hào),被除數(shù)加上除數(shù),得余數(shù)。(2)余數(shù)與除數(shù)同號(hào),商上1,余數(shù)左移一位,做余數(shù)減除數(shù)運(yùn)算,得新余數(shù);余數(shù)與除數(shù)異號(hào),商上0,余數(shù)左移一位,做余數(shù)加除數(shù)運(yùn)算,得新余數(shù)。(3)重復(fù)步驟(2),包括符號(hào)位在內(nèi),共做n+1步,最后一步不左移。在補(bǔ)碼除法運(yùn)算中,商符在求商過程的第一步自動(dòng)生成。1102.4.2并行除法器1.可控加法/減法(CAS)單元

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

111當(dāng)P=1時(shí),則得求差公式:

Si=Ai⊕Bi⊕Ci

其中Bi=Bi⊕1

Ci+1=AiBi+BiCi+AiCi當(dāng)P=0時(shí),則得求FA全加器公式:

Si=Ai⊕Bi⊕Ci

Ci+1=AiBi+BiCi+AiCi1.可控加法/減法(CAS)單元

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

112

每一行所執(zhí)行的操作究竟是加法還是減法,取決于前一行輸出的符號(hào)與被除數(shù)的符號(hào)是否一致。當(dāng)出現(xiàn)不夠減時(shí),部分余數(shù)相對(duì)于被除數(shù)來說要改變符號(hào)。這時(shí)應(yīng)該產(chǎn)生一個(gè)商位“0”,除數(shù)首先沿對(duì)角線右移,然后加到下一行的部分余數(shù)上。當(dāng)部分余數(shù)不改變它的符號(hào)時(shí),即產(chǎn)生商位“1”,下一行的操作應(yīng)該是減法。2.不恢復(fù)余數(shù)的陣列除法器(加減交替法)1131

P=1時(shí)減y即加[-y]補(bǔ)也就是加上-y+1

yi右移作為一次操作數(shù)114若n為尾數(shù)數(shù)位,,一個(gè)(n+1)位除(n+1)位的加減交替除法陣列由(n+1)2個(gè)CAS單元組成,其中兩個(gè)操作數(shù)(被除數(shù)與除數(shù))都是正的。單元之間的互連是用n=3的陣列來表示的。這里被除數(shù)x是一個(gè)6位的小數(shù)(雙倍長(zhǎng)度值):x=0.x1x2x3x4x5x6

它是由頂部一行和最右邊的對(duì)角線上的垂直輸入線來提供的。除數(shù)y是一個(gè)3位的小數(shù):y=0.y1y2y3它沿對(duì)角線方向進(jìn)入這個(gè)陣列。這是因?yàn)?在除法中所需要的部分余數(shù)的左移,可以用下列等效的操作來代替:即讓余數(shù)保持固定,而將除數(shù)沿對(duì)角線右移。商q是一個(gè)3位的小數(shù):q=0.q1q2q3它在陣列的左邊產(chǎn)生。余數(shù)r是一個(gè)6位的小數(shù):r=0.00r3r4r5r6115[例20]x=0.101001,y=0.111,求x÷y。[解:]

[-y]補(bǔ)=1.001

被除數(shù)x

0.101001

減y

1.001

余數(shù)為負(fù)1.110001<0

q0=0

余數(shù)左移1.10001

加y

0.111

余數(shù)為正0.01101>0

q1=1

余數(shù)左移0.1101

減y

1.001

余數(shù)為負(fù)1.1111<0

q2=0

余數(shù)左移1.111

加y

0.111

余數(shù)為正0.110>0

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

余數(shù)r=(0.00r3r4r5r6)=0.0001101162.5定點(diǎn)運(yùn)算器的組成2.5.1邏輯運(yùn)算

計(jì)算機(jī)中除了基本算術(shù)運(yùn)算外,還可進(jìn)行邏輯運(yùn)算。計(jì)算機(jī)中的邏輯運(yùn)算,主要是指邏輯非、邏輯加、邏輯乘、邏輯異四種基本運(yùn)算。1.邏輯非運(yùn)算邏輯非也稱求反。對(duì)某數(shù)進(jìn)行邏輯非運(yùn)算,就是按位求它的反,常用變量上方加一橫來表示。設(shè)一個(gè)數(shù)x表示成:x=x0x1x2…xn對(duì)x求邏輯非,則有x=z=z0z1z2…zn

zi=xi

(i=0,1,2,…n)117[例21]x1=01001011,x2=11110000,求x1

,x2[解:]x1=10110100x2=000011112.邏輯加運(yùn)算

對(duì)兩個(gè)數(shù)進(jìn)行邏輯加,就是按位求它們的“或”,所以邏輯加又稱邏輯或,常用記號(hào)“V”或“+”來表示。設(shè)有兩數(shù),它們表示為x=x0x1…xny=y0y1…yn

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論