計(jì)算機(jī)基礎(chǔ)-數(shù)據(jù)表示方法_第1頁(yè)
計(jì)算機(jī)基礎(chǔ)-數(shù)據(jù)表示方法_第2頁(yè)
計(jì)算機(jī)基礎(chǔ)-數(shù)據(jù)表示方法_第3頁(yè)
計(jì)算機(jī)基礎(chǔ)-數(shù)據(jù)表示方法_第4頁(yè)
計(jì)算機(jī)基礎(chǔ)-數(shù)據(jù)表示方法_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)表示方法

A2?l數(shù)據(jù)表示方法和運(yùn)算器

A2-2邏輯部件

>2-3控制部件

?\2.1數(shù)據(jù)表示方法和運(yùn)算器

2.±[計(jì)算機(jī)中數(shù)據(jù)的表示方法

當(dāng)前的計(jì)算機(jī)所采用的存儲(chǔ)器件都是兩態(tài)器件,所以適合于存放二

進(jìn)制數(shù)據(jù)。盡管為了方便起見(jiàn),也使用其他進(jìn)制,如十進(jìn)制、十六進(jìn)

制,但是在計(jì)算機(jī)內(nèi)部數(shù)據(jù)還是以二進(jìn)制的形式存放和處理。二進(jìn)制

只使用了兩個(gè)不同的數(shù)字符號(hào),易于用物理器件來(lái)實(shí)現(xiàn):在物理世界

中具有兩個(gè)穩(wěn)定狀態(tài)的物理器件很多,如晶體管的“截止”與“導(dǎo)通

”、電容的“充電”與“放電”、電壓信號(hào)的“高”與“低”、脈沖

的“有”與“無(wú)”,電磁單元的“正向磁化”與“反向磁化”等等,

只要規(guī)定其中一種穩(wěn)定狀態(tài)表示“1”,另一種穩(wěn)定狀態(tài)表示“0”,

就可以用來(lái)表示二進(jìn)制數(shù)位了。其次,二進(jìn)制的運(yùn)算規(guī)則非常簡(jiǎn)單,

易于用電子器件來(lái)實(shí)現(xiàn)。數(shù)據(jù)的類(lèi)型多種多樣,如文件、圖、表、樹(shù)

、陣列、鏈表、棧、向量、串、實(shí)數(shù)、整數(shù)、布爾數(shù)、字符等。計(jì)算

機(jī)里用到的數(shù)據(jù)類(lèi)型主要可分為兩類(lèi):表示數(shù)量的數(shù)值數(shù)批和年數(shù)值

性的符號(hào)數(shù)據(jù)。所有的數(shù)據(jù)都是以二進(jìn)制的形式在計(jì)算機(jī)唾處理和存

儲(chǔ)。本節(jié)主要講述數(shù)值數(shù)據(jù)在計(jì)算機(jī)里的表示方法?!?/

1?數(shù)值數(shù)據(jù)表示方法

在計(jì)算機(jī)中表示數(shù)時(shí),需要考慮以下幾個(gè)因素:要表示

的數(shù)的類(lèi)型(小數(shù)、整數(shù)、實(shí)數(shù)和復(fù)數(shù))、符號(hào)如何表示以及

小數(shù)點(diǎn)的位置;可能遇到的數(shù)值范圍;數(shù)值精確度;數(shù)據(jù)存

儲(chǔ)和處理所需要的硬件代價(jià)。計(jì)算機(jī)中表示數(shù)值符號(hào)的方法

是占用一位二進(jìn)制位,1表示負(fù)號(hào)、0表示正號(hào)。常用的數(shù)值

數(shù)據(jù)表示格式有兩種,根據(jù)小數(shù)點(diǎn)的位置是固定不變還是浮

動(dòng)變化的分為定點(diǎn)格式和浮點(diǎn)格式。一般來(lái)說(shuō),定點(diǎn)格式容

許的數(shù)值范圍有限,但要求的處理硬件比較簡(jiǎn)單。而浮點(diǎn)格

式容許的數(shù)值范圍很大,但要求的處理硬件比較復(fù)雜。

(1)定點(diǎn)數(shù)的表示方法

所謂定點(diǎn)格式,即約定機(jī)器中所有數(shù)據(jù)的小數(shù)點(diǎn)位置是

固定不變的。由于約定在固定的位置,小數(shù)點(diǎn)就不再使用記

號(hào)“.”來(lái)表示。原理上講,小數(shù)點(diǎn)位置固定在哪匕位都可

以,但是通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)?!?/p>

例如用一個(gè)n+1位字來(lái)表示一個(gè)定點(diǎn)數(shù)x,其中一位x0用

來(lái)表示數(shù)的符號(hào),其余位數(shù)代表它的量值。為了將整個(gè)n+1

位統(tǒng)一處理起見(jiàn),符號(hào)位X。放在最左位置,并用數(shù)值0和1

分別代表正號(hào)和負(fù)號(hào),這裸,對(duì)于任意定點(diǎn)數(shù)X=X0X]X2...Xn,

在定點(diǎn)機(jī)中可表示為如下形式:

號(hào)口集數(shù)X表示的是純小數(shù),那么小數(shù)點(diǎn)位于X。和X]之間。當(dāng)

X°X]X2…Xn各位均為0時(shí),數(shù)X的絕對(duì)值最小,當(dāng)各位均為1時(shí),

X的絕對(duì)宿最大,故數(shù)的表示范圍為g|x|<1—2-n

如果數(shù)X表示的是純整數(shù),那么小數(shù)點(diǎn)位于最低位X。的

右邊,此時(shí)數(shù)X的表示范圍為OW|x|<2n-l,目前計(jì)算機(jī)

中多采用定點(diǎn)純整數(shù)表示,因此將定點(diǎn)數(shù)表示的運(yùn)算簡(jiǎn)稱(chēng)

為整數(shù)運(yùn)算。

(2)浮點(diǎn)數(shù)的表示方法

采用浮點(diǎn)表示法表示的數(shù)據(jù)叫做浮點(diǎn)數(shù),采用浮點(diǎn)數(shù)

進(jìn)行運(yùn)算的機(jī)器叫做“浮點(diǎn)機(jī)”。浮點(diǎn)數(shù)是指小數(shù)點(diǎn)位置

可以改變的數(shù),顯然浮點(diǎn)數(shù)可用來(lái)表示帶符號(hào)的實(shí)數(shù)。例

如:表示8位字長(zhǎng)的二進(jìn)制浮點(diǎn)數(shù)可以寫(xiě)成

士0.10110101X2±1U/.

I一尾數(shù)一It階碼.

.任意一個(gè)十進(jìn)制數(shù)N可以寫(xiě)成N=1OZXX,同

樣,在計(jì)算機(jī)中一個(gè)任意進(jìn)制數(shù)N可以寫(xiě)成N=Bz

XX其中X稱(chēng)為浮點(diǎn)數(shù)的尾數(shù),是一個(gè)純小數(shù)。z是

比例因子的指數(shù),稱(chēng)為浮點(diǎn)的指數(shù),是一個(gè)整數(shù)。

比例因子的基數(shù)B是一個(gè)常數(shù),一般規(guī)定只為2,8或

16o在機(jī)器中表示一個(gè)浮點(diǎn)數(shù)時(shí),一是要給出尾數(shù),

用定點(diǎn)小數(shù)形式表示。尾數(shù)部分給出有效數(shù)字的位

數(shù),因而決定了浮點(diǎn)數(shù)的表示精度。二是要給出指

數(shù),用整數(shù)形式表示,常稱(chēng)為階碼,階碼指明小數(shù)

點(diǎn)在數(shù)據(jù)中的位置,因而決定了浮點(diǎn)數(shù)的表示范圍。

