組成原理第2章-運(yùn)算方法及運(yùn)算器_第1頁
組成原理第2章-運(yùn)算方法及運(yùn)算器_第2頁
組成原理第2章-運(yùn)算方法及運(yùn)算器_第3頁
組成原理第2章-運(yùn)算方法及運(yùn)算器_第4頁
組成原理第2章-運(yùn)算方法及運(yùn)算器_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章數(shù)據(jù)表示和運(yùn)算方法本章學(xué)習(xí)要點(diǎn)數(shù)據(jù)在機(jī)內(nèi)的表示定點(diǎn)數(shù)加減乘除運(yùn)算方法及運(yùn)算器浮點(diǎn)數(shù)加減乘除運(yùn)算方法及運(yùn)算器序:編碼與碼制二進(jìn)制八進(jìn)制十六進(jìn)制BCD碼ASCII十進(jìn)制二進(jìn)制數(shù)便于計(jì)算機(jī)存儲及物理實(shí)現(xiàn)特點(diǎn):逢二進(jìn)一,由0和1兩個(gè)數(shù)碼組成,基數(shù)為2,各個(gè)位權(quán)以2k表示二進(jìn)制數(shù):

anan-1…a1a0.b1b2…bm=

an×2n+an-1×2n-1+…+a1×21+a0×20

+b1×2-1+b2×2-2+…+bm×2-m

其中ai,bj非0即1八進(jìn)制數(shù)用于表達(dá)二進(jìn)制數(shù),相互轉(zhuǎn)換簡單基數(shù)8,逢8進(jìn)位,位權(quán)為8k,8個(gè)數(shù)碼:0,1,2,3,4,5,6,7,8十六進(jìn)制數(shù)用于表達(dá)二進(jìn)制數(shù),相互轉(zhuǎn)換簡單基數(shù)16,逢16進(jìn)位,位權(quán)為16k,16個(gè)數(shù)碼:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)十六進(jìn)制數(shù):

anan-1…a1a0.b1b2…bm=

an×16n+an-1×16n-1+…+a1×161+a0×160 +b1×16-1+b2×16-2+…+bm×16-m

