浮點(diǎn)數(shù)計(jì)算方法_第1頁(yè)
浮點(diǎn)數(shù)計(jì)算方法_第2頁(yè)
浮點(diǎn)數(shù)計(jì)算方法_第3頁(yè)
浮點(diǎn)數(shù)計(jì)算方法_第4頁(yè)
浮點(diǎn)數(shù)計(jì)算方法_第5頁(yè)
已閱讀5頁(yè),還剩159頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

關(guān)于浮點(diǎn)數(shù)計(jì)算方法第1頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.1數(shù)據(jù)與文字的表示方法

2.1.1數(shù)據(jù)格式計(jì)算機(jī)中常用的數(shù)據(jù)表示格式有兩種:1定點(diǎn)格式

2浮點(diǎn)格式一般來(lái)說(shuō),定點(diǎn)格式容許的數(shù)值范圍有限,但要求的處理硬件比較簡(jiǎn)單。而浮點(diǎn)格式容許的數(shù)值范圍很大,但要求的處理硬件比較復(fù)雜。第2頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月1.定點(diǎn)數(shù)的表示方法定點(diǎn)表示:約定機(jī)器中所有數(shù)據(jù)的小數(shù)點(diǎn)位置是固定不變的。由于約定在固定的位置,小數(shù)點(diǎn)就不再使用記號(hào)“.”來(lái)表示。通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)。定點(diǎn)數(shù)x=x0x1x2…xn在定點(diǎn)機(jī)中表示如下(x0:符號(hào)位,0代表正號(hào),1代表負(fù)號(hào)):第3頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月純小數(shù)的表示范圍為(x0x1x2…xn各位均為0時(shí)最??;各位均為1時(shí)最大)

0≤|x|≤1-2-n

(2.1)

純整數(shù)的表示范圍為

0≤|x|≤2n-1

(2.2)目前計(jì)算機(jī)中多采用定點(diǎn)純整數(shù)表示,因此將定點(diǎn)數(shù)表示的運(yùn)算簡(jiǎn)稱為整數(shù)運(yùn)算。第4頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月電子的質(zhì)量(9×10-28克)和太陽(yáng)的質(zhì)量(2×1033克)相差甚遠(yuǎn),在定點(diǎn)計(jì)算機(jī)中無(wú)法直接來(lái)表示這個(gè)數(shù)值范圍.要使它們送入定點(diǎn)計(jì)算機(jī)進(jìn)行某種運(yùn)算,必須對(duì)它們分別取不同的比例因子,使其數(shù)值部分絕對(duì)值小于1,即:

9×10-28=0.9×10-27

2×1033=0.2×1034

這里的比例因子10-27

和1034要分別存放在機(jī)器的某個(gè)存儲(chǔ)單元中,以便以后對(duì)計(jì)算結(jié)果按這個(gè)比例增大。顯然這要占用一定的存儲(chǔ)空間和運(yùn)算時(shí)間。因此得到浮點(diǎn)表示法如下:2.浮點(diǎn)數(shù)的表示方法第5頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月浮點(diǎn)表示法:把一個(gè)數(shù)的有效數(shù)字和數(shù)的范圍在計(jì)算機(jī)的一個(gè)存儲(chǔ)單元中分別予以表示,這種把數(shù)的范圍和精度分別表示的方法,相當(dāng)于數(shù)的小數(shù)點(diǎn)位置隨比例因子的不同而在一定范圍內(nèi)自由浮動(dòng),稱為浮點(diǎn)表示法。任意一個(gè)十進(jìn)制數(shù)N可以寫成N=10E.M(2.3)同樣在計(jì)算機(jī)中一個(gè)任意進(jìn)制數(shù)N可以寫成N=Re.M

(2.4)M:尾數(shù),是一個(gè)純小數(shù)。e

:比例因子的指數(shù),稱為浮點(diǎn)數(shù)的指數(shù),是一個(gè)整數(shù)。R:比例因子的基數(shù),對(duì)于二進(jìn)計(jì)數(shù)值的機(jī)器是一個(gè)常數(shù),一般規(guī)定R為2,8或16。

第6頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

一個(gè)機(jī)器浮點(diǎn)數(shù)由階碼和尾數(shù)及其符號(hào)位組成(尾數(shù):用定點(diǎn)小數(shù)表示,給出有效數(shù)字的位數(shù)決定了浮點(diǎn)數(shù)的表示精度;階碼:用整數(shù)形式表示,指明小數(shù)點(diǎn)在數(shù)據(jù)中的位置,決定了浮點(diǎn)數(shù)的表示范圍。):第7頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月32位浮點(diǎn)數(shù)的IEEE754標(biāo)準(zhǔn)格式為:64位浮點(diǎn)數(shù)的IEEE754標(biāo)準(zhǔn)格式為:第8頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月在IEEE754標(biāo)準(zhǔn)格式表示的32位浮點(diǎn)數(shù)中,S:浮點(diǎn)數(shù)的符號(hào)位,1位,

0表示正數(shù),1表示負(fù)數(shù)。

M:尾數(shù),23位,用小數(shù)表示,小數(shù)點(diǎn)放在尾數(shù)域的最前面。

E:階碼,8位階符采用隱含方式,即采用移碼方式來(lái)表示正負(fù)指數(shù)。移碼方法對(duì)兩個(gè)指數(shù)大小的比較和對(duì)階操作都比較方便,因?yàn)殡A碼域值大者其指數(shù)值也大。采用這種方式時(shí),將浮點(diǎn)數(shù)的指數(shù)真值e

變成階碼E

時(shí),應(yīng)將指數(shù)e

加上一個(gè)固定的偏移值127(01111111),即E=e+127.第9頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月IEEE754標(biāo)準(zhǔn)中,一個(gè)規(guī)格化的32位浮點(diǎn)數(shù)x的真值可表示為x=(-1)s×(1.M)×2E-127

e=E-127一個(gè)規(guī)格化的64位浮點(diǎn)數(shù)x的真值為x=(-1)s×(1.M)×2E-1023

e=E-1023為提高數(shù)據(jù)的表示精度,當(dāng)尾數(shù)的值不為0時(shí),尾數(shù)域的最高有效位應(yīng)為1,否則以修改階碼同時(shí)左右移小數(shù)點(diǎn)的辦法,使其變成這一表示形式,這稱為浮點(diǎn)數(shù)的規(guī)格化表示。當(dāng)浮點(diǎn)數(shù)的尾數(shù)為0,不論其階碼為何值,或者當(dāng)階碼的值遇到比它能表示的最小值還小時(shí),不管其尾數(shù)為何值,計(jì)算機(jī)都把該浮點(diǎn)數(shù)看成零值,稱為機(jī)器零。

第10頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

