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

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)組成與結(jié)構(gòu)王愛英(第四版)齊魯師范學(xué)院梁晨第三章運(yùn)算方法&運(yùn)算部件3.1數(shù)據(jù)的表示方法3.2帶符號(hào)二進(jìn)制數(shù)據(jù)表示方法及加減運(yùn)算3.3二進(jìn)制乘法運(yùn)算3.4二進(jìn)制除法運(yùn)算3.5浮點(diǎn)數(shù)的運(yùn)算方法3.6運(yùn)算部件3.7數(shù)據(jù)校驗(yàn)碼本章要點(diǎn)計(jì)算機(jī)的基本功能是對(duì)信息進(jìn)行加工處理,在計(jì)算機(jī)內(nèi)部,各種信息都必須采用數(shù)字化編碼,即用最簡(jiǎn)單的二進(jìn)制數(shù)碼來表示。本章主要介紹常用的進(jìn)位計(jì)數(shù)制、二進(jìn)制運(yùn)算及其實(shí)現(xiàn)、無符號(hào)數(shù)和帶符號(hào)數(shù)的表示方法、數(shù)的定點(diǎn)與浮點(diǎn)表示方法、字符和漢字的編碼方法及數(shù)據(jù)校驗(yàn)碼等。熟悉和掌握本章的內(nèi)容是學(xué)習(xí)計(jì)算機(jī)原理的最基本要求。3.1數(shù)據(jù)的表示方法1.數(shù)制的概念進(jìn)位計(jì)數(shù)制,簡(jiǎn)稱數(shù)制,是人們利用符號(hào)來計(jì)數(shù)的方法。二進(jìn)制、十進(jìn)制、八進(jìn)制和十六進(jìn)制是學(xué)習(xí)計(jì)算機(jī)知識(shí)應(yīng)該掌握的數(shù)制。R進(jìn)制的數(shù),都有以下三個(gè)要點(diǎn):(1)基數(shù)為R,即使用R個(gè)數(shù)碼。(2)進(jìn)位規(guī)則為逢R進(jìn)一(3)第i個(gè)數(shù)位上的數(shù)碼所具有的位權(quán)為Ri。

數(shù)值可用下面的通式表示:N=an-1Rn-1+an-2Rn-2+∧+a1R1+a0R0+∧+amR-m

數(shù)制轉(zhuǎn)換1.R進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)轉(zhuǎn)換方法:按權(quán)展開法,即把各數(shù)位乘權(quán)Ri后再相加。例1將二進(jìn)制數(shù)10111.1轉(zhuǎn)換成十進(jìn)制數(shù)。(10111.1)2=1×24+0×23+1×22+1×21+1×20+1×2-1=16+0+4+2+1+0.5=23.5

例2將十六進(jìn)制數(shù)35CH轉(zhuǎn)換成十進(jìn)制數(shù)(35C)16=3×162+5×161+12×160=768+80+12=860例3將八進(jìn)制數(shù)127.1轉(zhuǎn)換成十進(jìn)制數(shù)(127.1)8=1×82+2×81+7×80+1×8-1=87.125不同數(shù)制間的數(shù)據(jù)轉(zhuǎn)換十進(jìn)制數(shù)轉(zhuǎn)換成R進(jìn)制數(shù)整數(shù)轉(zhuǎn)換方法:除基數(shù)(R)取余。小數(shù)轉(zhuǎn)換方法:乘基數(shù)(R)取整。例4將十進(jìn)制數(shù)45.25轉(zhuǎn)換成二進(jìn)制數(shù)整數(shù)部分小數(shù)部分45÷2=22余1低位0.25×2=0.5取整數(shù)0高位22÷2=11余011÷2=5余10.5×2=1.0取整數(shù)1低位

5÷2=2余12÷2=1余01÷2=0余1高位所以,45.25=(101101.01)2

或(101101.01)B二進(jìn)制與十六進(jìn)制數(shù)相互轉(zhuǎn)換2→16轉(zhuǎn)換方法:四位一組。即從最低位開始,每四位分成一組(不足四位時(shí)補(bǔ)0),依次轉(zhuǎn)換。例6將二進(jìn)制數(shù)10011010111轉(zhuǎn)換成十六進(jìn)制數(shù)。

010011010111最高位補(bǔ)0(粗體字)(4)(D)(7)所以,(10011010111)2=(4D7)16或(4D7)H16→2轉(zhuǎn)換方法:一位變四位。例7將十六進(jìn)制數(shù)(4AC)H轉(zhuǎn)換成二進(jìn)制數(shù)

4AC

(0100)(1010)(1100)所以,(4AC)H=(010010101100)B

十進(jìn)制數(shù)的編碼與運(yùn)算BCD碼用4位二進(jìn)制數(shù)表示每個(gè)十進(jìn)制數(shù),數(shù)位內(nèi)滿足二進(jìn)制規(guī)則,數(shù)位間,滿足十進(jìn)制規(guī)則,這種編碼稱為BCD碼

BCD碼算術(shù)運(yùn)算,要對(duì)結(jié)果進(jìn)行修正。

修正規(guī)則:兩數(shù)每數(shù)位相加之和小于等于1001,不需修正,若大于1001,要加6(0110)修正,同時(shí)向高位進(jìn)位無權(quán)碼余3碼余3碼是在BCD碼的基礎(chǔ)上,每個(gè)編碼加上0011形成的,如2的余3碼是0101,8的余3碼是1011