其中ai,bj是0~F中的一個(gè)數(shù)碼BCD碼(BinaryCodedDecimal)二進(jìn)制編碼的十進(jìn)制數(shù)一個(gè)十進(jìn)制數(shù)位用4位二進(jìn)制編碼來表示常用8421BCD碼:低10個(gè)4位二進(jìn)制編碼表示0~9壓縮BCD碼:一個(gè)字節(jié)表達(dá)兩位BCD碼非壓縮BCD碼:一個(gè)字節(jié)表達(dá)一位BCD碼(低4位表達(dá)數(shù)值,高4位常設(shè)置為0)BCD碼便于輸入輸出,表達(dá)數(shù)值準(zhǔn)確BCD碼(BinaryCodedDecimal)BCD碼很直觀BCD碼:0100100101111000.000101001001十進(jìn)制真值: 4978.149ASCII碼(美國標(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á)制表符號表2.1ASCII字符編碼表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位漢字的輸入編碼數(shù)字編碼國標(biāo)區(qū)位碼,用數(shù)字串代表一個(gè)漢字輸入

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

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

B0A1H(1011000010100001)漢字的表示方法漢字的輸入編碼、交換碼、漢字內(nèi)碼、字模碼是計(jì)算機(jī)中用于輸入、內(nèi)部處理、交換、輸出四種不同用途的編碼,不要混為一談.

顯示輸出打印輸出機(jī)內(nèi)碼向字形碼轉(zhuǎn)換機(jī)內(nèi)碼輸入碼向機(jī)內(nèi)碼轉(zhuǎn)換字符代碼化(輸入)校驗(yàn)碼校驗(yàn)碼:能夠發(fā)現(xiàn)甚至糾正信息傳輸或存儲過程中出現(xiàn)錯(cuò)誤的編碼檢錯(cuò)碼:僅能檢測出錯(cuò)誤的編碼糾錯(cuò)碼:能夠發(fā)現(xiàn)并糾正錯(cuò)誤的編碼最簡單且應(yīng)用廣泛的檢錯(cuò)碼:奇偶校驗(yàn)碼奇校驗(yàn):使包括校驗(yàn)位在內(nèi)的數(shù)據(jù)中為“1”的個(gè)數(shù)恒為奇數(shù)偶校驗(yàn):使包括校驗(yàn)位在內(nèi)的數(shù)據(jù)中為“1”的個(gè)數(shù)恒為偶數(shù)(包括0)只能檢測出奇數(shù)個(gè)位出錯(cuò)的情況,不能糾錯(cuò)例7:用奇校驗(yàn)和偶校驗(yàn)進(jìn)行編碼數(shù)據(jù)1010101001010100000000000111111111111111偶校驗(yàn)碼101010100010101001000000000011111111111111110奇校驗(yàn)碼101010101010101000000000001011111110111111111存在的意義八進(jìn)制與十六進(jìn)制數(shù)統(tǒng)稱為組合二進(jìn)制數(shù),目的是為了書寫方便,在計(jì)算機(jī)內(nèi)的本質(zhì)是相同的例如255海明碼2.1數(shù)值數(shù)據(jù)在機(jī)內(nèi)的表示

選擇計(jì)算機(jī)內(nèi)數(shù)值數(shù)據(jù)的表示方式需要考慮以下幾個(gè)因素:

(1)符號如何處理

(2)數(shù)碼的處理

(3)小數(shù)點(diǎn)的處理

(4)數(shù)據(jù)存儲和處理所需要的硬件代價(jià)數(shù)值精確度可能遇到的數(shù)值范圍要表示的數(shù)的類型(小數(shù)、整數(shù)、實(shí)數(shù))2.1.1真值和機(jī)器數(shù)真值:現(xiàn)實(shí)中真實(shí)的數(shù)值機(jī)器數(shù):計(jì)算機(jī)中用0和1數(shù)碼組合表達(dá)的數(shù)值定點(diǎn)數(shù):固定小數(shù)點(diǎn)的位置表達(dá)數(shù)值的機(jī)器數(shù)定點(diǎn)整數(shù):將小數(shù)點(diǎn)固定在機(jī)器數(shù)的最右側(cè)表達(dá)的整數(shù)定點(diǎn)小數(shù):將小數(shù)點(diǎn)固定在機(jī)器數(shù)的最左側(cè)表達(dá)的小數(shù)浮點(diǎn)數(shù):小數(shù)點(diǎn)浮動(dòng)表達(dá)的實(shí)數(shù)有符號數(shù)的表示符號占一位或兩位,其它位為數(shù)值位+8:01000-8:11000定點(diǎn)表示法定點(diǎn)表示:約定機(jī)器中所有數(shù)據(jù)的小數(shù)點(diǎn)位置是固定不變的。通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)定點(diǎn)數(shù)x=x0x1x2…xn在定點(diǎn)機(jī)中表示如下(x0表示符號位,0代表正號,1代表負(fù)號)定點(diǎn)表示法定點(diǎn)小數(shù)的小數(shù)點(diǎn)位置定點(diǎn)整數(shù)的小數(shù)點(diǎn)位置定點(diǎn)數(shù)例例:X=+1010110.純整數(shù):X=01010110.正數(shù),符號位取0Y=-1101001.純整數(shù):Y=11101001.(原碼)負(fù)數(shù),符號位取1X=+0.11011Y=-0.10101符號位取0純小數(shù):X=0.11011符號位取1純小數(shù):X=1.10101(原碼)定點(diǎn)整數(shù)的表示范圍純整數(shù)的表示范圍為(x1x2…xn各位均為0時(shí)最?。桓魑痪鶠?時(shí)最大,x0為符號位)

0≤|x|≤2n

-1例如:n=8,最大值編碼:11111111

表示:11111111=100000000-1

=28-1目前計(jì)算機(jī)中多采用定點(diǎn)純整數(shù)表示,因此將定點(diǎn)數(shù)表示的運(yùn)算簡稱為整數(shù)運(yùn)算定點(diǎn)小數(shù)的表示范圍純小數(shù)的表示范圍為(x1x2…xn各位均為0時(shí)最?。桓魑痪鶠?時(shí)最大,x0為符號位)