當(dāng)階碼E為全0且尾數(shù)M也為全0時(shí),表示的真值x為零,結(jié)合符號(hào)位S為0或1,有正零和負(fù)零之分。當(dāng)階碼E為全1且尾數(shù)M為全0時(shí),表示的真值x為無(wú)窮大,結(jié)合符號(hào)位S為0或1,也有+∞和-∞之分。這樣在32位浮點(diǎn)數(shù)表示中,要除去E用全0和全1(255)10表示零和無(wú)窮大的特殊情況,指數(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的冪表示)。第11頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

浮點(diǎn)數(shù)所表示的范圍遠(yuǎn)比定點(diǎn)數(shù)大。一臺(tái)計(jì)算機(jī)中究竟采用定點(diǎn)表示還是浮點(diǎn)表示,要根據(jù)計(jì)算機(jī)的使用條件來(lái)確定。一般在高檔微機(jī)以上的計(jì)算機(jī)中同時(shí)采用定點(diǎn)、浮點(diǎn)表示,由使用者進(jìn)行選擇,而單片機(jī)中多采用定點(diǎn)表示。[例1]

若浮點(diǎn)數(shù)x的754標(biāo)準(zhǔn)存儲(chǔ)格式為

(41360000)16,求其浮點(diǎn)數(shù)的十進(jìn)制數(shù)值。[例2]

將(20.59375)10轉(zhuǎn)換成754標(biāo)準(zhǔn)的32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式。

第12頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例1]

若浮點(diǎn)數(shù)x的754標(biāo)準(zhǔn)存儲(chǔ)格式為

(41360000)16,求其浮點(diǎn)數(shù)的十進(jìn)制數(shù)值。[解:]

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

指數(shù)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)10

第13頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例2]

將(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×24

e=4于是得到:

S=0,

E=4+127=131,

M=010010011最后得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式為:

01000001101001001100000000000000=(41A4C000)16

第14頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月3.十進(jìn)制數(shù)串的表示方法

目前,大多數(shù)通用性較強(qiáng)的計(jì)算機(jī)都能直接處理十進(jìn)制形式表示的數(shù)據(jù)。十進(jìn)制數(shù)串在計(jì)算機(jī)內(nèi)主要有兩種表示形式:

(1)字符串形式:一個(gè)字節(jié)存放一個(gè)十進(jìn)制的數(shù)位或符號(hào)位。為了指明這樣一個(gè)數(shù),需要給出該數(shù)在主存中的起始地址和位數(shù)(串的長(zhǎng)度)。

(2)壓縮的十進(jìn)制數(shù)串形式:一個(gè)字節(jié)存放兩個(gè)十進(jìn)制的數(shù)位。它比前一種形式節(jié)省存儲(chǔ)空間,又便于直接完成十進(jìn)制數(shù)的算術(shù)運(yùn)算,是廣泛采用的較為理想的方法。第15頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月4.自定義數(shù)據(jù)表示

在傳統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)中,用指令本身來(lái)說(shuō)明操作數(shù)據(jù)的類型。如定點(diǎn)加法表示操作數(shù)是純小數(shù)或純整數(shù);浮點(diǎn)加法表示操作數(shù)是浮點(diǎn)數(shù);十進(jìn)制加法表示操作數(shù)是BCD數(shù)。由于操作數(shù)據(jù)類型不同,要設(shè)三種不同的指令(操作碼)來(lái)加以區(qū)分。自定義數(shù)據(jù)表示則用數(shù)據(jù)本身來(lái)說(shuō)明數(shù)據(jù)類型。表示形式有兩種,即標(biāo)志符數(shù)據(jù)表示和描述符數(shù)據(jù)表示。

第16頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月描述符數(shù)據(jù)表示主要用來(lái)描述多維結(jié)構(gòu)的數(shù)據(jù)類型,如向量、矩陣、記錄等。描述符標(biāo)志位部分指明這是一個(gè)數(shù)據(jù)描述符;特征標(biāo)記部分指明數(shù)據(jù)的各種特征;長(zhǎng)度部分指明數(shù)組中元素個(gè)數(shù);起始地址部分指明數(shù)據(jù)塊的首地址。其格式為:標(biāo)志符數(shù)據(jù)表示要求對(duì)每一個(gè)數(shù)據(jù)都附加標(biāo)志符。其指明后面的數(shù)據(jù)所具有的類型,如整數(shù)、浮點(diǎn)數(shù)、BCD數(shù)、字符串等,其格式如下:

標(biāo)識(shí)符

數(shù)據(jù)描述符標(biāo)志位特征標(biāo)記數(shù)據(jù)塊長(zhǎng)度數(shù)據(jù)塊起始地址第17頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.1.2數(shù)的機(jī)器碼表示

在計(jì)算機(jī)中對(duì)數(shù)據(jù)進(jìn)行運(yùn)算操作時(shí),為了妥善的處理好符號(hào)位問(wèn)題,就產(chǎn)生了把符號(hào)位和數(shù)字位一起編碼來(lái)表示相應(yīng)的數(shù)的各種表示方法,如原碼、補(bǔ)碼、反碼、移碼等。為了區(qū)別一般書寫表示的數(shù)和機(jī)器中這些編碼表示的數(shù),通常將前者稱為真值,后者稱為機(jī)器數(shù)或機(jī)器碼。常用的機(jī)器碼表示法:

1.原碼表示法

2.補(bǔ)碼表示法

3.反碼表示法

4.移碼表示法第18頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月1.原碼表示法

若定點(diǎn)小數(shù)的原碼形式為x0.x1x2…xn,則原碼表示的定義是:

{

1>x≥0

[x]原=1-x=1+|x|0≥x>-1

式中[x]原是機(jī)器數(shù),x是真值

若定點(diǎn)整數(shù)的原碼形式為x0x1x2…xn

,則原碼表示的定義是

{x

2n>x≥0

[x]原=2n-x=2n+|x|0≥x>-2n第19頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

對(duì)于0,原碼機(jī)器中往往有“+0”、“-0”之分,故有兩種形式:

[+0]原=0.000...0

[-0]原=1.000...0

采用原碼表示法簡(jiǎn)單易懂,但它的最大缺點(diǎn)是加法運(yùn)算復(fù)雜。這是因?yàn)?,?dāng)兩數(shù)相加時(shí),如果是同號(hào)則數(shù)值相加;如果是異號(hào),則要進(jìn)行減法。而在進(jìn)行減法時(shí)還要比較絕對(duì)值的大小,然后大數(shù)減去小數(shù),最后還要給結(jié)果選擇符號(hào)。為了解決這些矛盾,人們找到了補(bǔ)碼表示法。第20頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.補(bǔ)碼表示法