例11:(28)10+(55)1001011011+1000100011100011-0011+001110110110帶符號(hào)二進(jìn)制數(shù)據(jù)的運(yùn)算機(jī)器數(shù)機(jī)器數(shù)與真值的概念在計(jì)算機(jī)中一個(gè)數(shù)的數(shù)值部分和符號(hào)都要用0、1編碼。通常,用數(shù)的最高位(MSB—MostSignificantBit)表示數(shù)的正負(fù)MSB=0,表示正數(shù),如+1011表示為01011;MSB=1,表示負(fù)數(shù),如-1011表示為11011;我們把一個(gè)數(shù)在機(jī)器內(nèi)的二進(jìn)制表示形式稱為機(jī)器數(shù),而把這個(gè)數(shù)本身稱為該機(jī)器數(shù)的真值,真值是用“+”,“-”號(hào)加絕對(duì)值來表示數(shù)值的大小。如:機(jī)器數(shù):01011和11011對(duì)應(yīng)的真值:+1011和-1011。2.無符號(hào)數(shù)和符號(hào)數(shù)無符號(hào)數(shù):用整個(gè)機(jī)器字長(zhǎng)的全部二進(jìn)制位均表示數(shù)值位,無符號(hào)位。符號(hào)數(shù):它的最高位被用來表示該數(shù)的符號(hào)位,不表示數(shù)值位。為解決機(jī)器內(nèi)負(fù)數(shù)的符號(hào)位能與數(shù)值位一起參加運(yùn)算的問題,引入了原碼、反碼和補(bǔ)碼的概念。原碼表示法原碼表示法是一種最簡(jiǎn)單的機(jī)器數(shù)表示法,其最高位為符號(hào)位,符號(hào)位為0時(shí)表示該數(shù)為正,符號(hào)位為1時(shí)表示該數(shù)為負(fù),數(shù)值部分與真值相同。若真值為純小數(shù),其原碼形式為XS.X1X2…Xn,其中XS表示符號(hào)位。原碼的定義為:

[X]原=例3.11:X=0.0110[X]原=X=0.0110X=-0.0110,[X]原=1-X=1-(-0.0110)=1+0.0110=1.0110

X0≤X<11-X=1+∣X∣-1<X≤0若真值為純整數(shù),其原碼形式為XSX1X2…Xn,其中XS表示符號(hào)位。原碼的定義為:[X]原=例3.12:X=1101[X]原=X=01101X=-1101,[X]原=2n-X=24-(-1101)=10000+1101=11101原碼表示中,真值0有兩種不同的表示形式:

[+0]原=00000,[-0]原=10000原碼的優(yōu)點(diǎn)是直觀易懂,機(jī)器數(shù)和真值間的轉(zhuǎn)換很容易,用原碼實(shí)現(xiàn)乘、除運(yùn)算的規(guī)則簡(jiǎn)單。缺點(diǎn)是加、減運(yùn)算規(guī)則較復(fù)雜。X0≤X<2n2n-X=2n+∣X∣,-2n<X≤0反碼表示法(1)定義引出反碼是為了求負(fù)數(shù)的補(bǔ)碼。反碼是對(duì)一個(gè)數(shù)的各位求反。對(duì)正數(shù)來說,其反碼和原碼的形式是相同的,而負(fù)數(shù)的反碼是符號(hào)位為1,數(shù)值部分等于其各位的絕對(duì)值求反。如:X[X]原

[X]反+11010110101101

-11011110110010在反碼表示中,真值0也有兩種不同的表示形式:

[+0]反=00000[-0]反=11111反碼運(yùn)算反碼運(yùn)算要注意以下三個(gè)問題:●符號(hào)位要與數(shù)值位部分一樣參加運(yùn)算?!穹?hào)位運(yùn)算后如有進(jìn)位產(chǎn)生,則把這個(gè)進(jìn)位送回到最低位去相加,這叫循環(huán)進(jìn)位。●反碼運(yùn)算具有性質(zhì):[X]反+[Y]反=[X+Y]反例13.已知X=-0.1101,Y=-0.0001,求X+Y解:[X]反=1.0010(符號(hào)位取1,數(shù)值位逐位變反)+

[Y]反=1.1110[X+Y]反=11.0000

+循環(huán)進(jìn)位1[X+Y]反=1.0001

所以,X+Y=-0.1110練習(xí)課本P67

例3.20,例3.21,例3.22,補(bǔ)碼表示法補(bǔ)碼的符號(hào)位表示方法與原碼相同(即正0,負(fù)1),其數(shù)值部分的表示與數(shù)的正負(fù)有關(guān):正數(shù):數(shù)值部分與真值形式相同;x=+11010[X]補(bǔ)=011010負(fù)數(shù):將真值的數(shù)值部分按位取反,且在最低位加1。

x=-11010[X]補(bǔ)=1,00110若真值為純小數(shù),其原碼形式為XS.X1X2…Xn,其中XS表示符號(hào)位。小數(shù)的補(bǔ)碼定義為[X]補(bǔ)=例3.16:X=0.0110[X]補(bǔ)=X=0.0110X=-0.0110[X]補(bǔ)=2+X=2+(-0.0110)=10-0.0110=1.1010X0≤X<12+X=2-∣X∣-1<X≤0采用補(bǔ)碼運(yùn)算要注意以下三個(gè)問題:●符號(hào)位要與數(shù)值位部分一樣參加運(yùn)算。●符號(hào)運(yùn)算后如有進(jìn)位產(chǎn)生,則把這個(gè)進(jìn)位舍去不要?!裱a(bǔ)碼運(yùn)算具有性質(zhì):[X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)已知X=0.1101,Y=-0.0001,求[X+Y]補(bǔ)解:[X]補(bǔ)=0.1101

+[Y]補(bǔ)=1.1111[X+Y]補(bǔ)=10.1100↓

舍去不要對(duì)于減法運(yùn)算有[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)機(jī)器數(shù)表示形式的變換[X]補(bǔ)[X]原[X]反X真值符號(hào)位+/-變成0/1數(shù)值位不變符號(hào)位不變,數(shù)值位不變(XS=0)

變反,末位+1(XS=1)符號(hào)位不變,數(shù)值位不變(XS=0)