浮點(diǎn)數(shù)也要有符號(hào)位。因此一個(gè)機(jī)器浮點(diǎn)數(shù)應(yīng)當(dāng)由

階碼和尾數(shù)及其符號(hào)位組成:,K

Z]Z...Zn/ZX.X,……x.,x

2n%[nn

除符一階碼一數(shù)符一尾數(shù)一

32位浮點(diǎn)數(shù)的標(biāo)準(zhǔn)格式為:

313023220

32位浮點(diǎn)數(shù)F<-Z—><-X—>

64位浮點(diǎn)數(shù)的標(biāo)準(zhǔn)格式為:

不論是32位浮點(diǎn)數(shù)還是64位浮點(diǎn)數(shù),規(guī)定基數(shù)B=2。由于基

數(shù)2是固定常數(shù),不必用顯示方式來(lái)表示它。

32位的浮點(diǎn)數(shù)中,F(xiàn)是浮點(diǎn)數(shù)的符號(hào)位,占1位,安排在最

高位,F(xiàn)=0表示正數(shù),F(xiàn)=1表示負(fù)數(shù)。X是尾數(shù),放在低位部

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

是階碼,占用8位,階符采用隱含方式,即采用移碼方法來(lái)表

示正負(fù)指數(shù)。移碼方法對(duì)兩個(gè)指數(shù)大小的比較和對(duì)階操作都比

較方便,因?yàn)殡A碼域值大者其指數(shù)值也大。采用這種方式時(shí),

將浮點(diǎn)數(shù)的指數(shù)值z(mì)變成階碼Z時(shí),應(yīng)將指數(shù)z加上一個(gè)固定的

偏移值127(01111111),BPZ=z+127o一個(gè)規(guī)格化的32位浮點(diǎn)

數(shù)X的值可表示為X=(—1)FX(1.X)X2ET27

其中尾數(shù)域所表示的值是LXo因?yàn)橐?guī)格化的浮點(diǎn)數(shù)的尾

數(shù)域最左位也即最高有效位總是1,故這一位經(jīng)常不予存儲(chǔ),

而認(rèn)為隱藏在小數(shù)點(diǎn)的左邊。r

64位的浮點(diǎn)數(shù)中符號(hào)位1位,階碼域11位,尾數(shù)域52位,指數(shù)偏移值

*1021因此規(guī)格化的64位浮點(diǎn)數(shù)X的真值為

x=(—1)FX(1.X)X2E—1O23z=E-1023

一^不對(duì)浮點(diǎn)數(shù)的表示作出明確規(guī)定,同一個(gè)浮點(diǎn)數(shù)的表示就不是惟一的。

例如0.5也可以表示成0.05X101,50X10—2等等。為了提高數(shù)據(jù)的表

示精度,當(dāng)尾數(shù)的值不為0時(shí),其絕對(duì)值應(yīng)N0.5,即尾數(shù)域的最高有效

位應(yīng)為1,否則要以修改階碼同時(shí)左右移小數(shù)點(diǎn)的辦法,使其變成這一要

求的表示形式,這稱(chēng)為浮點(diǎn)數(shù)的規(guī)格化表示。

當(dāng)一個(gè)浮點(diǎn)數(shù)的尾數(shù)為0,不論其階碼為何值,或者當(dāng)階碼的值遇到比它能

表示的最小值還小時(shí),不管其尾數(shù)為何值,計(jì)算機(jī)都把該浮點(diǎn)數(shù)看成零

值,稱(chēng)為機(jī)器零。

浮點(diǎn)數(shù)所表示的范圍遠(yuǎn)比定點(diǎn)數(shù)大的多。假設(shè)(考慮符號(hào)位)機(jī)器中

的數(shù)由8位二進(jìn)制數(shù)表示時(shí):在定點(diǎn)機(jī)中這8位全部用來(lái)表示有效數(shù)字(包

括符號(hào));在浮點(diǎn)機(jī)中若階符階碼占3位,數(shù)符尾數(shù)占5位。在此情況下,

若只考慮正數(shù)值,定點(diǎn)機(jī)小數(shù)表示的數(shù)的范圍是0.0000000到

0.1111111,相當(dāng)于十進(jìn)制數(shù)的0到127,而浮點(diǎn)機(jī)所能表示的數(shù)的范圍

是2-UX0.0001至)211X0.1111,相當(dāng)于十進(jìn)制數(shù)的1/128?7.5。顯

然,都用8位,浮點(diǎn)機(jī)能表示的數(shù)的范圍比定點(diǎn)機(jī)大得多。’,

二,臺(tái)計(jì)算機(jī)中究竟采用定點(diǎn)表示還是浮點(diǎn)表示,要根據(jù)計(jì)算

桃的使用條件來(lái)確定。一般在高檔微機(jī)以上的計(jì)算機(jī)中同時(shí)采用

4足點(diǎn)、注點(diǎn)表示,由使用者進(jìn)行選擇。而單片機(jī)中多采用定點(diǎn)表

/JNo

【例2.1】若浮點(diǎn)數(shù)X。的二進(jìn)制存儲(chǔ)格式為(43240000)16,求其

32位浮點(diǎn)數(shù)的十進(jìn)制值。

解:將16進(jìn)制數(shù)展開(kāi)后,可得二制數(shù)格式為

01000011001001000000000000000000

(8位)意數(shù)(23位)

指數(shù)Z=階碼一127=10000110—01111111=00000111=(7)10o

包括隱藏位1的尾數(shù)Lx=l.01001000000000000000000=

1.010010

于是有%

FZ

Xo=(—1)X1.XX2=+(1.010010)X2Z=+10100100

=(187)]0。''一

【例2.2]將十進(jìn)制數(shù)16.59375轉(zhuǎn)換成32位浮點(diǎn)

、數(shù)的二進(jìn)制格式來(lái)存儲(chǔ)。

.解:首先分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)

制數(shù):16.59375=10000.10011移動(dòng)小數(shù)點(diǎn),

使其在第1位和第2位之間

10000.10011=1.000010011X24z=4

所以:

F=0,E=4+127=131,X=000010011

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

01000001100001001100000000000000=

(4184C000)打“

⑶定點(diǎn)數(shù)據(jù)的編碼方法

①、金直與機(jī)器碼

機(jī)器碼是數(shù)在計(jì)算機(jī)中的表示形式。對(duì)于數(shù)值數(shù)據(jù)而言,

無(wú)論以定點(diǎn)形式表示或是以浮點(diǎn)形式表示,都需要通過(guò)某

種編碼方法,以計(jì)算機(jī)所能處理的0和I二進(jìn)制位來(lái)表示

其數(shù)值大小。通常一個(gè)數(shù)值數(shù)據(jù)的機(jī)內(nèi)表示形式稱(chēng)為其機(jī)

器碼,而一個(gè)機(jī)器碼所代表的數(shù)值稱(chēng)為該機(jī)器碼的真值。

計(jì)算機(jī)中只有機(jī)器碼,不存在數(shù)的真值。

假設(shè)機(jī)器碼的寬度為n,最高位為符號(hào)位,下面分別介紹

實(shí)際應(yīng)用中常見(jiàn)的4種機(jī)器碼編碼方法:原碼、反碼、補(bǔ)

碼和移碼。

②原碼表示法

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

定點(diǎn)整數(shù)原碼的定義如下所示:

5^=X0WX<2nT

X-2nT<XW0

?靛義可以看出,正整數(shù)的原碼就是其自身,負(fù)

整數(shù)的原碼只需把其絕對(duì)值的原碼的符號(hào)位置為1即

可。(用0表示正號(hào),用1表示負(fù)號(hào))。原碼表示方法

的定點(diǎn)整數(shù)的取值范圍為一QnT—)SXS2nT—1。

注意在原碼表示法中,零有正零和負(fù)零之分。[+0]=

0000...0,[―0]=1000…0。