我們先以鐘表對(duì)時(shí)為例說(shuō)明補(bǔ)碼的概念。假設(shè)現(xiàn)在的標(biāo)準(zhǔn)時(shí)間為4點(diǎn)正;而有一只表已經(jīng)7點(diǎn)了,為了校準(zhǔn)時(shí)間,可以采用兩種方法:一是將時(shí)針退7-4=3格;一是將時(shí)針向前撥12-3=9格。這兩種方法都能對(duì)準(zhǔn)到4點(diǎn),由此可以看出,減3和加9是等價(jià)的,就是說(shuō)9是(-3)對(duì)12的補(bǔ)碼,可以用數(shù)學(xué)公式表示:

-3=+9(mod12)

mod12的意思就是12模數(shù),這個(gè)“模”表示被丟掉的數(shù)值。上式在數(shù)學(xué)上稱為同余式。第21頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月上例中其所以7-3和7+9(mod12)等價(jià),原因就是表指針超過(guò)12時(shí),將12自動(dòng)丟掉,最后得到16-12=4。從這里可以得到一個(gè)啟示,就是負(fù)數(shù)用補(bǔ)碼表示時(shí),可以把減法轉(zhuǎn)化為加法。這樣,在計(jì)算機(jī)中實(shí)現(xiàn)起來(lái)就比較方便。

7–3=47+9=4以12取模數(shù)(mod12)

-3=+9(mod12)采用補(bǔ)碼表示法進(jìn)行減法運(yùn)算就比原碼方便得多了。因?yàn)椴徽摂?shù)是正還是負(fù),機(jī)器總是做加法,減法運(yùn)算可變?yōu)榧臃ㄟ\(yùn)算。關(guān)鍵是我們需要換算出兩個(gè)操作數(shù)的補(bǔ)碼表示。第22頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

若定點(diǎn)小數(shù)補(bǔ)碼形式為x0.x1x2…xn,則補(bǔ)碼表示的定義是:

{

1>x≥0

[x]補(bǔ)=2+x=2-|x|

0≥x≥-1

(mod2)

若定點(diǎn)整數(shù)補(bǔ)碼形式為x0x1x2…xn

,則補(bǔ)碼表示的定義是:

{

2n>x≥0[x]補(bǔ)=

2n+1+x=2n+1-|x|

0≥x≥-2n(mod2n+1)

根據(jù)補(bǔ)碼定義,求負(fù)數(shù)的補(bǔ)碼要從2減去|x|。為了用加法代替減法,結(jié)果還得在求補(bǔ)碼時(shí)作一次減法,這顯然是不方便的。下面介紹的反碼表示法可以解決負(fù)數(shù)的求補(bǔ)問(wèn)題。第23頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月3.反碼表示法

所謂反碼,就是二進(jìn)制的各位數(shù)碼0變?yōu)?,1變?yōu)?。也就是說(shuō),若Xi=1,則反碼為xi=0;若xi=0,則反碼xi=1。數(shù)值上面的一橫表示反碼的意思。在計(jì)算機(jī)中用觸發(fā)器寄存數(shù)碼,若觸發(fā)器Q端輸出表示原碼,則其Q端輸出就是反碼。由此可知,反碼是容易得到的。第24頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

若定點(diǎn)小數(shù)反碼形式為x0.x1x2…xn,則反碼表示的定義是:

{x

1>x≥0

[x]反=(2-2-n)+x

0≥x>-1一般情況下,對(duì)正數(shù)和負(fù)數(shù)的x值,x=+0.x1x2…xn,則[x]反=0.x1x2…xnx=-0.x1x2…xn,則[x]反=1.x1x2…xn

若定點(diǎn)整數(shù)反碼形式為x0x1x2…xn,則反碼表示的定義是:

{x

2n>x≥0

[x]反=(2n+1-1)+x

0≥x>-2n第25頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月我們比較反碼與補(bǔ)碼的公式,對(duì)于負(fù)數(shù)有:定點(diǎn)小數(shù)

[x]反=(2-2-n)+x

[x]補(bǔ)=2+x可得到

[x]補(bǔ)=[x]反+2-n

定點(diǎn)整數(shù)[x]反=(2n+1-1)+x

[x]補(bǔ)=2n+1+x可得到

[x]補(bǔ)=[x]反+1

這就是通過(guò)反碼求補(bǔ)碼的重要公式。這個(gè)公式告訴我們,若要一個(gè)負(fù)數(shù)變補(bǔ)碼,其方法是符號(hào)位置1,其余各位0變1,1變0,然后在最末位(2-n)上加1。第26頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月4.移碼表示法移碼通常用于表示浮點(diǎn)數(shù)的階碼。由于階碼是個(gè)n位的整數(shù),假定定點(diǎn)整數(shù)移碼形式為x0x1x2…xn時(shí),對(duì)定點(diǎn)整數(shù)移碼的傳統(tǒng)定義是:

[x]移=2n+x

2n>x≥-2n

若階碼數(shù)值部分為5位,以x表示真值,則:

[x]移=25+x

25>x≥-25

第27頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月小結(jié):上面的數(shù)據(jù)四種機(jī)器表示法中,移碼表示法主要用于表示浮點(diǎn)數(shù)的階碼。由于補(bǔ)碼表示對(duì)加減法運(yùn)算十分方便,因此目前機(jī)器中廣泛采用補(bǔ)碼表示法。在這類機(jī)器中,數(shù)用補(bǔ)碼表示,補(bǔ)碼存儲(chǔ),補(bǔ)碼運(yùn)算。也有些機(jī)器,數(shù)用原碼進(jìn)行存儲(chǔ)和傳送,運(yùn)算時(shí)改用補(bǔ)碼。還有些機(jī)器在做加減法時(shí)用補(bǔ)碼運(yùn)算,在做乘除法時(shí)用原碼運(yùn)算。第28頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例5]設(shè)機(jī)器字長(zhǎng)16位,定點(diǎn)表示,尾數(shù)15位,數(shù)符1位,問(wèn):

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

[解:]

(1)定點(diǎn)原碼整數(shù)表示

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

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

(2)定點(diǎn)原碼小數(shù)表示

最大正數(shù)值=(1-2-15)10=(+0.111...11)2

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

01111111111111111111111111111111第29頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例6]假設(shè)由S,E,M三個(gè)域組成的一個(gè)32位二進(jìn)制數(shù)所表示的非零規(guī)格化浮點(diǎn)數(shù)x,真值表示為:x=(-1)s×(1.M)×2E-128問(wèn):它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負(fù)數(shù)、最小負(fù)數(shù)是多少?

[解:](1)最大正數(shù)

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

(2)最小正數(shù)

x=1.0×2-128

(3)最小負(fù)數(shù)

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

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

x=-1.0×2-128

01111111111111111111111111111111000000000000000000000000000000001111111111111111111111111111111110000000000000000000000000000000第30頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例7]若機(jī)器使用8位表示定點(diǎn)數(shù),將數(shù)x=+100/-100,y=+0.59375/-0.59375分別轉(zhuǎn)換為各種機(jī)器碼形式。