數(shù)值位變反(XS=1)圖3-1三種機(jī)器數(shù)及真值間的轉(zhuǎn)換關(guān)系(1)比較●對(duì)正數(shù)而言,上述三種碼都等于真值本身?!褡罡呶欢急硎痉?hào)位,補(bǔ)碼和反碼的符號(hào)位可與數(shù)值位一樣看待,和數(shù)值位一起參加運(yùn)算;但原碼的符號(hào)位必須與數(shù)值位分開處理。●原碼和反碼的真值0各有兩種不同的表示方式,而補(bǔ)碼的真值0表示是唯一的。(2)轉(zhuǎn)換三種機(jī)器數(shù)及真值的轉(zhuǎn)換關(guān)系如上圖所示。從圖中可見,真值X與補(bǔ)碼或反碼間的轉(zhuǎn)換是通過原碼實(shí)現(xiàn)的,當(dāng)然,對(duì)于已熟練掌握轉(zhuǎn)換方法的讀者也可直接完成真值X與補(bǔ)碼或反碼間的轉(zhuǎn)換。

加減法運(yùn)算的溢出處理運(yùn)算結(jié)果超出機(jī)器數(shù)所能表示的范圍稱為溢出溢出的判斷(1)當(dāng)符號(hào)相同的兩數(shù)相加時(shí),如果結(jié)果的符號(hào)與加數(shù)(或被加數(shù))不相同,則為溢出。(2)當(dāng)任意符號(hào)兩數(shù)相加時(shí),如果數(shù)值最高位進(jìn)位與符號(hào)位進(jìn)位不相同,則溢出(3)采用雙符號(hào)位的運(yùn)算數(shù),正數(shù)的雙符號(hào)位是00,負(fù)數(shù)的雙符號(hào)位是11。符號(hào)位正常參加運(yùn)算,若雙符號(hào)位的兩位不相同,則結(jié)果溢出。定點(diǎn)數(shù)與浮點(diǎn)數(shù)定點(diǎn)數(shù)表示法定點(diǎn)數(shù)表示法通常把小數(shù)點(diǎn)固定在數(shù)值部分的最高位之前,或把小數(shù)點(diǎn)固定在數(shù)值部分的最后。前者用來表示純小數(shù),后者用于表示整數(shù)。如圖3-3所示。在計(jì)算機(jī)中,圖示的小數(shù)點(diǎn)“.”實(shí)際上是不表示出來的,是事先約定好固定在那里的。對(duì)一臺(tái)計(jì)算機(jī)來說,一旦確定了一種小數(shù)點(diǎn)的位置,整個(gè)系統(tǒng)就不再改變。只能處理定點(diǎn)數(shù)的計(jì)算機(jī)稱為定點(diǎn)計(jì)算機(jī)。在這種計(jì)算機(jī)中機(jī)器指令訪問的所有操作數(shù)都是定點(diǎn)數(shù)。符號(hào)數(shù)值部分符號(hào)數(shù)值部分純小數(shù)表示法小數(shù)點(diǎn)整數(shù)表示法小數(shù)點(diǎn)圖3-3定點(diǎn)數(shù)表示法浮點(diǎn)數(shù)表示法小數(shù)點(diǎn)的位置可按需浮動(dòng),這就是浮點(diǎn)數(shù)。例如:N=rE·M式中,r為浮點(diǎn)數(shù)階碼的底,與尾數(shù)的基數(shù)相同,通常r=2。E和M都是帶符號(hào)的定點(diǎn)數(shù),E叫數(shù)N的階碼(Exponent),M為數(shù)N的有效數(shù)字,稱為尾數(shù)(Mantissa)。在大多數(shù)計(jì)算機(jī)中,尾數(shù)為純小數(shù),常用規(guī)格化形式表示。計(jì)算機(jī)中,通常用約定的4部分來表示一個(gè)浮點(diǎn)數(shù):其中,Ef

、S分別稱為階碼E和尾數(shù)M的符號(hào)位。按照IEEE754標(biāo)準(zhǔn),常用的浮點(diǎn)格式如圖3-4所示。msEm尾符

階碼部分尾數(shù)數(shù)值位尾數(shù)部分,用原碼表示圖3-4IEEE754標(biāo)準(zhǔn)的浮點(diǎn)格式尾數(shù)的規(guī)格化對(duì)非規(guī)格化浮點(diǎn)數(shù),要通過將尾數(shù)左移和右移,并修改階碼值使之滿足規(guī)格化要求例:浮點(diǎn)數(shù)尾數(shù)為0.0011,階碼為0100,規(guī)格化時(shí)將尾數(shù)左移2位,成為0.1100,階碼減去010,修改成0010,浮點(diǎn)數(shù)保持不變。浮點(diǎn)數(shù)尾數(shù)為0,或階碼的值不能在機(jī)器中表示的最小值還小,計(jì)算機(jī)把該浮點(diǎn)數(shù)看成零值,稱為機(jī)器零。浮點(diǎn)數(shù)兩種格式單精度浮點(diǎn)數(shù)(32位)階碼8位,尾數(shù)24位(含一位符號(hào)位)雙精度浮點(diǎn)數(shù)(64位)階碼11位,尾數(shù)53位(含一位符號(hào)位)多數(shù)計(jì)算機(jī)中,浮點(diǎn)數(shù)的尾數(shù)用補(bǔ)碼表示,階碼用補(bǔ)碼或移碼表示數(shù)值范圍與精度標(biāo)準(zhǔn)的32位單精度數(shù),其數(shù)值的表示范圍為-2127~(1-2-23)2127定點(diǎn)整數(shù)(補(bǔ)碼)的范圍-231~+231-1二進(jìn)制乘法運(yùn)算定點(diǎn)數(shù)一位乘法

1.定點(diǎn)原碼一位乘法

[x.y]原=[x]原*[y]原基本思想:每次用乘數(shù)的一位去乘被乘數(shù)。