0≤|x|≤1-2-n例如,n=8,最大值編碼:0.11111111

表示:0.11111111=1.0-0.00000001

=1-2-8浮點(diǎn)表示法小數(shù)點(diǎn)位置隨階碼不同而浮動(dòng)1、格式:N=JE.M指數(shù)E基數(shù)J,取固定的值,比如10,2等尾數(shù)M2、機(jī)器中表示

階符階碼數(shù)符尾數(shù)浮點(diǎn)表示法3、IEEE754標(biāo)準(zhǔn)(規(guī)定了浮點(diǎn)數(shù)的表示格式,運(yùn)算規(guī)則等)規(guī)則規(guī)定了單精度(32)和雙精度(64)的基本格式.規(guī)則中,尾數(shù)用原碼,指數(shù)用移碼(便于對階和比較)32位單精度浮點(diǎn)數(shù)E:含階符的階碼,8位階碼采用移碼方式來表示正負(fù)指數(shù)S:1位符號位0表示正數(shù)1表示負(fù)數(shù)M:尾數(shù),23位小數(shù)表示,小數(shù)點(diǎn)放在尾數(shù)域最前面IEEE754標(biāo)準(zhǔn)例:156.78 =15.678×101 =

1.5678×102 =0.15678×103=RE×M對于二進(jìn)制數(shù)1011.1101 =0.10111101×2+4 =10.111101×2+2 =1.0111101×2+3(規(guī)格化表示法)

=1.0111101×2+11(規(guī)格化表示法)

=RE×M那么,計(jì)算機(jī)中究竟采用哪種數(shù)據(jù)形式?多種數(shù)據(jù)形式二進(jìn)制數(shù)尾數(shù)最高有效位為1,隱藏,并且隱藏在小數(shù)點(diǎn)的左邊(即:1≤M<2)32位單精度浮點(diǎn)數(shù)規(guī)格化表示

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

e=E-127(E=e+127)

指數(shù)真值e用偏移碼形式表示為階碼E規(guī)格化表示原則IEEE754標(biāo)準(zhǔn)④X=(-1)s×1.M×2e

=+(1.011011)×23

=+1011.011=(11.375)10②指數(shù)e=階碼-127=10000010-01111111

=00000011=(3)10③包括隱藏位1的尾數(shù)1.M=1.011011例1:浮點(diǎn)機(jī)器數(shù)(41360000)16,求真值①十六進(jìn)制數(shù)展開成二進(jìn)制數(shù)01000001001101100000000000000000S階碼E(8位)尾數(shù)M(23位)例2:真值20.59375,求32位單精度浮點(diǎn)數(shù)①分別將整數(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=4S=0E=4+127=131=10000011M=010010011③得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲格式為:0

1000001101001001100000000000000=(41A4C000)162.1.2數(shù)的機(jī)器碼表示真值:一般書寫的數(shù)機(jī)器碼:機(jī)器中表示的數(shù),要解決在計(jì)算機(jī)內(nèi)部數(shù)的正、負(fù)符號和小數(shù)點(diǎn)運(yùn)算問題原碼反碼補(bǔ)碼移碼原碼表示法原碼特點(diǎn):表示簡單,易于同真值之間進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)乘除運(yùn)算規(guī)則簡單進(jìn)行加減運(yùn)算十分麻煩補(bǔ)碼表示法定義:正數(shù)的補(bǔ)碼就是正數(shù)的本身,負(fù)數(shù)的補(bǔ)碼是原負(fù)數(shù)加上模計(jì)算機(jī)運(yùn)算受字長限制,屬于有模運(yùn)算定點(diǎn)小數(shù)x0.x1x2…..xn,以2為模定點(diǎn)整數(shù)x0x1x2…..xn,以2n+1為模定點(diǎn)小數(shù)x0.x1x2…xn

x1>x≥00,正數(shù)

[x]補(bǔ)=符號

2+x0≥x>-11,負(fù)數(shù)補(bǔ)碼表示法補(bǔ)碼性質(zhì)高位表明正負(fù)正數(shù)補(bǔ)碼,尾數(shù)與原碼相同范圍-2n~2n-1(定點(diǎn)整數(shù))變相補(bǔ)碼(雙符號補(bǔ)碼)為了防止溢出而設(shè)定補(bǔ)碼表示法