[解:]已知數(shù)據(jù)位數(shù)為8位,最高位為符號(hào)位,數(shù)據(jù)表示范圍可用7位,那么定點(diǎn)整數(shù)的范圍是:0≤|x|≤127(27-1)定點(diǎn)小數(shù)的范圍是:

0≤|x|≤0.9921875(1-2-7)

(100)10=(1100100)2(0.59375)10=(0.10011)2[+1100100]原=01100100[-1100100]原=11100100[+1100100]反=01100100[-1100100]反=10011011[+1100100]補(bǔ)=01100100[-1100100]補(bǔ)=10011100[+0.10011]原=01001100[-0.10011]原=11001100[+0.10011]反=01001100[-0.10011]反=10110011[+0.10011]補(bǔ)=01001100[-0.10011]補(bǔ)=10110100第31頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.1.3字符與字符串的表示方法1.字符的表示方法現(xiàn)代計(jì)算機(jī)不僅處理數(shù)值領(lǐng)域的問(wèn)題,而且處理大量非數(shù)值領(lǐng)域的問(wèn)題。這樣一來(lái),必然要引入文字、字母以及某些專用符號(hào),以便表示文字語(yǔ)言、邏輯語(yǔ)言等信息。目前國(guó)際上普遍采用的字符系統(tǒng)是七單位的ASCII碼(美國(guó)國(guó)家信息交換標(biāo)準(zhǔn)字符碼),它包括10個(gè)十進(jìn)制數(shù)碼,26個(gè)英文字母和一定數(shù)量的專用符號(hào),如$,%,+,=等,共128個(gè)元素,因此二進(jìn)制編碼需7位,加一位偶校驗(yàn)位,共8位一個(gè)字節(jié)。參見書中表2.1的ASCII碼字符編碼表。第32頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.字符串

字符串是指連續(xù)的一串字符,通常方式下,它們占用主存中連續(xù)的多個(gè)字節(jié),每個(gè)字節(jié)存一個(gè)字符。當(dāng)主存字由2個(gè)或4個(gè)字節(jié)組成時(shí),在同一個(gè)主存字中,既可按從低位字節(jié)向高位字節(jié)的順序存放字符串的內(nèi)容,也可按從高位字節(jié)向低位字節(jié)的次序順序存放字符串的內(nèi)容。[例]將下面字符串從高位字節(jié)到低位字節(jié)依次存在主存中。

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

第33頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.1.4漢字的表示方法1.漢字的輸入編碼

當(dāng)前采用的方法主要有以下三類:

數(shù)字編碼常用的是國(guó)標(biāo)區(qū)位碼,用數(shù)字串代表一個(gè)漢字輸入。區(qū)位碼是將國(guó)家標(biāo)準(zhǔn)局公布的6763個(gè)兩級(jí)漢字分為94個(gè)區(qū),每個(gè)區(qū)分94位,實(shí)際上把漢字表示成二維數(shù)組,每個(gè)漢字在數(shù)組中的下標(biāo)就是區(qū)位碼。區(qū)碼和位碼各兩位十進(jìn)制數(shù)字,因此輸入一個(gè)漢字需按鍵四次。數(shù)字編碼輸入的優(yōu)點(diǎn)是無(wú)重碼,且輸入碼與內(nèi)部編碼的轉(zhuǎn)換比較方便,缺點(diǎn)是代碼難以記憶。

拼音碼拼音碼是以漢字拼音為基礎(chǔ)的輸入方法。使用簡(jiǎn)單方便,但漢字同音字太多,輸入重碼率很高,同音字選擇影響了輸入速度。

字形編碼字形編碼是用漢字的形狀來(lái)進(jìn)行的編碼。把漢字的筆劃部件用字母或數(shù)字進(jìn)行編碼,按筆劃的順序依次輸入,就能表示一個(gè)漢字。第34頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.漢字內(nèi)碼漢字內(nèi)碼是用于漢字信息的存儲(chǔ)、交換、檢索等操作的機(jī)內(nèi)代碼,一般采用兩個(gè)字節(jié)表示。英文字符的機(jī)內(nèi)代碼是七位的ASCII碼,當(dāng)用一個(gè)字節(jié)表示時(shí),最高位為“0”。為了與英文字符能相互區(qū)別,漢字機(jī)內(nèi)代碼中兩個(gè)字節(jié)的最高位均規(guī)定為“1”。注意:有些系統(tǒng)中字節(jié)的最高位用于奇偶校驗(yàn)位,這種情況下用三個(gè)字節(jié)表示漢字內(nèi)碼。第35頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月3.漢字字模碼字模碼是用點(diǎn)陣表示的漢字字形代碼,它是漢字的輸出形式。字模點(diǎn)陣只能用來(lái)構(gòu)成漢字庫(kù),用于漢字的顯示輸出或打印輸出。注意,漢字的輸入編碼、漢字內(nèi)碼、字模碼是計(jì)算機(jī)中用于輸入、內(nèi)部處理、輸出三種不同用途的編碼,不要混為一談。圖2.1漢字的字模點(diǎn)陣及編碼

第36頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.1.5校驗(yàn)碼元件故障/噪聲干擾等各種因素常導(dǎo)致計(jì)算機(jī)在處理信息過(guò)程中出現(xiàn)錯(cuò)誤。為了防止錯(cuò)誤可將信號(hào)采用專門的邏輯線路進(jìn)行編碼以檢測(cè)錯(cuò)誤,甚至校正錯(cuò)誤。通常的方法是在每個(gè)字上添加一些校驗(yàn)位,用來(lái)確定字中出現(xiàn)錯(cuò)誤的位置。最簡(jiǎn)單且應(yīng)用廣泛的檢錯(cuò)碼是采用一位校驗(yàn)位的奇校驗(yàn)或偶校驗(yàn)。設(shè)x=(x0x1…xn-1)是一個(gè)n位字,

則奇校驗(yàn)位C定義為

C=x0⊕x1⊕…⊕xn-1

同理偶校驗(yàn)位C定義為

C=x0⊕x1⊕…⊕xn-1第37頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.2定點(diǎn)加法、減法運(yùn)算

2.2.1補(bǔ)碼加法

負(fù)數(shù)用補(bǔ)碼表示后,可以和正數(shù)一樣來(lái)處理。這樣,運(yùn)算器里只需要一個(gè)加法器就可以了,不必為了負(fù)數(shù)的加法運(yùn)算,再配一個(gè)減法器。補(bǔ)碼加法的公式是

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

現(xiàn)分四種情況來(lái)證明。假設(shè)采用定點(diǎn)小數(shù)表示,因此證明的先決條件是

︱x︱﹤1,︱y︱﹤1,︱x+y︱﹤1。第38頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月(1)x﹥0,y﹥0,則x+y﹥0。

相加兩數(shù)都是正數(shù),故其和也一定是正數(shù)。正數(shù)的補(bǔ)碼和原碼是一樣的,可得:

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