1.算法分析例.0.1101×1.1011乘積P=X×Y符號(hào)SP=SXSYX原Y原(1)手算0.1101×0.101111011101000011010.10001111上符號(hào):1.10001111部分積問題:1)加數(shù)多(由乘數(shù)位數(shù)決定)。

2)加數(shù)的位數(shù)多(與被乘數(shù)、乘數(shù)位數(shù)有關(guān))。改進(jìn):將一次相加改為分步累加。(2)分步乘法每次將一位乘數(shù)所對(duì)應(yīng)的部分積與原部分積的累加和相加,并移位。設(shè)置寄存器:

A:存放部分積累加和、乘積高位

B:存放被乘數(shù)

C:存放乘數(shù)、乘積低位

設(shè)置初值:

A=00.0000B=X=00.1101C=Y=.1011

步數(shù)條件操作AC00.0000.1011

1)Cn=1+BCn+00.110100.110100.01101.1012)Cn=1+B+00.110101.001100.100111.103)Cn=0+0+00.000000.100100.0100111.14)Cn=1+B+00.110101.000100.10001111X原×Y原=0.10001111乘積的符號(hào)位=X0Y0乘法開始時(shí),A寄存器被清零,作為初始部分積,被乘數(shù)放在B寄存器中,乘數(shù)放在C寄存器中,部分積和被乘數(shù)相加通過給出A→ALU和B→ALU命令,在ALU中完成,ALU的輸出經(jīng)過移位電路向右移一位送入A寄存器,C寄存器使用移位寄存器實(shí)現(xiàn),其低位用作B→ALU的控制命令。加法器最低一位的值,右移時(shí)將移入C寄存器的最高位,使乘積之積的最低位保存進(jìn)C寄存器中。

3.運(yùn)算規(guī)則(1)操作數(shù)、結(jié)果用原碼表示;(2)絕對(duì)值運(yùn)算,符號(hào)單獨(dú)處理;(3)被乘數(shù)(B)、累加和(A)取雙符號(hào)位,乘數(shù)只取尾數(shù);(4)乘數(shù)末位(Cn)為判斷位,其狀態(tài)決定下步操作;(5)作n(乘數(shù)有效位數(shù))次循環(huán)(累加、右移)定點(diǎn)補(bǔ)碼一位乘法1.算法分析

X補(bǔ)

=X0.X1X2……Xn(1)Y為正:Y補(bǔ)

=0.Y1Y2……Yn

(XY)補(bǔ)

=X補(bǔ)(0.Y1Y2……Yn)(2)Y為負(fù):Y補(bǔ)

=1.Y1Y2……Yn

(XY)補(bǔ)

=X補(bǔ)(0.Y1Y2……Yn)+[-X]補(bǔ)(3)Y符號(hào)任意:

(XY)補(bǔ)

=X補(bǔ)(0.Y1Y2……Yn)-[X]補(bǔ)Y0符號(hào)位比較法算法

比較法:用乘數(shù)的相鄰兩位比較結(jié)果決定+X補(bǔ)、-X補(bǔ)或+0。例3.35設(shè)X=—0.1101,Y=0.1011

求(XY)補(bǔ)

比較法算法YnYn+1Yn+1-Yn操作(A補(bǔ)為部分積累加和)00011011

1/2A補(bǔ)

1/2(A補(bǔ)+X補(bǔ))1/2(A補(bǔ)-X補(bǔ))1/2A補(bǔ)01-103.運(yùn)算實(shí)例X=-0.1101,Y=-0.1011,求(XY)補(bǔ)。初值:A=00.0000,B=X補(bǔ)=11.0011,-B=(-X)補(bǔ)=00.1101,C=Y補(bǔ)=1.0101步數(shù)條件操作AC00.00001.0101

1)10-BCn+00.110100.110100.011011.01012)01+B+11.001111.100111.1100111.0103)10-B+00.110100.100100.01001111.014)01+B+11.001111.011111.101111111.00Cn+1CnCn+15)10-B+00.1101(XY)補(bǔ)

=0.100011115)10-B+00.110100.10001111修正(1)A、B取雙符號(hào)位,符號(hào)參加運(yùn)算;(2)C取單符號(hào)位,符號(hào)參加移位,以決定最后是否修正;(3)C末位設(shè)置附加位Cn+1,初值為0,CnCn+1組成判斷位,決定運(yùn)算操作;(4)做n+1步操作,其中n步循環(huán),最后一步不移位。

4.運(yùn)算規(guī)則定點(diǎn)數(shù)二位乘法按乘數(shù)每?jī)晌坏娜≈登闆r,一次求出對(duì)應(yīng)兩位的部分積,這樣做可以提高運(yùn)算速度原碼兩位乘法乘數(shù)&被乘數(shù)都用原碼表示。兩位乘數(shù)共有4種狀態(tài),對(duì)應(yīng)這4種狀態(tài)可得下表。上表中2倍被乘數(shù)可通過將被乘數(shù)左移一位實(shí)現(xiàn),而3倍被乘數(shù)的獲得可以分兩步來完成,利用3=4-1,第一步先完成減1倍被乘數(shù)的操作,第二步完成加4倍被乘數(shù)的操作。而加4倍被乘數(shù)的操作實(shí)際上是由比“11”高的兩位乘數(shù)代替完成的,可以看作是在高兩位乘數(shù)上加“1”。這個(gè)“1”可暫時(shí)存在Cj觸發(fā)器中。機(jī)器完成置“1”Cj即意味著對(duì)高兩位乘數(shù)加1,也即要求高兩位乘數(shù)代替本兩位乘數(shù)“11”來完成加4倍被乘數(shù)的操作。由此可得原碼兩位乘的運(yùn)算規(guī)則如下表所示。當(dāng)乘數(shù)位為偶數(shù)時(shí),需作n/2次移位,最多作n/2+1次加法。當(dāng)乘數(shù)位為奇數(shù)時(shí),乘數(shù)高位前可只增加一個(gè)“0”,此時(shí)需作n/2+1次加法,n/2+1次移位(最后一步移一位)。