最大的優(yōu)點(diǎn)就是將減法運(yùn)算轉(zhuǎn)換成加法運(yùn)算

[X]補(bǔ)-[Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)例如X=(11)10=(1011)2Y=(5)10=(0101)2已知字長n=5位[X]補(bǔ)-[Y]補(bǔ)

=[X]補(bǔ)+[-Y]補(bǔ)=01011+11011=100110=00110=(6)10

注:最高1位已經(jīng)超過字長故應(yīng)丟掉無正零和負(fù)零之分反碼表示法定義:正數(shù)的表示與原、補(bǔ)碼相同,負(fù)數(shù)的補(bǔ)碼符號位為1,數(shù)值位是將原碼的數(shù)值按位取反,就得到該數(shù)的反碼表示。電路容易實(shí)現(xiàn),觸發(fā)器的輸出有正負(fù)之分。移碼表示法移碼的定義是:

[x]移=2n+x

例:-1011111

原碼為11011111補(bǔ)碼為10100001反碼為10100000移碼為00100001特點(diǎn):移碼和補(bǔ)碼尾數(shù)相同,符號位相反范圍:-2n~2n-12.3加減運(yùn)算方法

補(bǔ)碼加法運(yùn)算補(bǔ)碼減法運(yùn)算溢出概念及檢測方法基本的二進(jìn)制加法/減法器十進(jìn)制加法器2.3.1補(bǔ)碼加法運(yùn)算公式:[x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)(mod2)【例2-1】x=0.1010,y=0.0101,求

[x]補(bǔ)

+[y]補(bǔ)

=

?解:[x]補(bǔ)=0.1010,[y]補(bǔ)=0.0101[x]補(bǔ)

0.1010+[y]補(bǔ)

0.0101[x+y]補(bǔ)

0.1111

所以x+y=0.11113)X=3Y=–21)X=3Y=22)X=–3Y=–24)X=–3Y=2例.求(X+Y)補(bǔ)3)X=3Y=–200001(+1補(bǔ)碼)1)X=3Y=2X補(bǔ)=00011Y補(bǔ)=111102)X=–3Y=–2X補(bǔ)=11101Y補(bǔ)=1111011011(–5補(bǔ)碼)X補(bǔ)=00011Y補(bǔ)=0001000101(+5補(bǔ)碼)4)X=–3Y=2X補(bǔ)=11101Y補(bǔ)=0001011111(–1補(bǔ)碼)例.求(X+Y)補(bǔ)

2.3.2補(bǔ)碼減法運(yùn)算

(X-Y)補(bǔ)

=X補(bǔ)

+(-Y)補(bǔ)操作碼為“減”時(shí),將減轉(zhuǎn)換為加。1)X=4Y=–5X補(bǔ)=00100Y補(bǔ)=11011(-Y)補(bǔ)=0010101001(+9補(bǔ)碼)2)X=–4Y=5X補(bǔ)=11100Y補(bǔ)=00101(-Y)補(bǔ)=1101110111(–9補(bǔ)碼)例.求(X–Y)補(bǔ)Y補(bǔ)(–Y)補(bǔ):將Y補(bǔ)變補(bǔ)不管Y補(bǔ)為正或負(fù),將其符號連同尾數(shù)一起各位變反,末位加1。即將減數(shù)變補(bǔ)后與被減數(shù)相加。X補(bǔ)=00100Y補(bǔ)=11011X補(bǔ)=11100Y補(bǔ)=00101例1:求64–10,用補(bǔ)碼做例2:求34–68,用補(bǔ)碼做

例1:求64–10,用補(bǔ)碼做解:設(shè)z=64–10=64+(-10)

[+64]補(bǔ)=01000000,[-10]原=10001010[-10]補(bǔ)=11110110,或[[10]補(bǔ)]補(bǔ)=[00001010]補(bǔ)=11110110[z]補(bǔ)=[64-10]補(bǔ)=[+64]補(bǔ)+[-10]補(bǔ)=01000000+11110110=00110110

結(jié)果為正數(shù),所以z=+54例2:求34–68

解:設(shè)z=34–68=34+(-68)