(mod2)(2)x﹥0,y﹤0,則x+y>0或x+y<0。相加的兩數(shù)一個(gè)為正,一個(gè)為負(fù),因此相加結(jié)果有正、負(fù)兩種可能。根據(jù)補(bǔ)碼定義,

[x]補(bǔ)=x,

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

∴[x]補(bǔ)+[y]補(bǔ)=x+2+y=2+(x+y)當(dāng)x+y>0時(shí),2+(x+y)>2,進(jìn)位2必丟失,又因(x+y)>0,故[x]補(bǔ)+[y]補(bǔ)=x+y=[x+y]補(bǔ)

(mod2)當(dāng)x+y<0時(shí),2+(x+y)<2,又因(x+y)<0,故

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

(mod2)第39頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月(3)x<0,y>0,則x+y>0或x+y<0。這種情況等同于第2種情況。(4)x<0,y<0,則x+y<0。相加兩數(shù)都是負(fù)數(shù),則其和也一定是負(fù)數(shù)。∵[x]補(bǔ)=2+x,

[y]補(bǔ)=2+y∴[x]補(bǔ)+[y]補(bǔ)=2+x+2+y=2+(2+x+y)上式右邊分為”2”和(2+x+y)兩部分.既然(x+y)是負(fù)數(shù),而其絕對(duì)值又小于1,那么(2+x+y)就一定是小于2而大于1的數(shù),進(jìn)位”2”必丟失.又因(x+y)<0,所以[x]補(bǔ)+[y]補(bǔ)=2+(x+y)=[x+y]補(bǔ)

(mod2)至此我們證明了,在模2意義下,任意兩數(shù)的補(bǔ)碼之和等于該兩數(shù)之和的補(bǔ)碼.這是補(bǔ)碼加法的理論基礎(chǔ),其結(jié)論也適用于定點(diǎn)整數(shù)。第40頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例8]

x=0.1001,y=0.0101,用補(bǔ)碼求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

第41頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例9]x=+0.1011,y=-0.0101,

用補(bǔ)碼求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.0110

由以上兩例看到,補(bǔ)碼加法的特點(diǎn),一是符號(hào)位要作為數(shù)的一部分一起參加運(yùn)算,二是要在模2的意義下相加,即超過(guò)2的進(jìn)位要丟掉。第42頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.2.2補(bǔ)碼減法

負(fù)數(shù)的減法運(yùn)算也要設(shè)法化為加法來(lái)做,其所以使用這種方法而不使用直接減法,是因?yàn)樗梢院统R?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ǔ)

只要證明[-y]補(bǔ)=-[y]補(bǔ),上式即得證。第43頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月現(xiàn)證明如下:

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

(mod2)∴[y]補(bǔ)=[x+y]補(bǔ)-[x]補(bǔ)

(2.19a)∵[x-y]補(bǔ)=[x+(-y)]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)∴[-y]補(bǔ)=[x-y]補(bǔ)-[x]補(bǔ)

(2.19a)將式(2.19a)與(2.19b)相加,得[-y]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)+[x-y]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=[x+y+x-y]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=[x+x]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=0故[-y]補(bǔ)=-[y]補(bǔ)(mod2)第44頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月從[y]補(bǔ)求[-y]補(bǔ)的法則是:對(duì)[y]補(bǔ)包括符號(hào)位“求反且最末位加1”,即可得到[-y]補(bǔ)。寫成運(yùn)算表達(dá)式,則為[-y]補(bǔ)=﹁[y]補(bǔ)+2-n(2.21)

其中符號(hào)﹁表示對(duì)[y]補(bǔ)作包括符號(hào)位在內(nèi)的求反操作,2-n表示最末位的1第45頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例10]

已知x1=-0.1110,x2=+0.1101,

求:[x1]補(bǔ),[-x1]補(bǔ),[x2]補(bǔ),[-x2]補(bǔ)。[解:]

[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第46頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例11]

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.0111第47頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.2.3溢出概念與檢測(cè)方法在定點(diǎn)小數(shù)機(jī)器中,數(shù)的表示范圍為|x|<1.在運(yùn)算過(guò)程中如出現(xiàn)大于1的現(xiàn)象,稱為“溢出”。在定點(diǎn)機(jī)中,正常情況下溢出是不允許的。

兩個(gè)正數(shù)相加,結(jié)果大于機(jī)器所能表示的最大正數(shù),稱為上溢。而兩個(gè)負(fù)數(shù)相加,結(jié)果小于機(jī)器所能表示的最小負(fù)數(shù),稱為下溢。機(jī)器定點(diǎn)小數(shù)表示第48頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例12]

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兩個(gè)正數(shù)相加的結(jié)果成為負(fù)數(shù),這顯然是錯(cuò)誤的。[例13]

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兩個(gè)負(fù)數(shù)相加的結(jié)果成為正數(shù),這同樣是錯(cuò)誤的。第49頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

為了判斷“溢出”是否發(fā)生,可采用兩種檢測(cè)的方法。第一種方法是采用雙符號(hào)位法,這稱為“變形補(bǔ)碼”或“模4補(bǔ)碼”,從而可使模2補(bǔ)碼所能表示的數(shù)的范圍擴(kuò)大一倍。

第二種溢出檢測(cè)方法是采用單符號(hào)位法。從上例中看到,當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無(wú)進(jìn)位時(shí),產(chǎn)生上溢;當(dāng)最高有效位無(wú)進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生下溢。在定點(diǎn)機(jī)中當(dāng)運(yùn)算結(jié)果發(fā)生溢出時(shí),機(jī)器通過(guò)邏輯電路自動(dòng)檢查出溢出,并進(jìn)行中斷處理。第50頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.2.4基本的二進(jìn)制加法/減法器

首先我們來(lái)討論最簡(jiǎn)單的一位全加器的結(jié)構(gòu),設(shè)定兩個(gè)二進(jìn)制數(shù)字Ai,Bi和一個(gè)進(jìn)位輸入Ci相加,產(chǎn)生一個(gè)和輸出Si,以及一個(gè)進(jìn)位輸出Ci+1。

Ai

+BiCiCi+1Si

下表列出一位全加器進(jìn)行加法運(yùn)算的輸入輸出真值表。第51頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

輸入

輸出AiBiCiSiCi+10000000110010100110110010101011100111111表2.2一位全加器真值表第52頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

根據(jù)表2.2所示的真值表,三個(gè)輸入端和兩個(gè)輸入端可按如下邏輯方程進(jìn)行聯(lián)系:

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

按此表達(dá)式組成的一位全加器下圖示2.2(a)。第53頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月第54頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