定點(diǎn)小數(shù)的原碼表示法「

定點(diǎn)小數(shù)原例的定'義如下所示:

[X]原=X0<X<l

[X]原=1—X-l<x<o:一,

滅的純小數(shù)的原碼就是其自身,而負(fù)的純小數(shù)的原碼

冰以逋過(guò)把其絕對(duì)值的原碼的符號(hào)位置1來(lái)得到。其取

'值范圍為一(1—2-(nT))SXS(l—2-(n-1))。綜上可以看出

一個(gè)數(shù)的原碼是由符號(hào)位加上數(shù)值位絕對(duì)值組成,符號(hào)

位為0代表正數(shù),符號(hào)位為1代表負(fù)數(shù)。由于0有+0和一

0兩種表示方法,n位二進(jìn)制數(shù)可以表示2n—1個(gè)原碼。

用原碼實(shí)現(xiàn)乘除運(yùn)算規(guī)則較簡(jiǎn)單,但做加減運(yùn)算不方

便。原碼表示法的一個(gè)主要優(yōu)點(diǎn)在于其真值和機(jī)器碼表

示之間對(duì)應(yīng)關(guān)系很直觀,容易轉(zhuǎn)換。

③補(bǔ)碼表示法

定點(diǎn)整數(shù)的補(bǔ)碼表示

定點(diǎn)整數(shù)補(bǔ)碼的定義如下所示:3F

兇補(bǔ)=xO0X<2nT-,

[X]補(bǔ)=2n+X-2n-l<X<0

正整數(shù)的補(bǔ)碼就是其自身,負(fù)整數(shù)的補(bǔ)碼可以通過(guò)對(duì)

焉色對(duì)值部分逐位求反,并在最低位加1求得。同樣,

b在補(bǔ)碼表示法中,符號(hào)位為0表示正號(hào),為1表示負(fù)號(hào)。I

其表示的真值X的范圍為一2nTWXW2nT—1。在補(bǔ)碼

表示中,0的機(jī)器碼是惟一的,沒(méi)有+0和一o之分。

定點(diǎn)小數(shù)的補(bǔ)碼表示

定點(diǎn)小數(shù)補(bǔ)碼的定義如下所示:

兇補(bǔ)=X0<X<l

[X]補(bǔ)=2+X-1<X<O

定點(diǎn)小數(shù)的補(bǔ)碼求解方法與定點(diǎn)整數(shù)的補(bǔ)碼求解方法相

類(lèi)似。其表示的真值X的范圍為一1WXW1—25-1)。當(dāng)n

=8時(shí),一1的定點(diǎn)小數(shù)補(bǔ)碼表示為:10000000,而用定

點(diǎn)整數(shù)的補(bǔ)碼表示一1,則為11111111。

在補(bǔ)碼表示方法中,。的編碼是惟一的,所以n稀二說(shuō)

制數(shù)可以表示2n個(gè)補(bǔ)碼。,一一

③反碼表示法

定直整數(shù)的反碼表示

定點(diǎn)整鎏反碼的定義如下所示:

[乂]反=X0<X<2n-1

[X]反=(211—1)+X-2n-1<X<0

同樣,正整數(shù)的反碼就是其自身,而負(fù)整數(shù)的反碼可

以通過(guò)對(duì)其絕對(duì)值逐位求反來(lái)求得。在反碼表示法中

,符號(hào)位仍然用0表示正號(hào),1表示負(fù)號(hào)。其表示的真

值范圍與原碼相同:一(2廣i—l)SXW2n-i—l。數(shù)值0

用反碼表示亦有+0和一0之分。當(dāng)n=8時(shí),[+0]反=

00000000,[—0]反=11111111。

定點(diǎn)小數(shù)的反碼表示

定點(diǎn)小數(shù)反碼的定義如下所示:

兇反=X0<X<l,

[X]反=(2—2-n+i)+x-1<X<O

定雙小數(shù)的反碼求解方法類(lèi)似定點(diǎn)整數(shù)的反碼求解方法。其表

小為真值的取值范圍為:一(1—2-(n-1))WXW(1—2-(n-l))。反碼

表示法中,由于0占有了兩個(gè)不同的編碼,所以,n位二進(jìn)制數(shù)

可以表示2廣1個(gè)反碼。

④移碼表示法

定點(diǎn)整數(shù)的移碼表示

[X]移=2nT+X—241<X<2n-1

定點(diǎn)小數(shù)的移碼表示

[X]移=1+X-1<X<1

移碼的符號(hào)位與其他三種編碼不同,用1表示正號(hào)而0表示負(fù)號(hào)。

移碼的求法其實(shí)也很簡(jiǎn)單,把其補(bǔ)碼的符號(hào)位直接變反即可。

所以在移碼表示法中,0也有惟一的表示方法:10000000(n=8)

【例2.3]設(shè)機(jī)器碼長(zhǎng)度為8,求X=(—6)10的原碼、林碼、/

反碼和移碼。?

解::[X]原碼=27-(-110)=10000000+110=10000110

[X]補(bǔ)碼=28+(—110)=10000000—110=11111010

[X]反碼=(28—1)+(-110)=11111111—110=

11111001

[X]移碼=27+(—110)=10000000+110=01111010

【例2.4]設(shè)機(jī)器碼長(zhǎng)度為8,求X=(-0.3125)10

=(-0.0101)2的原碼、補(bǔ)碼、反碼和移碼。

解:[X]原碼=1-X=L0-(-0.0101)=1.0101=

10101000

[X]補(bǔ)碼=2+X=10.0+(-0.0101)=1.1011=

11011000

—7

[X]反碼=(2—2)+X=(10.0-0.0000001)+(-

0.0101)=11010111

[X]移碼=1+X=l.0+(-0.0101)=0.1011=

01011000.

實(shí)際上求某個(gè)數(shù)的原碼、補(bǔ)碼、反碼和移碼時(shí)不僅可以

利用其定義式采求解,也可以通過(guò)這4個(gè)編碼間的相

工關(guān)系來(lái)求得。比如移碼就可以通過(guò)把補(bǔ)碼的符號(hào)位

變反來(lái)求,而對(duì)于正數(shù)來(lái)講其原碼、補(bǔ)碼和反碼是完

全相同的;一個(gè)負(fù)數(shù)的補(bǔ)碼也可以很容易地從其原碼

推知:除符號(hào)位外,各位取反,末位再加1即可。

(4)浮點(diǎn)數(shù)據(jù)的編碼方法

計(jì)算機(jī)內(nèi)部浮點(diǎn)數(shù)據(jù)表示成如下形式:

FYZX

Fx是尾數(shù)的符號(hào)位,0表示正號(hào)而1表示負(fù)號(hào);Z是階碼,通常

用移碼表示;X是定點(diǎn)小數(shù)形式的尾數(shù),一般用補(bǔ)碼或原碼表示,

'[例2、5]某浮點(diǎn)數(shù)機(jī)器碼10位,基數(shù)為2,階碼用4位移碼表示,

尾數(shù)5位用補(bǔ)碼表示,符號(hào)位1位。求21。義0.1101的編碼。

解:,(

符號(hào)位Fx=0

階碼Z=(10)移碼=1010

尾數(shù)X=(0.1101)補(bǔ)碼=11010

則其編碼為0101011010

【例2.6]某浮點(diǎn)數(shù)機(jī)器碼為17位,基數(shù)為2,階碼用4位移碼

表示,尾數(shù)用12位補(bǔ)碼表示,符號(hào)位1位。求一2.75的浮點(diǎn)編碼

形式。

解:首先把-2.75表示成浮點(diǎn)形式:

(10

(-2.75)10=(-0.6875X22)]0=(—0.1O11)2X2^

rFx=1]

Z=(10)爬=1010