[+34]補(bǔ)=00100010,[-68]原=11000100[-68]補(bǔ)=10111100[z]補(bǔ)=[+34]補(bǔ)+[-68]補(bǔ)=00100010+10111100=11011110

結(jié)果為負(fù)數(shù),[z]原=10100010,z=-34注意:某數(shù)的補(bǔ)碼表示與某數(shù)變補(bǔ)的區(qū)別。例.10101原

11011補(bǔ)碼表示10011補(bǔ)

01101變補(bǔ)00101原

00101補(bǔ)碼表示符號位不變,負(fù)數(shù)尾數(shù)改變,正數(shù)尾數(shù)不變。00011補(bǔ)

11101變補(bǔ)符號位改,尾數(shù)改變。補(bǔ)碼的機(jī)器負(fù)數(shù)2.算法流程操作數(shù)用補(bǔ)碼表示,符號位參加運(yùn)算結(jié)果為補(bǔ)碼表示,符號位指示結(jié)果正負(fù)X補(bǔ)+Y補(bǔ)X補(bǔ)+(-Y)補(bǔ)ADDSUB3.邏輯實(shí)現(xiàn)A(X補(bǔ))B(Y補(bǔ))+AABB+B+B+1CPA

∑A(1)控制信號加法器輸入端:+A:打開控制門,將A送∑。+B:打開控制門,將B送∑。+1:控制末位加1。+B:打開控制門,將B送∑。加法器輸出端:∑

A:打開控制門,將結(jié)果送A輸入端。CPA:將結(jié)果打入A。(2)補(bǔ)碼加減運(yùn)算器粗框∑2.3.4溢出判斷在什么情況下可能產(chǎn)生溢出?例.數(shù)A有4位尾數(shù),1位符號SA

數(shù)B有4位尾數(shù),1位符號SB

符號位參加運(yùn)算結(jié)果符號Sf符號位進(jìn)位Cf尾數(shù)最高位進(jìn)位C溢出概念及檢測方法

兩正數(shù)加,變負(fù)數(shù),上溢(大于機(jī)器所能表示的最大數(shù))兩負(fù)數(shù)加,變正數(shù),下溢(小于機(jī)器所能表示的最小數(shù))(2)A=10B=710+7:01010

0011110001(4)A=-10B=-7-10+(-7):0111110110110011.硬件判斷邏輯一(SA、SB與Sf的關(guān)系)溢出=SASBSfSASfSB2.硬件判斷邏輯二(Cf與C的關(guān)系)溢出=CfC3.硬件判斷邏輯三(雙符號位)溢出=Sf1Sf2(1)3+2:正確00001100001000

0101(2)10+7:001010000111010001正溢正確負(fù)溢正確正確(3)-3+(-2):110111111101111110(4)-10+(-7):101111110110111001(5)6+(-4):000010000110111100(6)-6+4:11

111011

1010000100第一符號位Sf1第二符號位Sf2[例]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)位[例]x=+0.1011,y=+0.1001,求x+y。[例]

x=+0.1011,y=+0.0010,求x+y。[例]

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)位[例]

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

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)位2.3.4基本的二進(jìn)制加法/減法器FA(全加器)邏輯電路圖FA框圖加法器的邏輯關(guān)系Si=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi2.3.4基本的二進(jìn)制加法/減法器2.3.5十進(jìn)制加法器

2.4乘法計(jì)算

原碼1位乘法補(bǔ)碼1位乘法陣列乘法器2.3.1原碼一位乘法(4/5)例題已知X=-0.1011,Y=0.1001,求[X×Y]原解:[X]原=1.1011,[Y]原=0.1001|X|=0.1011,|Y|=0.1001按原碼一位乘法運(yùn)算規(guī)則,求[X×Y]原的數(shù)值部分。|X|×|Y|=0.01100011,而Zs=XsYs=10=1最后求得[X×Y]原

=1.01100011例題之原碼一位乘法運(yùn)算過程

+)0.0000

+)0.0000

+)0.1011