由上圖看到,n個(gè)1位的全加器(FA)可級(jí)聯(lián)成一個(gè)n位的行波進(jìn)位加減器。M為方式控制輸入線,當(dāng)M=0時(shí),作加法(A+B)運(yùn)算;當(dāng)M=1時(shí),作減法(A-B)運(yùn)算,在后一種情況下,A-B運(yùn)算轉(zhuǎn)化成[A]補(bǔ)+[-B]補(bǔ)運(yùn)算,求補(bǔ)過(guò)程由B+1來(lái)實(shí)現(xiàn)。因此圖中最右邊的全加器的起始進(jìn)位輸入端被連接到功能方式線M上,作減法時(shí)M=1,相當(dāng)于在加法器的最低位上加1。另外圖中左邊還表示出單符號(hào)位法的溢出檢測(cè)邏輯;當(dāng)Cn=Cn-1時(shí),運(yùn)算無(wú)溢出;而當(dāng)Cn≠Cn-1時(shí),運(yùn)算有溢出,經(jīng)異或門產(chǎn)生溢出信號(hào)。第55頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

對(duì)一位全加器(FA)來(lái)說(shuō),Si的時(shí)間延遲為6T(每級(jí)異或門延遲3T),Ci+1的時(shí)間延遲為5T,其中T被定義為相應(yīng)于單級(jí)邏輯電路的單位門延遲。T通常采用一個(gè)“與非”門或一個(gè)“或非”門的時(shí)間延遲來(lái)作為度量單位。

現(xiàn)在我們計(jì)算一個(gè)n位的行波進(jìn)位加法器的時(shí)間延遲。假如采用圖2.2(a)所示的一位全加器并考慮溢出檢測(cè),那么n位行波進(jìn)位加法器的延遲時(shí)間ta為

ta=n·2T+9T=(2n+9)T9T為最低位上的兩極“異或”門再加上溢出“異或”門的總時(shí)間,2T為每級(jí)進(jìn)位鏈的延遲時(shí)間。第56頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

當(dāng)不考慮溢出檢測(cè)時(shí),有

ta=(n-1)·2T+9T

ta意味著加法器的輸入端輸入加數(shù)和被加數(shù)后,在最壞情況下加法器輸出端得到穩(wěn)定的求和輸出所需的最長(zhǎng)時(shí)間。顯然這個(gè)時(shí)間越小越好。注意,加數(shù)、被加數(shù)、進(jìn)位與和數(shù)都是用電平來(lái)表示的,因此,所謂穩(wěn)定的求和輸出,就是指穩(wěn)定的電平輸出。

注意:第一種情況下,是最低的兩個(gè)異或門加上溢出的異或門共3*3T;第二種情況下,是最低的兩個(gè)異或門加上最后一個(gè)FA的輸出異或門共3*3T。第57頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.2.5十進(jìn)制加法器

十進(jìn)制加法器可由BCD碼(二——十進(jìn)制碼)來(lái)設(shè)計(jì),它可以在二進(jìn)制加法器的基礎(chǔ)上加上適當(dāng)?shù)男U壿媮?lái)實(shí)現(xiàn),該校正邏輯可將二進(jìn)制的和改變成所要求的十進(jìn)制格式。

n位BCD碼行波式進(jìn)位加法器的一般結(jié)構(gòu)如下圖2.3(a)所示,它由n級(jí)組成,每一級(jí)將一對(duì)4位的BCD數(shù)字相加,并通過(guò)一位進(jìn)位線與其相鄰級(jí)連接。而每一位十進(jìn)制數(shù)字的BCD加法器單元的邏輯結(jié)構(gòu)示于圖2.3(b)。

第58頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月第59頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

在十進(jìn)制運(yùn)算時(shí),當(dāng)相加二數(shù)之和大于9時(shí),便產(chǎn)生進(jìn)位。可是用BCD碼完成十進(jìn)制數(shù)運(yùn)算時(shí),當(dāng)和數(shù)大于9時(shí),必須對(duì)和數(shù)進(jìn)行加6修正。這是因?yàn)椋捎肂CD碼后,在二數(shù)相加的和數(shù)小于等于9時(shí),十進(jìn)制運(yùn)算的結(jié)果是正確的;而當(dāng)相加的和數(shù)大于9時(shí),結(jié)果不正確,必須加6修正后才能得出正確的結(jié)果。第60頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.3定點(diǎn)乘法運(yùn)算

2.3.1原碼乘法

1.人工算法與機(jī)器算法的同異性

設(shè)x=0.1101,y=0.1011.下面讓我們先用習(xí)慣方法求其乘積,其過(guò)程如下:

第61頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

上述的運(yùn)算過(guò)程與十進(jìn)制乘法相似:從乘數(shù)y的最低位開始,若這一位為“1”,則將被乘數(shù)x寫下;若這一位為“0”,則寫下全0。然后在對(duì)乘數(shù)y的次高位進(jìn)行乘法運(yùn)算,其規(guī)則同上,不過(guò)這一位乘數(shù)的權(quán)與最低位乘數(shù)的權(quán)不一樣,因此被乘數(shù)x要左移一位。以此類推直到乘數(shù)個(gè)位乘完為止,最后將它們統(tǒng)統(tǒng)加起來(lái)便得到最后乘積z。同理,如果被乘數(shù)和乘數(shù)用定點(diǎn)整數(shù)表示,我們也會(huì)得到同樣的結(jié)果。數(shù)值部分的運(yùn)算方法與普通的十進(jìn)制小數(shù)乘法類似,不過(guò)對(duì)于用二進(jìn)制表達(dá)式的數(shù)來(lái)說(shuō),其乘法規(guī)則更為簡(jiǎn)單一些。第62頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

在定點(diǎn)計(jì)算機(jī)中,兩個(gè)原碼表示的數(shù)相乘的運(yùn)算規(guī)則是:乘積的符號(hào)位由兩數(shù)的符號(hào)位按異或運(yùn)算得到,而乘積的數(shù)值部分則是兩個(gè)正數(shù)相乘之積。設(shè)n位被乘數(shù)和乘數(shù)用定點(diǎn)小數(shù)表示被乘數(shù)[x]原=xf.xn-1…x1x0

乘數(shù)[y]原=yf.yn-1…y1y0則兩數(shù)的乘積

[z]原=(xf⊕yf)+

(0.xn-1…x1x0)(0.yn-1…y1y0)

式中,xf為被乘數(shù)符號(hào),yf為乘數(shù)符號(hào)。第63頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