乘積的符號(hào)為X0Y0例題3.363.4二進(jìn)制除法運(yùn)算除法加減和移位操作。例.手工計(jì)算0.10110÷0.111110.1011011010.01111110.11111000111111101010111111101100.00000.0.商:0.10110余數(shù):0.10110×25實(shí)現(xiàn)除法的關(guān)鍵:比較余數(shù)和除數(shù)的絕對(duì)值大小,以決定上商。兩原碼數(shù)相除,商的符號(hào)為兩數(shù)符號(hào)的異或值,數(shù)值為兩數(shù)絕對(duì)值相除后的結(jié)果。兩種方法:

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

P92例子原碼恢復(fù)余數(shù)法1.算法

比較余數(shù)和除數(shù)的大小可用減法試探。余數(shù)×2-除數(shù)=新余數(shù)為正:夠減,商1。為負(fù):不夠減,商0,恢復(fù)原余數(shù)。新余數(shù)2.實(shí)例已知X=-0.10110,Y=0.11111,求X/Y,給出商Q和余數(shù)R設(shè)置寄存器:

A:被除數(shù)、余數(shù),B:除數(shù),C:商A=X=00.10110-B=11.00001B=Y=00.11111C=Q=0.00000寄存器初值:步數(shù)條件操作AC00.101100.00000

1)正-B01.01100+11.0000100.011010.00002)負(fù)-B00.11010+11.0000111.110110.00013)恢復(fù)余數(shù)+B+00.1111100.1101001.101000.00104)正-B+11.0000100.10101CnrQ1

Q2

Q3

r02r0r12r1r2’r22r2r3101步數(shù)條件操作AC00.101010.00101

5)正-B01.01010+11.0000100.010110.01016)負(fù)-B00.10110+11.0000111.101110.10117)恢復(fù)余數(shù)+B+00.1111100.10110Q=-0.10110CnQ4

Q5

Q3

r32r3r42r4r5’r5R=0.10110×2-5X/Y=-0.10110+-0.10110×2-50.11111103.說明(1)A和B取雙符號(hào)位,分別裝X和Y的絕對(duì)值。(2)最后一步余數(shù)乘以2-n為結(jié)果的余數(shù),其符號(hào)與被除數(shù)同號(hào)。

原碼不恢復(fù)余數(shù)法(加減交替法)1.算法分析第二步:2r1-B=r2’<0第三步:r2’+B=r2(恢復(fù)余數(shù))第四步:2r2-B=r32r2-B=2(r2’+B)-B=2r2’+B=r3第二步:2r1-B=r2<0第三步:2r2+B=r3(不恢復(fù)余數(shù))2.算法

ri+1=2ri+(1-2Qi)Yri為正,則Qi為1,第i+1步作2ri-Y;ri為負(fù),則Qi為0,第i+1步作2ri+Y。3.實(shí)例X=0.10110,Y=0.11111,求X/Y,給出商Q和余數(shù)R。初值:A=X=00.10110B=Y=00.11111C=Q=0.00000-B=11.00001步數(shù)條件操作AC00.101100.00000

1)為正-B01.01100+11.0000100.011010.00002)為負(fù)-B00.11010+11.0000111.110110.00013)+B+00.1111111.101100.0010為正00.10101CnrQ1

Q2

Q3

r02r0r12r1r22r2r34)為正-B01.01010+11.0000100.010110.0101Q4

2r3r41011步數(shù)條件操作AC00.010110.01011

6)為負(fù)恢復(fù)余數(shù)+B+00.1111100.10110Q=0.10110CnQ4

r45)為正-B00.10110+11.0000111.101110.1011Q5

2r4r5’r5R=0.10110×2-5X/Y=0.10110+0.10110×2-50.111110

4.運(yùn)算規(guī)則(1)A、B取雙符號(hào)位,X、Y取絕對(duì)值運(yùn)算,要求|X|<|Y|。(2)根據(jù)余數(shù)的正負(fù)決定商值及下一步操作。(3)求n位商,作n步操作;若第n步余數(shù)為負(fù),則增加第n+1步恢復(fù)余數(shù),不移位。補(bǔ)碼加減交替法如何上商?

如何確定商符?

如何判斷是否夠減?已知[X]補(bǔ)與[Y]補(bǔ)求[X]補(bǔ)/[Y]補(bǔ)在補(bǔ)碼除法中需要解決:1.判夠減(1)同號(hào)相除4774-4-7-7-41-47-744-77-4010-43-7-3-(-4)-3-(-7)3夠減不夠減夠減不夠減夠減:r與X、Y同號(hào);不夠減:r與X、Y異號(hào)。(2)異號(hào)相除1010+(-4)3+(-7)-3+4-3+73夠減夠減不夠減不夠減夠減:r與X同號(hào),與Y異號(hào);不夠減:r與X異號(hào),與Y同號(hào)。(3)判斷規(guī)則同號(hào):作X補(bǔ)-Y補(bǔ)X補(bǔ)Y補(bǔ)夠減:r補(bǔ)與Y補(bǔ)同號(hào)不夠減:r補(bǔ)與Y補(bǔ)異號(hào)異號(hào):作X補(bǔ)+Y補(bǔ)夠減:r補(bǔ)與Y補(bǔ)異號(hào)不夠減:r補(bǔ)與Y補(bǔ)同號(hào)2.求商值X補(bǔ)Y補(bǔ)同號(hào):商為正異號(hào):商為負(fù)夠減商1不夠減商0夠減商0不夠減商1(r、Y同號(hào))(r、Y異號(hào))(r、Y異號(hào))(r、Y同號(hào))夠減商1不夠減商0夠減商0不夠減商1(r、Y同號(hào))(r、Y異號(hào))(r、Y異號(hào))(r、Y同號(hào))(r、Y同號(hào))(r、Y異號(hào))(r、Y異號(hào))(r、Y同號(hào))夠減商1不夠減商0夠減商0不夠減商1上商規(guī)則:Qi=Sri⊕SY余數(shù)與除數(shù)同號(hào)商1,異號(hào)商0。3.算法