+)0.10110.00010.01100.11000.00100.00100.01010.01010.10110.0000右移一位得部分積Z4,乘數(shù)同時(shí)右移一位右移一位得部分積Z3,乘數(shù)同時(shí)右移一位右移一位得部分積Z2,乘數(shù)同時(shí)右移一位右移一位得部分積Z1,乘數(shù)同時(shí)右移一位Y1=1,加|X|Y2=0,加0Y3=0,加0Y4=1,加|X|設(shè)部分積初值Z0=0操作說明乘數(shù)部分積10011100111001110011低位積高位積例原碼一位乘法運(yùn)算過程2.4.1原碼1位乘法2.4.3

陣列乘法器不帶符號的陣列乘法器帶符號的陣列乘法器求補(bǔ)器帶符號的陣列乘法器2.5除法計(jì)算原碼1位除法補(bǔ)碼1位除法陣列除法器2.5.1原碼1位除法恢復(fù)余數(shù)法加減交替法2.4.1原碼一位除法-加減交替法例X=-0.1011,Y=0.1101,求[X/Y]原解:[X]原=1.1011,[Y]原=0.1101[Y]補(bǔ)=0.1101,[-Y]補(bǔ)=1.0011

商的符號Qs=10=1

所以[X/Y]原

=1.1101

余數(shù)=0.0111×2-4例題之原碼不恢復(fù)余數(shù)除法運(yùn)算過程

+)11.0011

11.1110

00.1011+Y余數(shù)與商左移一位余數(shù)與商左移一位初始狀態(tài)+[-Y]補(bǔ)+[-|Y|]補(bǔ)余數(shù)為負(fù),商“0”余數(shù)為正,商“1”操作說明商Q上商被除數(shù)(余數(shù))0.00000.00000.00010.00100.0000

+)00.1101

11.1100

+)11.0011

00.1001

01.00100.00110.0110

+)11.0011

00.0101

00.1010余數(shù)為正,商“1”

00.01110.11010.01100.1100

+)00.1101

11.1101

11.1010余數(shù)與商左移一位+[-|Y|]補(bǔ)余數(shù)為正,商“1”+Y余數(shù)與商左移一位余數(shù)為負(fù),商“0”2.4.1原碼一位除法-恢復(fù)余數(shù)法例X=-0.1001,Y=-0.1011,求[X/Y]原解:[X]原

=1.1001,[Y]原

=1.1011|X|=0.1001,|Y|=0.1011,[-|Y|]補(bǔ)

=1.0101運(yùn)算過程如下:所以,Qs=11=0[X/Y]原

=[Q]原

=0.1101[R]原

=2-4R5=0.00000001例題之原碼恢復(fù)余數(shù)除法運(yùn)算過程+)00.1011+)11.0101

11.1110

00.1001R1恢復(fù)余數(shù),+|Y|R0=[X|+[-|Y|]補(bǔ)+[-|Y|]補(bǔ)+[-|Y|]補(bǔ)得R1<0,商上0得R2>0,商上1余數(shù)左移一位余數(shù)左移一位操作說明商Q上商(余數(shù))被除數(shù)0.00000.00000.00010.00100.0000

+)11.0101

00.1001

01.0010

+)11.0101

00.0111

00.11100.00110.0110

+)11.0101

00.0011

00.0110+[-|Y|]補(bǔ)得R3>0,商上1余數(shù)左移一位

+)00.1011

11.1011恢復(fù)余數(shù),+|Y|得R4<0,商上00.01100.1100

+)11.0101

00.0110

00.1100+[-|Y|]補(bǔ)R4余數(shù)左移一位

00.0001得R5>0,商上10.1101原碼加減交替法邏輯結(jié)構(gòu)框圖加數(shù)器YfCxQnTiQnT1,T2,…+1LDR1LDR0被除數(shù)X或者余數(shù)寄存器R0商Q寄存器R1除數(shù)Y寄存器∑f∑fR2R計(jì)數(shù)器iQfXfR0R1Qn+1SQ1.浮點(diǎn)加減法運(yùn)算

(1/7) 設(shè)兩個(gè)浮點(diǎn)數(shù)x和y分別為:

x=Sx·2Exy=Sy·2Ey