人們習(xí)慣的算法對(duì)機(jī)器并不完全適用。原因之一,機(jī)器通常只有n位長(zhǎng),兩個(gè)n位數(shù)相乘,乘積可能為2n位。原因之二,只有兩個(gè)操作數(shù)相加的加法器難以勝任將n各位積一次相加起來(lái)的運(yùn)算。早期計(jì)算機(jī)中為了簡(jiǎn)化硬件結(jié)構(gòu),采用串行的1位乘法方案,即多次執(zhí)行“加法—移位”操作來(lái)實(shí)現(xiàn)。這種方法并不需要很多器件。然而串行方法畢竟太慢,自從大規(guī)模集成電路問(wèn)世以來(lái),出現(xiàn)了各種形式的流水式陣列乘法器,它們屬于并行乘法器。第64頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.不帶符號(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

在二進(jìn)制乘法中,被乘數(shù)A與乘數(shù)B相乘,產(chǎn)生m+n位乘積P:P=pm+n-1…p1p0乘積P

的數(shù)值為

第65頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

實(shí)現(xiàn)這個(gè)乘法過(guò)程所需要的操作和人們的習(xí)慣方法非常類似:第66頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

上述過(guò)程說(shuō)明了在m位乘n位不帶符號(hào)整數(shù)的陣列乘法中“加法—移位”操作的被加數(shù)矩陣。每一個(gè)部分乘積項(xiàng)(位積)aibj叫做一個(gè)被加數(shù)。這m×n個(gè)被加數(shù)

{aibj|0≤i≤m-1和0≤j≤n-1}可以用m×n個(gè)“與”門并行地產(chǎn)生。由此說(shuō)明設(shè)計(jì)高速并行乘法器的基本問(wèn)題,就在于縮短被加數(shù)矩陣中每列所包含的1的加法時(shí)間。下圖是一個(gè)5×5(m×n)不帶符號(hào)的陣列乘法器的邏輯電路圖:第67頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月第68頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月第69頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

這種乘法器要實(shí)現(xiàn)n位×n位時(shí),需要n(n-1)個(gè)全加器和n2個(gè)“與”門。該乘法器的總的乘法時(shí)間可以估算如下:令Ta為“與門”的傳輸延遲時(shí)間,Tf為全加器(FA)的進(jìn)位傳輸延遲時(shí)間,假定用2級(jí)“與非”邏輯來(lái)實(shí)現(xiàn)FA的進(jìn)位鏈功能,那么我們就有:Ta

Tf

=2T從上圖可知,最壞情況下延遲途徑,即是沿著矩陣最右邊的對(duì)角線和最下面的一行。因而得n位×n位不帶符號(hào)的陣列乘法器總的乘法時(shí)間為:

tm=Ta+(n-1)×6T+(n-1)×Tf

=2T+(n-1)×6T+(n-1)×2T

=(8n-6)T第70頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例16]已知兩個(gè)不帶符號(hào)的二進(jìn)制整數(shù)A

=11011,B

=10101,求每一部分乘積項(xiàng)aibj的值與p9p8……p0的值。[解:]P=p9p8p7p6p5p4p3p2p1p0=1000110111(56710)a4b0=1a3b0=1a2b0=0a1b0=1a0b0=1a4b1=0a3b1=0a2b1=0a1b1=0a0b1=0a4b2=1a3b2=1a2b2=0a1b2=1a0b2=0a4b3=0a3b3=0a2b3=0a1b3=0a0b3=0a4b4=1a3b4=1a2b4=0a1b4=1a0b4=1第71頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月3.帶符號(hào)的陣列乘法器

(1)對(duì)2求補(bǔ)器電路我們先來(lái)看看算術(shù)運(yùn)算部件設(shè)計(jì)中經(jīng)常用到的求補(bǔ)電路。下圖示出一個(gè)具有使能控制的二進(jìn)制對(duì)2求補(bǔ)器電路,其邏輯表達(dá)式如下:

C-1=0,

Ci=ai+Ci-1ai*=ai⊕ECi-1,

0≤i≤n第72頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月第73頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

在對(duì)2求補(bǔ)時(shí),要采用按位掃描技術(shù)來(lái)執(zhí)行所需要的求補(bǔ)操作。令A(yù)=an…a1a0是給定的(n+1)為帶符號(hào)的數(shù),要求確定它的補(bǔ)碼形式。進(jìn)行求補(bǔ)的方法就是從數(shù)的最右端a0開始,由右向左,直到找出第一個(gè)“1”,例如ai=1,0≤i≤n。這樣,ai以左的每一個(gè)輸入位都求反,即1變0,0變1。最右端的起始鏈?zhǔn)捷斎隒-1必須永遠(yuǎn)置成“0”。當(dāng)控制信號(hào)線E為“1”時(shí),啟動(dòng)對(duì)2求補(bǔ)的操作。當(dāng)控制信號(hào)線E為“0”時(shí),輸出將和輸入相等。顯然,我們可以利用符號(hào)位來(lái)作為控制信號(hào)。第74頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月例如,在一個(gè)4位的對(duì)2求補(bǔ)器中,如果輸入數(shù)為1010,那么輸出數(shù)應(yīng)是0110,其中從右算起的第2位,就是所遇到的第一個(gè)“1”的位置。用這種對(duì)2求補(bǔ)器來(lái)轉(zhuǎn)換一個(gè)(n+1)位帶符號(hào)的數(shù),所需的總時(shí)間延遲為

tTC=n·2T+5T=(2n+5)T

其中每個(gè)掃描級(jí)需2T延遲,而5T則是由于“與”門和“異或”門引起的。第75頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月(2)帶符號(hào)的陣列乘法器下圖是(n+1)×(n+1)位帶求補(bǔ)器的陣列乘法器邏輯方框圖。通常,把包括這些求補(bǔ)級(jí)的乘法器又稱為符號(hào)求補(bǔ)的陣列乘法器。在這種邏輯結(jié)構(gòu)中,共使用三個(gè)求補(bǔ)器。其中兩個(gè)算前求補(bǔ)器的作用是:將兩個(gè)操作數(shù)A和B在被不帶符號(hào)的乘法陣列(核心部件)相乘以前,先變成正整數(shù)。而算后求補(bǔ)器的作用則是:當(dāng)兩個(gè)輸入操作數(shù)的符號(hào)不一致時(shí),把運(yùn)算結(jié)果變成帶符號(hào)的數(shù)。第76頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月第77頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

上面所示的帶求補(bǔ)級(jí)的陣列乘法器既適用于原碼乘法,也適用于間接的補(bǔ)碼乘法。不過(guò)在原碼乘法中,算前求補(bǔ)和算后求補(bǔ)都不需要,因?yàn)檩斎霐?shù)據(jù)都是立即可用的。而間接的補(bǔ)碼陣列乘法卻需要增加三個(gè)硬件求補(bǔ)器。為了完成所必需的求與乘法操作,時(shí)間大約比原碼陣列乘法增加1倍。實(shí)際上我們可以看到帶符號(hào)的陣列乘法器其內(nèi)部仍是一個(gè)基本的源碼陣列乘法器,只是對(duì)輸入的補(bǔ)碼數(shù)據(jù)在乘前進(jìn)行了值還原,同時(shí)在乘后再次將乘積數(shù)轉(zhuǎn)換為補(bǔ)碼形式輸出。第78頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月例17]設(shè)x=+15,y=-13,用帶求補(bǔ)器的原碼陣列乘法器求出乘積x·y=?[解:]

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