Xf(IN1o11)補(bǔ)碼=010100000000

N編碼為11010010100000000

,同一個(gè)浮點(diǎn)數(shù)可以有許多種不同的編碼表示(改變其階碼),所以需要對(duì)浮點(diǎn)

數(shù)進(jìn)行規(guī)格化處理,以統(tǒng)一其形式,同時(shí)提高數(shù)據(jù)的表示精度。

規(guī)格化處理(基數(shù)為2)

①尾數(shù)部分以純小數(shù)形式表示,其絕對(duì)值應(yīng)滿(mǎn)足0.5<|X|<lo若不滿(mǎn)足該條

件,則需要修改階碼并對(duì)尾數(shù)進(jìn)行移位,以使尾數(shù)滿(mǎn)足該條件;

②當(dāng)尾數(shù)為正時(shí),無(wú)論其使用原碼還是補(bǔ)碼表示,X應(yīng)滿(mǎn)足條件:0.5WX<1

以二進(jìn)制形式表示為X=0.Ixx...x(x為0或1);

③用原碼表示的負(fù)尾數(shù),X滿(mǎn)足一l<xs—0.5,以二進(jìn)制形式表示為M=l.1

xx...x(x為0或1);

④以補(bǔ)碼表示的負(fù)尾數(shù),X滿(mǎn)足-—0.5,以二進(jìn)制形式表示為X=

1.Oxx...x(x為0或1);

從上面的討論可以看出,如果規(guī)格化的尾數(shù)用原碼表示,則其最高位一定為1

如果改用補(bǔ)碼表示,則尾數(shù)的最高位與其符號(hào)位相反,即為0。,4,

2.符號(hào)數(shù)據(jù)的表示方法

‘現(xiàn)代計(jì)算機(jī)不僅處理數(shù)值領(lǐng)域的問(wèn)題,而且處理大量非數(shù)值領(lǐng)域的問(wèn)題。這

、樣r,必然要引入文字、字母以及某些專(zhuān)用符號(hào),以便表示文字語(yǔ)言、邏

輯語(yǔ)言管信息。例如人機(jī)交換信息時(shí)使用英文字母、標(biāo)點(diǎn)符號(hào)、十進(jìn)制數(shù)以

及諸如$,%,+等符號(hào)。然而數(shù)字計(jì)算機(jī)只能處理二進(jìn)制數(shù)據(jù),因此,上述

信息應(yīng)用到計(jì)算機(jī)中時(shí),都必須編寫(xiě)成二進(jìn)制格式的代碼,也就是字符信息

用數(shù)據(jù)表示,稱(chēng)為符號(hào)數(shù)據(jù)。最常見(jiàn)的編碼格式為ASCH碼和EBCDIC碼。

(1)ASCII碼

目前國(guó)際上普遍采用的一種字符系統(tǒng)是七單位的ASCII碼(美國(guó)國(guó)家信息交換標(biāo)準(zhǔn)

字符碼),它包括10個(gè)十進(jìn)制數(shù)碼,26個(gè)英文字母和一定數(shù)量的專(zhuān)用符號(hào),如$,

%,+,=等,總共128個(gè)元素,因此二進(jìn)制編碼需要7位,加上一個(gè)偶校驗(yàn)

位,共8位,剛好為一個(gè)字節(jié)。表2—1列出了七單位的ASCII碼字符編碼表。

ASCII碼規(guī)定8個(gè)二進(jìn)制位的最高一位為0,余下的7位可以給出128個(gè)編碼,

表示128個(gè)不同的字符。其中95個(gè)編碼,對(duì)應(yīng)著計(jì)算機(jī)終端能輸人并且可以顯

示的95個(gè)字符,打印機(jī)設(shè)備也能打印這95個(gè)字符,如大小寫(xiě)各26個(gè)英文字母,

0?9這10個(gè)數(shù)字符,通用的運(yùn)算符和標(biāo)點(diǎn)符號(hào)+,一,*,\,>,=,〈等等,

另外的33個(gè)字符,其編碼值為0?31和127,則不對(duì)應(yīng)任何一個(gè)可以顯示或打印

的實(shí)際字符,它們被用作控制碼,控制計(jì)算機(jī)某些外圍設(shè)備的工作特性和物

些計(jì)算機(jī)軟件的運(yùn)行情況。.一/

ra算機(jī)里的存儲(chǔ)和傳送單位通常使用Byte(lByte=8bit),所以

7位的ASCII碼也用一個(gè)字節(jié)來(lái)表示。ASCII編碼和128個(gè)字符的對(duì)

應(yīng)關(guān)系如表2.1所示。表中編碼符號(hào)的排列次序?yàn)閎7b6b5b4

b3b2b1b0,最高1位沒(méi)有使用,通常填0;也可以把它用作校

驗(yàn)位或者用某擴(kuò)展字符集。表中未給出,列b6b5b4為高位部

分,行b3b2b1b0為低位部分。ASCII的字符編碼表一共有24

=16行,23=8列。低4位編碼b3b2b1b0用作行編碼,而b6

b5b4高3位用作列編碼。值得注意的一點(diǎn)是數(shù)字“0”到“9”的

編碼:

它們都位于3列(011),從0行(0000)排列到9行(1001),即“0”的

ASCII碼為(0H0000)2=(30)i6,"9"的ASCII碼為(0111001)2=

(3汕6。/

把高3位屏蔽掉,低4位恰是“0”?“9”的二進(jìn)制碼??梢栽俪觯?/p>

十進(jìn).,

制的8421碼可以去掉b6b5b式=011)而得到。這個(gè)特點(diǎn)庵得在/

數(shù)字符號(hào)(ASCII碼)與數(shù)字值(二進(jìn)制碼)之間進(jìn)行轉(zhuǎn)換非常方便。

表2—1ASCH字符編碼表

000001010Oil1001011101

0000NUL,DELSP@pp

0001SOHDC1i1AQaq

0010STXDC2//2BRbr

0011ETXDC3#3CScs

0100EOTDC4$4DTdt

0101ENQNAK%5EUeu

0110ACKSYN&6FVfV

________________

0111DELETB7GWgV

1000BSCAN(8HXhX

1001HTEM)9IYiy

1010LFSUB*JZjz

T-

1011VTESC+,K[k

1100FFFS<L\

?7

■m

1101CRGS—M]

L___________

^

1110SORS>Nn

,

1111SIUS/90__0E

字容串南旨連續(xù)的一串字符,通常方式下,它們占用主存中連

續(xù)的多個(gè)字節(jié),每個(gè)字節(jié)存一個(gè)字符。當(dāng)主存字由2個(gè)或4個(gè)字

節(jié)組成時(shí),在同一個(gè)主存字中,既可按從低位字節(jié)向高位字節(jié)

的順序存放字符串內(nèi)容,也可按從高位字節(jié)向低位字節(jié)的次序

順序存放字符串內(nèi)容。這兩種存放方式都是常用方式,不同的

計(jì)算機(jī)可以選用其中任何一種。例如下述字符串:_______

圖2-1字符串在主存中的存放

、IF-A>B-ELSE-READ(C)」就可以按圖

2二1所示從高位字節(jié)到低位字節(jié)依次存放在主存中。其中主

存單元長(zhǎng)度由4個(gè)字節(jié)組成。每個(gè)字節(jié)中存放相應(yīng)字符的

ASCII值,文字表達(dá)式中的空格“一”在主存中也占一個(gè)

字節(jié)的位置。因而每個(gè)字節(jié)分別存放十進(jìn)制的73,70,32,

65,62,66,32,69,76,83,69,32,82,69,65,68,

40,67,41,32o

(2)EBCDIC碼

EBCDIC(ExtendedBinaryCodedDecimalInterchangeCode)即所

謂擴(kuò)展的二/十進(jìn)制交換碼。采用8bit編碼來(lái)表示一個(gè)字符,