(ri+1)補(bǔ)=2ri補(bǔ)+(1-2Qi補(bǔ))Y補(bǔ)ri補(bǔ)與Y補(bǔ)同號(hào),則Qi補(bǔ)為1,第i+1步作2ri補(bǔ)-Y補(bǔ);ri補(bǔ)與Y補(bǔ)異號(hào),則Qi補(bǔ)為0,第i+1步作2ri補(bǔ)+Y補(bǔ)。4.求商符令X補(bǔ)

=r0補(bǔ)r0補(bǔ)與Y補(bǔ)同號(hào):Q0補(bǔ)=1異號(hào):Q0補(bǔ)=0與實(shí)際商符相反商符與原碼加減交替法比較真商=假商+1.000…01Q0.Q1Q2……Qn-1(1)對(duì)第n位商(末位商)采取恒置1(2)將商符變反n位5.商的校正上述上商操作只作到小數(shù)點(diǎn)后第n-1位,差一位商,并且商的符號(hào)與實(shí)際相反。即假商校正:6.實(shí)例X=0.10110,Y=-0.11111,求X/Y,給出商Q和余數(shù)R。初值:A=X補(bǔ)=00.10110B=Y補(bǔ)=11.00001C=Q補(bǔ)=0.00000-B=00.11111步數(shù)條件操作AC00.101100.0000

1)異號(hào)+B01.01100+11.0000100.011010.00002)同號(hào)+B00.11010+11.0000111.110110.0001Cn-1r與YQ1

Q2

r02r0r12r1r2求商符Q0

異號(hào)5)+B+11.0000100.1011011.10111步數(shù)條件操作AC11.110110.0001

3)異號(hào)-B11.10110+00.1111100.101010.00104)異號(hào)+B01.01010+11.0000100.010110.0100Cn-1r與YQ3

Q2

r22r2r32r3r42r4r5假商=0.0100Q4

真商=0.0100+1.00001=1.01001Q=-0.10111R=-0.01001×2X/Y=-0.10111+-0.01001×2-5-0.11111-5

7.運(yùn)算規(guī)則(1)A、B取雙符號(hào)位,符號(hào)參加運(yùn)算,并且

X<Y。(2)根據(jù)余數(shù)與除數(shù)的符號(hào)決定商值及下一步操作。(3)作n步操作,求出1位商符和n-1位商值。(4)對(duì)商校正(商符變反,第n位商恒置1)3.5浮點(diǎn)數(shù)的運(yùn)算方法1.“對(duì)階”操作:使兩數(shù)階碼相等(小數(shù)點(diǎn)實(shí)際位置對(duì)齊,尾數(shù)對(duì)應(yīng)權(quán)值相同)

比較兩浮點(diǎn)數(shù)階碼大小,求出其差△E?!鱁≠0時(shí),將階碼小的數(shù)的尾數(shù)右移△E位,使兩數(shù)的階碼值相等。對(duì)階規(guī)則:小階向大階對(duì)齊。對(duì)階操作:小階階碼增大,尾數(shù)右移。例.AE>BE,則BE+1BE,BM,直到BE=AE2.尾數(shù)相加減3.規(guī)格化操作規(guī)格化的結(jié)果是使尾數(shù)的絕對(duì)值盡可能以最大值的形式出現(xiàn)。尾數(shù)的規(guī)格化數(shù)的范圍是1/2<|[M]補(bǔ)|<1-2-n(m為正),1/2<|[M]補(bǔ)|<1(M為負(fù))雙符號(hào)位原碼規(guī)格化尾數(shù),其數(shù)值最高位為1,雙符號(hào)位補(bǔ)碼規(guī)格化尾數(shù)應(yīng)是00.1********或11.0************左規(guī)與右規(guī)如果兩個(gè)符號(hào)位的值不同,表示加/減運(yùn)算結(jié)果溢出,此時(shí)將尾數(shù)結(jié)果右移一位,階碼加1,稱為“向右規(guī)格化”,簡(jiǎn)稱“右規(guī)”如果結(jié)果的兩個(gè)符號(hào)位的值相同,表示加/減運(yùn)算結(jié)果不溢出,但若最高數(shù)值位與符號(hào)位相同,則尾數(shù)連續(xù)左移,直到最高數(shù)值位與符號(hào)位的值不同,同時(shí)在階碼中減去移位的位數(shù),稱為”向左規(guī)格化“,簡(jiǎn)稱”左規(guī)“實(shí)例例111.0001+00.100111.1010例200.0101+00.1101結(jié)果規(guī)格化M<1/201.0010M>1應(yīng)左移規(guī)格化階碼減移位位數(shù)應(yīng)右移規(guī)格化階碼加移位位數(shù)4.舍入執(zhí)行右規(guī)或?qū)﹄A時(shí),尾數(shù)上的數(shù)值會(huì)被移掉,使數(shù)值精度受到影響,常用0舍入1法,當(dāng)移掉的最高位為1時(shí),在尾數(shù)的末位加1,如果加1后使尾數(shù)溢出,則要在進(jìn)行一次右規(guī)。5.判溢出階碼溢出表示浮點(diǎn)數(shù)溢出,規(guī)格化&舍入時(shí)都可能發(fā)生溢出,若階碼下溢,則置運(yùn)算結(jié)果為機(jī)器零,若上溢,則置溢出標(biāo)志。例題3.45浮點(diǎn)乘法運(yùn)算步驟:1.檢測(cè)操作數(shù)是否為0。2.階碼相加。浮點(diǎn)乘定點(diǎn)加、定點(diǎn)乘3.尾數(shù)相乘。(相乘前不需對(duì)階)設(shè)A=2×AM,B=2×BMAEBEAE+BEA×B=2