[x]補(bǔ)=01111[y]補(bǔ)=10011符號(hào)位單獨(dú)考慮,經(jīng)過(guò)算前求補(bǔ)級(jí)后

|x|=1111,|y|=1101第79頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月算后經(jīng)求補(bǔ)級(jí)輸出并加上乘積符號(hào)位1,

乘積的補(bǔ)碼值為100111101。則原碼乘積值為111000011。

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

十進(jìn)制數(shù)驗(yàn)證:x×y=15×(-13)=-195相等。第80頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.3.2補(bǔ)碼乘法

1.補(bǔ)碼與真值的轉(zhuǎn)換公式

補(bǔ)碼乘法因符號(hào)位參與運(yùn)算,可以完成補(bǔ)碼數(shù)的“直接”乘法,而不需要求補(bǔ)級(jí)。這種直接的方法排除了較慢的對(duì)2求補(bǔ)操作,因而大大加速了乘法過(guò)程。首先說(shuō)明與直接的補(bǔ)碼乘法相聯(lián)系數(shù)學(xué)特征。對(duì)于計(jì)算補(bǔ)碼數(shù)的數(shù)值來(lái)說(shuō),一種較好的表示方法是使補(bǔ)碼的位置數(shù)由一個(gè)帶負(fù)權(quán)的符號(hào)和帶正權(quán)的系數(shù)。今考慮一個(gè)定點(diǎn)補(bǔ)碼整數(shù)[N]補(bǔ)=an-1an-2…a1a0,這里an-1是符號(hào)位。根據(jù)[N]補(bǔ)的符號(hào),補(bǔ)碼數(shù)[N]補(bǔ)和真值N的關(guān)系可以表示成:第81頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

n-2

+∑ai2i當(dāng)an-1

=0([N]補(bǔ)為正)

N=

i=0

n-2

-[1+∑(1-ai)2i]當(dāng)an-1

=1([N]補(bǔ)為負(fù))

i=0

如果我們把負(fù)權(quán)因數(shù)-2n-1強(qiáng)加到符號(hào)位an-1上,那么就可以把上述方程組中的兩個(gè)位置表達(dá)式合并成下面的統(tǒng)一形式:

n-2

N

=-an-12n-1+∑ai2i

i=0

n-2

-N

=-(1-an-1)2n-1+∑(1-ai)2i+1

i=0

第82頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.一般化的全加器形式常規(guī)的一位全加器可假定它的3個(gè)輸入和2個(gè)輸出都是正權(quán)。這種加法器通過(guò)把正權(quán)或負(fù)權(quán)加到輸入/輸出端,可以歸納出四類加法單元。如下表,0類全加器沒(méi)有負(fù)權(quán)輸入;1類全加器有1個(gè)負(fù)權(quán)輸入和2個(gè)正權(quán)輸入;依次類推。對(duì)0類、3類全加器而言有:對(duì)1類、2類全加器,則有第83頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月表2.3四類一般化全加器的名稱和邏輯符號(hào)第84頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

注意,0類和3類全加器是用同一對(duì)邏輯方程來(lái)表征的,它和普通的一位全加器(0類)是一致的。這是因?yàn)?類全加器可以簡(jiǎn)單地把0類全加器的所有輸入輸出值全部反向來(lái)得到,反之亦然。1類和2類全加器之間也能建立類似的關(guān)系。由于邏輯表達(dá)式具有兩級(jí)與-或形式,可以用“與或非”門來(lái)實(shí)現(xiàn),延遲時(shí)間為2T。第85頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月3.直接補(bǔ)碼陣列乘法器

利用混合型的全加器就可以構(gòu)成直接補(bǔ)碼數(shù)陣列乘法器。設(shè)被乘數(shù)A和乘數(shù)B是兩個(gè)5位的二進(jìn)制補(bǔ)碼數(shù),即

A=(a4)a3a2a1a0B=(b4)a3a2a1a0它們具有帶負(fù)權(quán)的符號(hào)位a4和b4,并用括號(hào)標(biāo)注。如果我們用括號(hào)來(lái)標(biāo)注負(fù)的被加項(xiàng),例如(aibJ),那么A和B相乘過(guò)程中所包含的操作步驟如下面矩陣所示:第86頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月A

=(a4)

a3

a2

a1

a0

B=×

(b4)

b3

b2

b1

b0

——————————————————————

(a4b0)

a3b0

a1b0

a1b0

a0b0

(a4b1)a3b1a2b1

a1b1

a0b1

(a4b2)a3b2

a2b2

a1b2

a0b2

(a4b3)

a3b3

a2b3

a1b3

a0b3

+)a4b4(a3b4)(a2b4)(a1b4)(a0b4)

P=p9

p8

p7

p6

p5

p4

p3p2

p1

p0第87頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月第88頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月

上圖所示是5位乘5位的直接補(bǔ)碼陣列乘法器邏輯原理,其中使用不同的邏輯符號(hào)來(lái)代表0類、1類、2類、3類全加器。2類和1類全加器具有同樣的結(jié)構(gòu),但是使用不同的邏輯符號(hào)可使乘法陣列的線路圖容易理解。該實(shí)現(xiàn)方式稱為三段陣列乘法器,其中右上角的三角形中只用0類全加器,左上角的三角形只用1類全加器,陣列的最后兩行只用2類全加器。

第89頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月第90頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月其中使用不同的邏輯符號(hào)來(lái)代表0類、1類、2類、3類全加器。2類和1類全加器具有同樣的結(jié)構(gòu),但是使用不同的邏輯符號(hào)可使乘法陣列的線路圖容易理解。在n位乘n位的一般情況下,該乘法器需要(n-2)2個(gè)0類全加器,(n-2)個(gè)1類全加器,(2n-3)個(gè)2類全加器,1個(gè)3類全加器,總共是n(n-1)個(gè)全加器。故所需的總乘法時(shí)間是:

tp=Ta+2(n-1)Tf=2T+(2n-2)2T=(4n-2)T(2.31)第91頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月[例20]

設(shè)[A]補(bǔ)=(01101)2,[B]補(bǔ)=(11011)2,求[A×B]補(bǔ)=?[解:]

(0)1

1

0

1=+13

×)

(1)1

0

1

1=-5

(0)1

1

0

1

(0)1

1

0

1

(0)0

0

0

0

(0)1

1

0

1

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

0(1)0

1

1

1

1

1

1

(1)10

1

1

1

1

1

1=-65

擴(kuò)展符號(hào)位符號(hào)位驗(yàn)證:

-1×27+0×26+1×25+1×24+1×23+1×22+1×21+1×20

=-128+(32+16+8+4+2+1)

=-65

(13)×(-5)=-65第92頁(yè),課件共164頁(yè),創(chuàng)作于2023年2月2.4

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

2.4.

溫馨提示

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