共可以表示28=256個(gè)不同符號(hào),但EBCDIC中并沒(méi)有使用全

部編碼,只選用了其中一部分,剩下的保留作擴(kuò)充用。

EBCDIC碼常用于IBM大型機(jī)中。在EBCDIC碼制中,數(shù)字

“0”?“9”的高4位編碼都是1111,而低4位編碼則依次為

0000到1001。把高四位屏蔽掉,也很容易實(shí)現(xiàn)從EBCDIC碼

到二進(jìn)制數(shù)字值的轉(zhuǎn)換。「'

3.W學(xué)的表示方法

\(1漢字的輸入編碼

為工能直接使用西文標(biāo)準(zhǔn)鍵盤(pán)把漢字輸入到計(jì)算機(jī),就必須為

漢字設(shè)并相應(yīng)的輸入編碼方法。當(dāng)前采用的方法主要有以下三

類(lèi):

數(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è)漢字需按鍵四次。例如“中”字位于第54區(qū)48位,

區(qū)位碼為5448。

數(shù)字編碼輸入的優(yōu)點(diǎn)是無(wú)重碼,且輸入碼與內(nèi)部編碼的轉(zhuǎn)換比

較方便,缺點(diǎn)是代碼難以記憶。,

拼音碼拼音碼是以漢語(yǔ)拼音為基礎(chǔ)的輸入方法。凡學(xué)垂?jié)h

語(yǔ)拼音的人,不需訓(xùn)練和記憶,即可使用。但漢字同音器太

多,輸入重碼率很高,因此按拼音輸入后還必須進(jìn)代同音字選

擇,影響了輸入速度。—

國(guó)形編碼字形編碼是用漢字的形狀來(lái)進(jìn)行的編碼。漢字總數(shù)雖多,但

是由一筆廠(chǎng)一劃組成,全部漢字的部件和筆劃是有限的。因此,把漢字

的筆戈1部件用字母或數(shù)字進(jìn)行編碼,按筆劃的順序依次輸入,就能表示

一個(gè)漢字。例如五筆字型編碼是最有影響的一種字形編碼方法。

除了上述三種編碼方法之外,為了加快輸入速度,在上述方法基礎(chǔ)上,

發(fā)展了詞組輸入、聯(lián)想輸入等多種快速輸入方法。但是都利用了鍵盤(pán)

進(jìn)行“手動(dòng)”輸入。理想的輸入方式是利用語(yǔ)音或圖像識(shí)別技術(shù)“自動(dòng)”

將拼音或文本輸入到計(jì)算機(jī)內(nèi),使計(jì)算機(jī)能認(rèn)識(shí)漢字,聽(tīng)懂漢語(yǔ),并將

其自動(dòng)轉(zhuǎn)換為機(jī)內(nèi)代碼表示。目前這種理想已經(jīng)成為現(xiàn)實(shí)。

(2)漢字的存儲(chǔ)(漢字內(nèi)碼)

漢字內(nèi)碼是用于漢字信息的存儲(chǔ)、交換、檢索等操作的機(jī)內(nèi)代碼,一般

采用兩個(gè)字節(jié)表示。英文字符的機(jī)內(nèi)代碼是七位的ASCH碼,當(dāng)用一個(gè)字

節(jié)表示時(shí),最高位為“0”。為了與英文字符能相互區(qū)別,漢字機(jī)內(nèi)代碼

中兩個(gè)字節(jié)的最高位均規(guī)定為“1”。例如漢字操作系統(tǒng)CCD0S中使用的

漢字內(nèi)碼是一種最高位為“1”的兩字節(jié)內(nèi)碼。

有些系統(tǒng)中字節(jié)的最高位用于奇偶校驗(yàn)位,這種情況下用三個(gè)字節(jié)表示

漢字內(nèi)碼?!?,/

(3)漢字的輸出(漢字字模碼)

、字模碼是用點(diǎn)陣表示的漢字字形代碼,它是漢字的輸

?出彤據(jù)漢字輸出的要求不同,點(diǎn)陣的多少也不同。

簡(jiǎn)易型漢字為16X16點(diǎn)陣,提高型漢字為24X24點(diǎn)陣、

32X32點(diǎn)陣,甚至更高。因此字模點(diǎn)陣的信息量是很大的,

所占存儲(chǔ)空間也很大。以16X16點(diǎn)陣為例,每個(gè)漢字要

占用32個(gè)字節(jié),國(guó)標(biāo)兩級(jí)漢字要占用256K字節(jié)。因此字模

點(diǎn)陣只能用來(lái)構(gòu)成漢字庫(kù),而不能用于機(jī)內(nèi)存儲(chǔ)。字庫(kù)中

存儲(chǔ)了每個(gè)漢字的點(diǎn)陣代碼。當(dāng)顯示輸出或打印輸出時(shí)才

檢索字庫(kù),輸出字模點(diǎn)陣,得到字形。圖2—2示出了“大”

字的點(diǎn)陣及編碼。注意,漢字的輸入編碼、漢字內(nèi)碼、字

模碼是計(jì)算機(jī)中用于輸入、內(nèi)部處理、輸出三種不嗅途

的編碼,不要混為一談。.??等,/

圖2—2漢字的字模點(diǎn)陣及編碼

4?校驗(yàn)碼

元件故褲、噪聲干擾等各種因素常常導(dǎo)致計(jì)算機(jī)在處理信息過(guò)程中出現(xiàn)

錯(cuò)誤。例如將1位x從部件A傳送到部件B,可能由于傳送信道中的噪聲干

擾而受到破壞,以至于在接收部件B收到的是而不是X。為了防止這種錯(cuò)

誤,可將信號(hào)采用專(zhuān)門(mén)的邏輯線(xiàn)路進(jìn)行編碼以檢測(cè)錯(cuò)誤,甚至校正錯(cuò)誤

通常的方法是,在每個(gè)字上添加一些校驗(yàn)位,用來(lái)確定字中出現(xiàn)錯(cuò)誤的

位置。計(jì)算機(jī)中常用這種檢錯(cuò)或糾錯(cuò)技術(shù)進(jìn)行存儲(chǔ)器讀寫(xiě)正確性或傳輸

信息的檢驗(yàn)。這里僅介紹檢錯(cuò)碼中的奇偶校驗(yàn)碼。

最簡(jiǎn)單且應(yīng)用廣泛的檢錯(cuò)碼是采用一位校驗(yàn)位的奇校驗(yàn)或偶校驗(yàn)。設(shè)X=(x°

X1...Xnj)是一個(gè)n位字,則奇校驗(yàn)位定義為C=xox1...xn_1

式中十代表按位加,表明只有當(dāng)X中包含有奇數(shù)個(gè)1時(shí),才能使=1,即C=

Oo

同理,偶校驗(yàn)位C定義為C=X0X]…Xn」即X中包含偶數(shù)個(gè)1時(shí),才使C=0。

假設(shè)一個(gè)字X從部件A傳送到部件B。在源點(diǎn)A,校驗(yàn)位C可用上面公式算

出來(lái),并合在一起將(x°xi…x31C)送到B。假設(shè)在B點(diǎn)真正接收到的是

X=(xox\...xn,C1),然后計(jì)算F=(x0x\...xnlC'M:F=1,意

味著收到島信息看錯(cuò),例如(X。X]…x,)中正巧有一也變“反”時(shí)就會(huì)

出現(xiàn)這種情況。若F=0,表明X字傳邃正確。奇偶校驗(yàn)可提供單,個(gè)錯(cuò)誤

檢測(cè),但無(wú)法檢測(cè)多個(gè)錯(cuò)誤,更無(wú)法識(shí)別錯(cuò)誤信息的位置。>J

【例2.7]已知下表中左面一欄有5個(gè)字節(jié)