其中,Ex、Ey分別是x和y的階碼,Sx和Sy是x、y的尾數(shù)。 假定它們都是規(guī)則化的數(shù),即其尾數(shù)絕對值總小于1(用補(bǔ)碼表示,允許為1),浮點(diǎn)加減運(yùn)算的運(yùn)算步驟如下:1.浮點(diǎn)加減法運(yùn)算

(2/7)1.對階:小階向大階看齊對階的第一步是求階差:△E=Ex-Ey

若△E=0,表示兩數(shù)階碼相等,即Ex=Ey,不需要對階若△E>0,表明Ex>Ey

若△E<0,表明Ex<Ey

對于Ex≠Ey的這種情況,需要對階。采用“小階向大階看齊”的方法,即小階的尾數(shù)右移△E位,小階的階碼增加△E與大階相等。2.尾數(shù)求和(差) 對階完成后,就按定點(diǎn)加減運(yùn)算求兩數(shù)的尾數(shù)之和。1.浮點(diǎn)加減法運(yùn)算

(3/7)3.規(guī)格化 (1)對于定點(diǎn)小數(shù),其規(guī)格化數(shù)為:

00.1xx…x11.0xx…x (原碼表示法)(2)對于負(fù)數(shù)的補(bǔ)碼表示法,規(guī)格化定義有所不同:根據(jù)規(guī)格化浮點(diǎn)數(shù)的定義可知,規(guī)格化的尾數(shù)應(yīng)滿足:

S>0時(shí)1/2≤S<1

對于S<0,用補(bǔ)碼表示時(shí)-1/2>S≥-1

理論上,S可等于-1/2,但[-1/2]補(bǔ)=11.100…0,為了便于判別是否是規(guī)格化數(shù),不把-1/2列為規(guī)格化數(shù),而把-1列入規(guī)格化數(shù)。∵[-1]補(bǔ)=11.00…0∴補(bǔ)碼規(guī)格化的浮點(diǎn)數(shù)應(yīng)有兩種形式:

00.1xx…x11.0xx…x1.浮點(diǎn)加減法運(yùn)算

(4/7)由此可知補(bǔ)碼規(guī)格化的條件是:(A)若和或差的尾數(shù)兩符號位相等且與尾數(shù)第一位相等,則需向左規(guī)格化。即將和或差的尾數(shù)左移,每移一位,和或差的階碼減一,直至尾數(shù)第一位與尾符不等時(shí)為止。(B)若和或差的尾數(shù)兩符號位不等,即01.xx…x或10.xx…x形式,表示尾數(shù)求和(差)結(jié)果絕對值大于1,向左破壞了規(guī)格化。此時(shí)應(yīng)該將和(差)的尾數(shù)右移1位,階碼加1,即進(jìn)行向右規(guī)格化。4.舍入(1)“0舍1入”法,即右移時(shí)丟掉的最高位為0,則舍去;是1,則將尾數(shù)的末位加1(相當(dāng)于進(jìn)入)。(2)“恒置1”法,即不管移掉的是0還是1,都把尾數(shù)的末位置1。1.浮點(diǎn)加減法運(yùn)算

(5/7)5.浮點(diǎn)數(shù)的溢出判斷:由階碼判斷是否溢出。設(shè)階碼數(shù)值部分取7位,符號位取2位,用補(bǔ)碼表示,則能表示的最大階碼[E]補(bǔ)=001111111=127;最小階碼[E]補(bǔ)=110000000=-128;(1)小于-128,稱為下溢:發(fā)生在左規(guī)時(shí);用機(jī)器0表示(階碼、尾數(shù)全0)(2)大于+127時(shí),稱為上溢,這是浮點(diǎn)數(shù)的真正溢出置溢出標(biāo)志,作中斷處理總結(jié):

[E]補(bǔ)=01XX…X為上溢,真正溢出,需做溢出處理。

[E]

補(bǔ)=10XX…X為下溢,浮點(diǎn)數(shù)值趨于零,用機(jī)器零表示。1.浮點(diǎn)加減法運(yùn)算

(6/7)例x=0.1101×1001,y=-(0.1010)×1011,求x+y=?解:(1)對階: 假定兩數(shù)在計(jì)算機(jī)中采用補(bǔ)碼制,則

[x]補(bǔ)=0001,00.1101Ex=0001[y]補(bǔ)=0011,11.0110Ey=0011