×(AM×BM)

4.結(jié)果規(guī)格化。(一般左規(guī))浮點(diǎn)除法運(yùn)算步驟:浮點(diǎn)除定點(diǎn)減、定點(diǎn)除4.尾數(shù)相除。設(shè)A=2×AM,B=2×BMAEBE5.結(jié)果規(guī)格化。AE-BEA÷B=2

×(AM÷BM)

3.階碼相減。2.AM<BM?若不滿足,則減小AM(同時(shí)調(diào)整AE)。1.檢測(cè)操作數(shù)是否為0。3.7數(shù)據(jù)校驗(yàn)碼為減少和避免錯(cuò)誤信息的形成、存儲(chǔ)、傳送中發(fā)生的錯(cuò)誤,除需提高硬件本身的可靠性外,還要在數(shù)據(jù)編碼上想辦法。數(shù)據(jù)校驗(yàn)碼就是一種有效的方法。數(shù)據(jù)校驗(yàn)碼是指能發(fā)現(xiàn)錯(cuò)誤或能自動(dòng)糾正錯(cuò)誤的數(shù)據(jù)編碼,又叫“檢錯(cuò)糾錯(cuò)編碼”。數(shù)據(jù)校驗(yàn)碼的檢驗(yàn)原理是:在編碼中,除合法的碼字外,再加上一些非法的碼字,當(dāng)某個(gè)合法碼字出現(xiàn)錯(cuò)誤時(shí),就變成非法碼字。合理安排非法碼字的數(shù)量和編碼規(guī)則,能達(dá)到糾錯(cuò)的目的。

數(shù)據(jù)校驗(yàn)碼的碼距是衡量?jī)蓚€(gè)編碼相異程度大小的單位,碼距為1,即表示兩個(gè)碼字間最少只有1個(gè)二進(jìn)制位不同(如0000與1000之間),這種編碼無檢錯(cuò)能力。對(duì)于碼距≥2的數(shù)據(jù)校驗(yàn)碼開始具有檢錯(cuò)能力。碼距越大,檢錯(cuò)、糾錯(cuò)的能力就越強(qiáng),且檢錯(cuò)能力總是大于或等于糾錯(cuò)能力。奇偶校驗(yàn)碼奇偶校驗(yàn)概念奇偶校驗(yàn)碼是一種最簡(jiǎn)單而有效的數(shù)據(jù)校驗(yàn)方法。實(shí)現(xiàn)方法:在每個(gè)被傳送碼的左邊或右邊加上1位奇偶校驗(yàn)位0或1,若采用奇校驗(yàn)位,只需把每個(gè)編碼中1的個(gè)數(shù)湊成奇數(shù);若采用偶校驗(yàn)位,只要把每個(gè)編碼中1的個(gè)數(shù)湊成偶數(shù)。檢驗(yàn)原理:碼距為1的二進(jìn)制碼加上奇偶校驗(yàn)位就變成碼距為2的奇偶校驗(yàn)碼,這種編碼能發(fā)現(xiàn)1個(gè)或奇數(shù)個(gè)錯(cuò),但因碼距較小,不能實(shí)現(xiàn)錯(cuò)誤定位。對(duì)奇偶校驗(yàn)碼的評(píng)價(jià):它能發(fā)現(xiàn)一位或奇數(shù)個(gè)位出錯(cuò),但無錯(cuò)誤定位和糾錯(cuò)能力。盡管奇偶校驗(yàn)碼的檢錯(cuò)能力較低,但對(duì)計(jì)算機(jī)內(nèi)存出錯(cuò)概率統(tǒng)計(jì),其中70~80%是1位錯(cuò)誤,另因奇偶校驗(yàn)碼實(shí)現(xiàn)簡(jiǎn)單,故它還是一種應(yīng)用最廣泛的校驗(yàn)方法。實(shí)際應(yīng)用中,多采用奇校驗(yàn),因奇校驗(yàn)中不存在全“0”代碼,在某些場(chǎng)合下更便于判別。

海明校驗(yàn)碼海明校驗(yàn)碼是由里查德.海明于1950年提出的,目前仍是廣泛采用的一種有效的校驗(yàn)碼實(shí)現(xiàn)原理:在數(shù)據(jù)中加入幾個(gè)校驗(yàn)位,將數(shù)據(jù)代碼的碼距比較均勻地拉開,并把數(shù)據(jù)的每一個(gè)二進(jìn)制位分配在幾個(gè)奇偶校驗(yàn)組中。當(dāng)某位出錯(cuò)時(shí),就會(huì)引起相關(guān)的幾個(gè)校驗(yàn)位值發(fā)生變化,這不僅可發(fā)現(xiàn)錯(cuò)誤,還能指出哪一位出錯(cuò),為進(jìn)一步自動(dòng)糾借提供了依據(jù)。構(gòu)成規(guī)則:由數(shù)據(jù)位和一組校驗(yàn)位構(gòu)成海明碼,這些校驗(yàn)位穿插在數(shù)據(jù)位中間。校驗(yàn)位的位數(shù)r和數(shù)據(jù)位的位數(shù)k應(yīng)滿足海明不等式:2r-1≥r+k上述海明不等式只能發(fā)現(xiàn)和糾正一位錯(cuò)誤,若要檢測(cè)并糾正一位錯(cuò),并發(fā)現(xiàn)兩位錯(cuò)則要滿足2r-1≥r+k(1)校驗(yàn)位分布:在m位的海明碼中,各校驗(yàn)位Pi分布在位號(hào)為2i-1的位置,即校驗(yàn)位的位置為1、2、4、8、…,其余為數(shù)據(jù)位,數(shù)據(jù)位按原順序排列。如有效信息碼D5D4D3D2D1,則最終海明碼是D5P4D4D3D2P3D1P2P1,其中Pi為第i個(gè)檢驗(yàn)位。(2)校驗(yàn)關(guān)系:

校驗(yàn)關(guān)系是指海明碼的每一位Hi要由多少個(gè)校驗(yàn)位來校驗(yàn),其關(guān)系是被校驗(yàn)位的位號(hào)為校驗(yàn)位的位號(hào)之和。如D1(位號(hào)為3)要由P2(位號(hào)為2)與P1(位號(hào)為1)兩個(gè)校驗(yàn)位校驗(yàn),D2(位號(hào)為5)要由P3(位號(hào)為4)與P1(位號(hào)為1)兩個(gè)校驗(yàn)位校驗(yàn),D3(位號(hào)為6)要由P2(位號(hào)為2)與P3(位號(hào)為4)兩個(gè)校驗(yàn)位校驗(yàn),D4(位號(hào)為7)要由P1、P2、P3三個(gè)校驗(yàn)位校驗(yàn)……這樣安排是希望校驗(yàn)的結(jié)果能正確反映出錯(cuò)位的位號(hào)。2.編碼規(guī)則以8421碼的海明碼為例,介紹海明碼的構(gòu)成和糾錯(cuò)原理。8421碼的N值為4,則其K值為3。設(shè)數(shù)據(jù)位是D4D3D2D1,按8421碼編碼,校驗(yàn)位是P3P2P1。按規(guī)則1:校驗(yàn)位分布為D4D3D2P3D1P2P1按規(guī)則2:D4(位號(hào)為7)要由P1、P2、P3三個(gè)校驗(yàn)位校驗(yàn)D3(位號(hào)為6)要由P2、P3二個(gè)校驗(yàn)位校驗(yàn)D2(位號(hào)為5)要由P1、P3二個(gè)校驗(yàn)位校驗(yàn)D1(位號(hào)為3)要由P1、P2二個(gè)校驗(yàn)位校驗(yàn)由以上分析可得:校驗(yàn)位的取值按下列公式求出:P3=D4⊕D3⊕D2P3應(yīng)滿足D4

、D3

、D2

、P3為偶校驗(yàn)P2=D4⊕D3⊕D1P2應(yīng)滿足D4

、D3

、D1、P2為偶校驗(yàn)P1=D4⊕D2⊕D1P1應(yīng)滿足D4

、D2

、D1、P1為偶校驗(yàn)可看出P3與D4D3D2有關(guān)2.編碼規(guī)則三個(gè)校驗(yàn)和按下列公式求出:S2=D4⊕D3⊕D2⊕P3S1=D4⊕D3⊕D1⊕P2

S0=D4⊕D2⊕D1⊕P1若S2S1S0=0,則說明傳送無錯(cuò),接收到的代碼無錯(cuò);若S2S1S0≠0,則說明傳送有錯(cuò),此時(shí)S2S1S0的十進(jìn)制數(shù)值就是出錯(cuò)的位號(hào),故將S2S1S0稱為指誤字(Symptom)。與奇偶校驗(yàn)一樣舉例一個(gè)8421碼4的海明碼在傳送第5位發(fā)生錯(cuò)誤的檢/糾例子。

7654321D4D3D2

P3D1P2P1發(fā)送4的海明碼0101010(由表3-7可查得)接收的海明碼0111010出錯(cuò)接收的海明碼第5位發(fā)生了錯(cuò)誤,由0變成了1。指誤字S2S1S0分別是:S2=D4⊕D3⊕D2⊕P3=0⊕1⊕1⊕1=1S1=D4⊕D3⊕D1⊕P2=0⊕1⊕0⊕1=0S0=D4⊕D2⊕D1⊕P1=0⊕1⊕0⊕0=1從上式得到指誤字S2S1S0

=101,說明是第5位(數(shù)據(jù)位D2)在傳送中出錯(cuò),此時(shí),只要將此位取反即可。指誤字S2S1S0

≠0,說明有錯(cuò)舉例一個(gè)8421碼4的海明碼在傳送時(shí),第5、6位同時(shí)出錯(cuò)

7654321D4D3D2P3D1P2P1

發(fā)送的海明碼0101010接收的海明碼0011010檢驗(yàn)的情況是:S2

=D4⊕D3⊕D2⊕P3

=0⊕0⊕1⊕1=0S1=D4⊕D3⊕D1⊕P2

=0⊕0⊕0⊕1=1S0

=D4⊕D2⊕D1⊕P1=0⊕1⊕0⊕0=1從上式得到指誤字S2S2S1

=011,說明是第3位出錯(cuò),這顯然與實(shí)際情況(第5、6位同時(shí)出錯(cuò))不符。結(jié)論:海明碼能查出2位以上的錯(cuò)誤,但不能作錯(cuò)誤的定位,更不能糾正2位錯(cuò)。指誤字S2S1S0

≠0,說明有錯(cuò)3.5.3循環(huán)冗余校驗(yàn)碼CRC碼是一種檢錯(cuò)、糾錯(cuò)能力很強(qiáng)的數(shù)據(jù)校驗(yàn)碼,主要用于網(wǎng)絡(luò)、同步通信及磁表面存儲(chǔ)器等應(yīng)用場(chǎng)合。1.循環(huán)冗余校驗(yàn)碼的編碼方法循環(huán)冗余校驗(yàn)碼由兩部分組成,左邊為信息位,右邊為校驗(yàn)位。若信息位為N位,校驗(yàn)位為K位,則該校驗(yàn)碼被稱為(N+K,N)碼

溫馨提示

  • 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)論