而數(shù)據(jù)。請(qǐng)分別是用奇校驗(yàn)和偶校驗(yàn)進(jìn)行編碼,

填在中間一欄和右面一欄。

解:假定最低一位為校驗(yàn)位,其余高8位為

數(shù)據(jù)位,列表如下。從中看出,校驗(yàn)位的值取。

還星取是由數(shù)據(jù)位中1的個(gè)數(shù)決定的一

IWI偶校驗(yàn)編碼I奇校驗(yàn)編碼I

10101010101010100101010101

01010100010101001010101000

00000000000000000000000001

01111111011111111011111110

11111111111111110111111111'

2.1.2計(jì)算機(jī)中算術(shù)運(yùn)算和邏輯運(yùn)算

卜三進(jìn)例數(shù)的算術(shù)運(yùn)算

(1)定點(diǎn)數(shù)運(yùn)算

①定點(diǎn)數(shù)加法/減法運(yùn)算

定點(diǎn)數(shù)的加法和減法運(yùn)算使用補(bǔ)碼較為方便。對(duì)于定點(diǎn)小數(shù)

的運(yùn)算規(guī)則如下:

加法:良+丫[補(bǔ)={[X]補(bǔ)+[y]補(bǔ)}mod2

減法:[X—丫]補(bǔ)={[X]補(bǔ)+[―y]補(bǔ)}mod2

當(dāng)運(yùn)算結(jié)果超過(guò)了定點(diǎn)數(shù)的表示范圍時(shí),則產(chǎn)生溢出

(Overflow),常用的溢出檢測(cè)機(jī)制主要有以下兩種:

進(jìn)位判決法:

令C-]表示次高位(最高數(shù)值位)向最高位(符號(hào)位)的也

位,加則表示符號(hào)位的進(jìn)位,則結(jié)果是否溢出的判決表加

表2—2所示,即1=1時(shí)溢出。這里,表示異或廣

表2—2溢出的判決表

CnOverflow=CnCn_1

00無(wú)溢出

01

10

1無(wú)溢出

【例2,.8]X=(100)=(01100100),,Y=(50)=(00110010),,

JiLUn乙JiLUn乙

求3+Y。4

解:,[X]補(bǔ)=01100100,[y]補(bǔ)=00110010

N[X+Y*=[X]補(bǔ)+[y]補(bǔ)=10010110

CC1=1,表示結(jié)果溢出。

【例2.9]X=(-100)10—(-01100100)2,Y=(—5O)]o=(一

00110010),,求X—Y。

解:[X]補(bǔ)=10011100,[—y]補(bǔ)=00110010

[X—丫]補(bǔ)=[幻補(bǔ)+[—Y]補(bǔ)=11001110

CnCn-i=0,因此沒(méi)有溢出。

雙符號(hào)位判決法:

采用兩位二進(jìn)制位來(lái)表示符號(hào)位:00?正號(hào),11?負(fù)號(hào),根據(jù)運(yùn)

算結(jié)果的符號(hào)位也可以判定其是否溢出,其判決表如表2“3所親。

表2—3雙符號(hào)位判決表

運(yùn)算結(jié)果的Overflow運(yùn)算結(jié)果的符Overflow

符號(hào)位號(hào)位

0010

0111J無(wú)溢出

【例2.10]X=(1OO)1O=(O11OO1OO)2,Y=(5O)]o=(OOl10010)2,

'求XCY1

[X]#=001100100[Y]補(bǔ)=000110010

[X+Y];=[X]#+[y]#=010010110

其符號(hào)位為01,說(shuō)明結(jié)果溢出。

②定點(diǎn)數(shù)乘法運(yùn)算

在作定點(diǎn)數(shù)的乘法運(yùn)算時(shí)采用原碼比較方便。通常使用原碼一

位乘法來(lái)求兩個(gè)定點(diǎn)數(shù)的乘積。

運(yùn)算規(guī)則:

乘積的符號(hào)位等于乘數(shù)和被乘數(shù)的符號(hào)位進(jìn)行異或;

乘積的值等于兩數(shù)絕對(duì)值之積,即乘數(shù)和被乘數(shù)的絕對(duì)值進(jìn)行

移彳立相加。/

算法:(用絕對(duì)值進(jìn)行運(yùn)算)二

令X表示被乘數(shù),Y表示乘數(shù),P表示部分積以點(diǎn)放中佝結(jié)

果,flag用作列別位,count用作計(jì)數(shù)。/

令^=0;count=0;flag=0;

p和Y一起右移一位(P為高位部分,Y為低位部分),

右移時(shí)P的最高位補(bǔ)0,P的最低位移入Y的最高位,

Y的最低位移入到flag中;

如果flag=l同P=P+X,否則P不變;

count=count+1,如果count超過(guò)Y的位數(shù)則運(yùn)算停

止,否則轉(zhuǎn)到上述第2步繼續(xù)執(zhí)行;

P和Y的內(nèi)容就是所求乘積的絕對(duì)值,其中P存放積

的高位,而Y存放積的低位。

【例2.11]X=(10)10=(1010)2,Y=(-6)10=(-

0110)2,求X,Yo

解:「

[|X|]jg=1010,[|Y|]原=0110'

乘積的符號(hào)位S=01=1。4

t'一表2—4定點(diǎn)數(shù)乘法運(yùn)算表

熱什動(dòng)比二

部分積p乘數(shù)Y別位counter

Flag

0000011000

0000001101

0000000112

P+X1010

右移0101000013

P+X1111

0111100004

__r________

001111000一5,

則所.得乘積為(一oounoo)2=(—GO)]。

③麓點(diǎn)數(shù)除法運(yùn)算

定點(diǎn)數(shù)的除法通常也常用原碼進(jìn)行。下面介紹常用的加減交替法求兩

個(gè)數(shù)X和Y的商。運(yùn)算規(guī)則:

商的符號(hào)位同定點(diǎn)數(shù)原碼乘法的處理方法,由兩數(shù)的符號(hào)位進(jìn)行異或;

兩數(shù)的絕對(duì)值部分進(jìn)行相除;

算法:(求X/Y,設(shè)X、Y的數(shù)值部分長(zhǎng)度為N)

令及R=X,counter=0;

R=R-Y;若R為正則商1,否則商0;

R左移一位,counter=counter+1;

若上一次商為^l」R=R—Y,否則R=R+Y;j

R為正則商1,否則商0;」.'

若R=0或者counterNN則結(jié)束,否則轉(zhuǎn)到上述第3步執(zhí)行。

(2)浮點(diǎn)數(shù)運(yùn)算

在進(jìn)行浮點(diǎn)運(yùn)算之前,應(yīng)先對(duì)浮點(diǎn)數(shù)進(jìn)行規(guī)格化。

①浮點(diǎn)數(shù)的加減運(yùn)算

設(shè)有浮點(diǎn)數(shù)X=M2,Y=N-2J,求X+Y或X—Y,其運(yùn)算過(guò)

程如下:

對(duì)階:使兩個(gè)數(shù)的階碼相同?!頚=|i-j|,把階碼小的

數(shù)的尾數(shù)右移K位,其階碼加上K。當(dāng)右移尾數(shù)時(shí),若尾數(shù)

用補(bǔ)碼表示則符號(hào)位參加移位,符號(hào)位不變,如果是原碼,

則符號(hào)位不參加移位,尾數(shù)的最高位補(bǔ)0。

尾數(shù)進(jìn)行加、減運(yùn)算:

規(guī)格化處理:若尾數(shù)所得結(jié)果不是規(guī)格化的數(shù),則需對(duì)

其進(jìn)行規(guī)格化處理。當(dāng)尾數(shù)溢出時(shí),尾數(shù)向右規(guī)格化位,