求階差:△E=Ex-Ey=0001+1101=1110,即△E=-2,表示x的階碼Ex小于y的階碼Ey,階差為-2,所以應(yīng)使x的尾數(shù)右移2位,階碼加2,則[x]補(bǔ)=0011,00.0011,這時(shí)△E=0,對階完畢。1.浮點(diǎn)加減法運(yùn)算

(7/7)(2)尾數(shù)求和(差)

x和y對階后的尾數(shù)分別為:[Sx]補(bǔ)=00.0011,[Sy]補(bǔ)=11.0110

則[Sx]補(bǔ)+[Sy]補(bǔ)=00.0011+11.0110=11.1001∴[x+y]補(bǔ)=0011,11.1001(3)規(guī)格化 和的尾數(shù)的兩符號位相等,但小數(shù)點(diǎn)后的第一位也與符號位相等,不是規(guī)格化數(shù),需要進(jìn)行左規(guī),即向左規(guī)格化:尾數(shù)左移一位,階碼減1,就可得到規(guī)格化的浮點(diǎn)數(shù)結(jié)果。

[x+y]補(bǔ)=0010,11.00102.浮點(diǎn)乘法運(yùn)算(1/3)設(shè)x=Sx·2Ex

,Y=Sy·2Ey則x·Y=(Sx·Sy)·2Ex+Ey浮點(diǎn)數(shù)乘法運(yùn)算的規(guī)則為:乘積的階碼由兩數(shù)階碼相加求得乘積的尾數(shù)等于被乘數(shù)和乘數(shù)的尾數(shù)之積可采用定點(diǎn)數(shù)乘方法(A)需要對浮點(diǎn)數(shù)尾數(shù)積進(jìn)行規(guī)格化(左規(guī)、右規(guī):均是最多一位)(B)舍入:0舍1入,若采用雙倍字長乘積時(shí),沒有舍入問題。2.浮點(diǎn)乘法運(yùn)算(2/3)例3-15已知x=0.110000·10101,y=-0.111000·10100,設(shè)階碼數(shù)值部分各取5位,階符2位;尾數(shù)數(shù)值部分各取6位,尾符2位,按機(jī)器浮點(diǎn)數(shù)運(yùn)算步驟,求x×y。解:(1)求階和

[Ex]補(bǔ)=0000101[Ey]補(bǔ)=0000100[△E]補(bǔ)=[Ex]補(bǔ)

+[Ey]補(bǔ)

=0001001(2)尾數(shù)相乘可利用原碼或補(bǔ)碼定點(diǎn)數(shù)乘法求尾數(shù)之乘積,可得

[Sx·Sy]原

=1.101010000000

或[Sx·Sy]補(bǔ)

=1.0101100000002.浮點(diǎn)乘法運(yùn)算(3/3)(3)規(guī)格化

[Sx×Sy]原或[Sx×Sy]補(bǔ)已是規(guī)格化形式,勿需規(guī)格化。(4)舍入若取單字長乘積,可得[Sx×Sy]原=1.101010或[Sx×Sy]補(bǔ)=1.010110,所以

[x×y]原=1.101010×100001001[x×y]補(bǔ)=1.010110×100001001

得x×y=-0.101010·101001=-1010100003浮點(diǎn)除法運(yùn)算浮點(diǎn)數(shù)除法的運(yùn)算規(guī)則為:商的尾數(shù)由兩數(shù)的尾數(shù)相除求得商的階碼由兩數(shù)階碼相減求得設(shè)x=Sx·2Ex,y=Sy·2Ey

,則x/y=(Sx/Sy)·2Ex-Ey步驟(1)預(yù)置(2)尾數(shù)調(diào)整(3)求階差(4)尾數(shù)相除(5)規(guī)格化(6)舍入浮點(diǎn)加減運(yùn)算的操作過程分為四步:

1.0操作數(shù)的檢查;

2.比較階碼大小并完成對階;

3.尾數(shù)進(jìn)行加或減運(yùn)算;

4.結(jié)果規(guī)格化并進(jìn)行舍入處理。(1)0操作數(shù)檢查浮點(diǎn)加減運(yùn)算

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論