階碼加1;當(dāng)尾數(shù)用補(bǔ)碼表示,尾數(shù)的最高位與符號(hào)位相同

時(shí),應(yīng)向左規(guī)格化,尾數(shù)每向左移一位,階碼減L直到,尾

數(shù)最高位與符號(hào)位相反?!?一

IIIIIriiii

舍入操作:舍入的方法常用0舍1入,即當(dāng)向右規(guī)格化時(shí),若

移掉的最高位為1,則在尾數(shù)末位加1,否則舍去。另一種則是

“恒1”法,即不管移走的數(shù)據(jù)為何值,尾數(shù)最末位恒置1。

溢出判斷:以階碼為準(zhǔn)。若階碼上溢,則結(jié)果溢出;若階碼

下溢,則結(jié)果為0;否則結(jié)果正確無(wú)溢出。

②浮點(diǎn)數(shù)的乘除運(yùn)算

浮點(diǎn)數(shù)相乘,其積的階碼為兩數(shù)階碼相加,積的尾數(shù)為兩

尾數(shù)相乘。浮點(diǎn)數(shù)相除,其商的階碼為兩數(shù)階碼之差,商的尾

數(shù)為兩尾數(shù)相除。其結(jié)果都需要進(jìn)行規(guī)格化處理,同時(shí)還需要

判斷其階碼是否溢出。

2.邏輯代數(shù)及邏輯運(yùn)算

邏輯代數(shù)是1849年英國(guó)數(shù)學(xué)家喬治?布爾提出的以代數(shù)的方

式對(duì)邏輯變量進(jìn)行描述和分析的數(shù)學(xué)工具,又稱(chēng)布爾代數(shù)。邏

輯變量的取值只有“真”和“假”,通常以1和o表示/

(1)基本的邏輯運(yùn)算

、①'與"(AND)運(yùn)算

又稱(chēng)為邏輯乘運(yùn)算,其運(yùn)算符號(hào)通常用AND、n、八或?等

表示。兩個(gè)變量的“與”運(yùn)算的運(yùn)算規(guī)則如表2—4所示。即

當(dāng)A、B中任一變量取0值時(shí),其運(yùn)算結(jié)果為0。

表2.5“與”運(yùn)算表表2.6“或”運(yùn)

②.“或4(OR)運(yùn)算

'又稱(chēng)為邏輯加運(yùn)算,其運(yùn)算符號(hào)為OR、U、V或+

等。兩個(gè)變量的“或”運(yùn)算規(guī)則如表2—5所示。即當(dāng)

A、B中任意一個(gè)取1值時(shí),其運(yùn)算結(jié)果為1。

③“非"(NOT)運(yùn)算

又稱(chēng)為邏輯求反運(yùn)算。常用表示對(duì)變量A進(jìn)行求反。

其運(yùn)算規(guī)則很簡(jiǎn)單:=0,

=1O

④“異或”運(yùn)算

常用的還有“異或”運(yùn)算,又稱(chēng)為半加運(yùn)算,其運(yùn)

算符號(hào)為XOR或。異或運(yùn)算是一種復(fù)合邏輯運(yùn)算,

可用上述基本邏輯運(yùn)算表示如下:

A十B=A?B+A?B./

,2.2邏輯部件

2.2.1寄存器

1.寄存器組(registerblock)概述

CPU中的寄存器通常可以、分料糞:用戶(hù)可見(jiàn)的寄存器(user-

visibleregisters)和狀態(tài)控制寄存器(controlandstatusregisters)o

⑴用戶(hù)可見(jiàn)的寄存器

用戶(hù)能夠通過(guò)機(jī)器語(yǔ)言來(lái)訪(fǎng)問(wèn)這些寄存器。合理優(yōu)化地使用這

些寄存器可以減少對(duì)主存的訪(fǎng)問(wèn)次數(shù),從而提高程序的執(zhí)行

速度。按其功能可以分為4類(lèi):

①通用寄存器(generalpurposeregister)

通用寄存器的用途由程序員編程決定,例如可以用來(lái)存放操作

數(shù),也可以用作尋址寄存器。,

②數(shù)據(jù)寄存器(dataregister)/-

數(shù)據(jù)寄存器僅能用來(lái)存放數(shù)據(jù)而不能用來(lái)對(duì)操作數(shù)的地址進(jìn)行

計(jì)算。,?

③地址寄存器(addressregister)

商需、器用來(lái)存放操作數(shù)的地址,一般而言地址寄存

器又可以分為段地址寄存器(segmentpointerregister)>

間址寄存器(indexregister)粕堆棧寄存器(stackpointer

register)o段地址寄存器用在采用段式內(nèi)存管理的計(jì)算

機(jī)中,存放著某一段內(nèi)存區(qū)域的基地址。間址寄存器

用在間接尋址(indexedaddressing)方式下。堆棧寄存器

用以存放堆棧棧頂?shù)牡刂罚沟迷谑褂枚褩2僮?如

push,pop)時(shí)無(wú)須顯式地給出操作數(shù)的地址(即其地址

是隱含的)。

④標(biāo)志寄存器(flag/conditioncodesregister)

標(biāo)志寄存器中的位是由CPU硬件根據(jù)運(yùn)算的結(jié)果而設(shè)立

的一些指示位,以反映該次運(yùn)算的某些特征:結(jié)果為

正、負(fù)、零、溢出等等,并可以用作分支跳轉(zhuǎn)的依據(jù)。

一般而言,標(biāo)志寄存器允許編程者進(jìn)行讀操作,但不

允許對(duì)其直接進(jìn)行寫(xiě)操作。/

⑵狀態(tài)控制寄存器(CSR)

這些窗容器被控制器(controlunit)用來(lái)控制CPU的操作。通常是程序

員不可見(jiàn)的,但也有某些寄存器在某種特定的狀態(tài)下可以由某些

特權(quán)指令進(jìn)行訪(fǎng)問(wèn)。常見(jiàn)的CSR看:程序計(jì)數(shù)器(programcounter,

PC)>指令寄存器(instructionregister,IR).存蓿器地址寄存器

(memoryaddress‘register,MAR)>存儲(chǔ)器緩沖寄存器(memory

bufferregister,MBR)以及程序狀態(tài)字(programstatusworMPSW)。

PC中存放著下一條待取指令的地址。當(dāng)程序順序執(zhí)行時(shí),CPU在取

一條指令后,會(huì)自動(dòng)修改PC中的值以使其指向下一條指令。

而程序中的分支或跳轉(zhuǎn)指令也是通過(guò)修改PC中的值來(lái)達(dá)到改變

流程的目的。

IR中存放著CPU剛?cè)』氐闹噶?,以供指令譯碼使用。CPU和存儲(chǔ)器

之間的數(shù)據(jù)交換通過(guò)MAR和MBR來(lái)實(shí)現(xiàn)。MAR中存放著待訪(fǎng)問(wèn)

的內(nèi)存單元的地址而MBR則存放從內(nèi)存中讀人的數(shù)據(jù)或要寫(xiě)回

內(nèi)存單元的數(shù)據(jù)。

這4個(gè)寄存器(PC、IR、MAR、MBR)用來(lái)實(shí)現(xiàn)在CPU和存儲(chǔ)器

(memory)之間的數(shù)據(jù)交換。另外CPU內(nèi)部,在ALU與MBR、用

戶(hù)可見(jiàn)的寄存器之間也可能存在用作輸入/輸出緩沖寄存器。>

2..寄存器邏輯組成

“寄存器是計(jì)算機(jī)的一個(gè)重要部件,用于暫存數(shù)據(jù)、

指令等。它由觸發(fā)器和一些控制門(mén)組成。在寄存器

中,常用的是正邊沿觸發(fā)D觸發(fā)器和鎖存器。

圖2—3所示是由正沿觸發(fā)的D觸發(fā)器組成的四位

寄存器。在CP正沿作用下,外部數(shù)據(jù)才能進(jìn)入寄存

器??谑菑?fù)位端,CP是D觸發(fā)器的脈沖端,CK是

增加了個(gè)與邏輯門(mén)電路來(lái)取正沿脈沖的輸入端。四

D寄存器的功能見(jiàn)表2—7,其中t代表正脈沖,也

即正沿。

圖2—3四D寄存器

表2—7四D寄存器功能表

控制和輸入輸出

CKID2D3D4DIQ2Q3Q4Q

L,"JJ

1tID2D3D4DID2D3D4D

oxMrxx"xxoooo

事次E-在計(jì)算機(jī)中常要求寄存器有移位功能。如在進(jìn)行乘法

要求將部分積右移;在將并行傳送的數(shù)轉(zhuǎn)換成串行數(shù)時(shí)

也需移位。有移位功能的寄存器稱(chēng)為移位寄存器。

2.2.2計(jì)數(shù)器

計(jì)數(shù)器是計(jì)算機(jī)、數(shù)字儀表中常用的一種電路。計(jì)數(shù)器按時(shí)鐘

作用方式來(lái)分,有同步計(jì)數(shù)器和異步計(jì)數(shù)器兩大類(lèi)。在異步

計(jì)數(shù)器中,由于高位觸發(fā)器的時(shí)鐘信號(hào)是由低一位觸發(fā)器的

輸出來(lái)提供的,但是結(jié)構(gòu)簡(jiǎn)單。同步計(jì)數(shù)器中各觸發(fā)器的時(shí)

鐘信號(hào)是由同一脈沖來(lái)提供的,因此,各觸發(fā)器是同時(shí)翻轉(zhuǎn)

的,它的工作頻率比異步計(jì)數(shù)器高,但結(jié)構(gòu)較復(fù)雜。計(jì)數(shù)器

按計(jì)數(shù)順序來(lái)分,有二進(jìn)制、十進(jìn)制兩大類(lèi)。在計(jì)算機(jī)中較

少使用異步計(jì)數(shù)器,這里著重介紹有并行輸入數(shù)據(jù)功能的正

向同步十進(jìn)制計(jì)數(shù)器。

圖2—4是用主一從J—K觸發(fā)器構(gòu)成的同步十進(jìn)制集成化計(jì)數(shù)器。

同步計(jì)數(shù)器是采用快速進(jìn)位方式來(lái)計(jì)數(shù)的,觸發(fā)器及實(shí)現(xiàn)快

速進(jìn)位的邏輯電路是它的核心?!?/p>

圖2—4十進(jìn)制同步計(jì)數(shù)器

:“預(yù)置數(shù)”是集成化同步計(jì)數(shù)器的一個(gè)重要功能。一般設(shè)置控

'制端,用來(lái)選擇電路是執(zhí)行計(jì)數(shù)還是執(zhí)行預(yù)置數(shù):當(dāng)L=l,

執(zhí)行同步計(jì)數(shù);L=0,執(zhí)行預(yù)置數(shù)。由于J—K觸發(fā)器數(shù)據(jù)輸

入是雙端的,所以要將單端的預(yù)置數(shù)A?D經(jīng)兩級(jí)“與非”

門(mén)變成互補(bǔ)信號(hào),再加在J,K端。圖2—4所示與非門(mén)4?11

就是為此目的而設(shè)置的。當(dāng)L=1時(shí),這些與非門(mén)被封鎖,快

速進(jìn)位電路輸出經(jīng)或門(mén)12?15進(jìn)入觸發(fā)器,電路執(zhí)行計(jì)數(shù);

當(dāng)L=0,門(mén)4?11打開(kāi),快速進(jìn)位被封鎖,電路執(zhí)行置數(shù)。

能夠方便地?cái)U(kuò)展位數(shù)是集成化計(jì)數(shù)器的一個(gè)特點(diǎn)。下面介紹

擴(kuò)展方法。計(jì)數(shù)器擴(kuò)展應(yīng)滿(mǎn)足以下條件。

首先,要有標(biāo)志計(jì)數(shù)器已計(jì)至最大數(shù)的進(jìn)位輸出端RC,對(duì)二

進(jìn)制、十進(jìn)制計(jì)數(shù)器,RC

分別為:4

二進(jìn)制計(jì)數(shù)器:RC=QAQBQCQD/,.可

十進(jìn)制計(jì)數(shù)器:RC=QAQD''

其次,計(jì)數(shù)器應(yīng)有保持功能。圖2—4計(jì)數(shù)器中

設(shè)置了“計(jì)數(shù)允許”端P和T,用來(lái)控制計(jì)數(shù)

器快速進(jìn)位電路和RC形成門(mén):當(dāng)P,T均為

“1”,快速進(jìn)位電路才能打開(kāi)(見(jiàn)表2—8),

此時(shí)若L=l,則電路處于計(jì)數(shù)狀態(tài);若P=0,

T=l,則快速進(jìn)位電路封鎖,電路不能計(jì)數(shù),

此時(shí)若L=l,預(yù)置數(shù)也被封鎖,又由于T=1

時(shí)RC形成門(mén)不封鎖,所以各觸發(fā)器狀態(tài)及RC

均保持。有了RC,P,T端,就可以方便地對(duì)

計(jì)數(shù)器進(jìn)行擴(kuò)展。

表2—8同步計(jì)數(shù)器功能表

LRDCK功能

1111計(jì)數(shù)

XX01并行輸入數(shù)據(jù)

0111X保持

X011X觸發(fā)器保持,RCR

XXX1X異步清“0”7

2.273譯碼器

譯碼器有n個(gè)輸入變量,2n個(gè)(或少于2n個(gè))輸出,每個(gè)

輸出對(duì)應(yīng)于n個(gè)輸入變量的一個(gè)最小項(xiàng)。當(dāng)輸入為某

一組合時(shí),對(duì)應(yīng)的僅有一個(gè)輸出為“1”(或?yàn)?/p>

“0”),其余輸出均為“0”(或?yàn)椤?”)。譯碼器

的用途是把輸入代碼譯成相應(yīng)的控制電位,以實(shí)現(xiàn)

代碼所要求的操作。

圖2—5給出了2輸入4輸出譯碼器的邏輯圖。譯碼器中

常設(shè)置“使能”控制端正,當(dāng)該端為“1”時(shí),譯碼

器功能被禁止,此時(shí)所有輸出均為“1”。使能端的

一個(gè)主要功能是用來(lái)擴(kuò)充輸人變量數(shù)。」

功能表

EAB丫。4%丫3

0000111

0101011

0011101

0111110

1XX1111

2.3控制部件

控制器(見(jiàn)圖2—6)負(fù)責(zé)控制整個(gè)計(jì)算機(jī)系統(tǒng)的運(yùn)行,

讀取指令寄存器、狀態(tài)控制寄存器以及從外部來(lái)的

控制信號(hào)(例如中斷信號(hào)),發(fā)布外控制信號(hào)控制

CPU與存儲(chǔ)器、I/O設(shè)備進(jìn)行數(shù)據(jù)交換,發(fā)布內(nèi)控

制信號(hào)控制寄存器間的數(shù)據(jù)交換,控制ALU完成指

定的運(yùn)算功能,并且管理其他的CPU內(nèi)部操作。

2.3.1控制器的基本功能

控制器的基本功能就是時(shí)序(sequencing)控制和執(zhí)行

(execution)控制。根據(jù)當(dāng)前運(yùn)行的程序,控制器使

CPU按一定的時(shí)序關(guān)系執(zhí)行一系歹U的微操作(micro-

operation),從而完成程序規(guī)定的動(dòng)作。,/

控制器的輸入信號(hào)有:時(shí)鐘信號(hào)、指令寄存器、標(biāo)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論