版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數(shù)據(jù)表示方法
A2?l數(shù)據(jù)表示方法和運算器
A2-2邏輯部件
>2-3控制部件
?\2.1數(shù)據(jù)表示方法和運算器
2.±[計算機中數(shù)據(jù)的表示方法
當前的計算機所采用的存儲器件都是兩態(tài)器件,所以適合于存放二
進制數(shù)據(jù)。盡管為了方便起見,也使用其他進制,如十進制、十六進
制,但是在計算機內部數(shù)據(jù)還是以二進制的形式存放和處理。二進制
只使用了兩個不同的數(shù)字符號,易于用物理器件來實現(xiàn):在物理世界
中具有兩個穩(wěn)定狀態(tài)的物理器件很多,如晶體管的“截止”與“導通
”、電容的“充電”與“放電”、電壓信號的“高”與“低”、脈沖
的“有”與“無”,電磁單元的“正向磁化”與“反向磁化”等等,
只要規(guī)定其中一種穩(wěn)定狀態(tài)表示“1”,另一種穩(wěn)定狀態(tài)表示“0”,
就可以用來表示二進制數(shù)位了。其次,二進制的運算規(guī)則非常簡單,
易于用電子器件來實現(xiàn)。數(shù)據(jù)的類型多種多樣,如文件、圖、表、樹
、陣列、鏈表、棧、向量、串、實數(shù)、整數(shù)、布爾數(shù)、字符等。計算
機里用到的數(shù)據(jù)類型主要可分為兩類:表示數(shù)量的數(shù)值數(shù)批和年數(shù)值
性的符號數(shù)據(jù)。所有的數(shù)據(jù)都是以二進制的形式在計算機唾處理和存
儲。本節(jié)主要講述數(shù)值數(shù)據(jù)在計算機里的表示方法?!?/
1?數(shù)值數(shù)據(jù)表示方法
在計算機中表示數(shù)時,需要考慮以下幾個因素:要表示
的數(shù)的類型(小數(shù)、整數(shù)、實數(shù)和復數(shù))、符號如何表示以及
小數(shù)點的位置;可能遇到的數(shù)值范圍;數(shù)值精確度;數(shù)據(jù)存
儲和處理所需要的硬件代價。計算機中表示數(shù)值符號的方法
是占用一位二進制位,1表示負號、0表示正號。常用的數(shù)值
數(shù)據(jù)表示格式有兩種,根據(jù)小數(shù)點的位置是固定不變還是浮
動變化的分為定點格式和浮點格式。一般來說,定點格式容
許的數(shù)值范圍有限,但要求的處理硬件比較簡單。而浮點格
式容許的數(shù)值范圍很大,但要求的處理硬件比較復雜。
(1)定點數(shù)的表示方法
所謂定點格式,即約定機器中所有數(shù)據(jù)的小數(shù)點位置是
固定不變的。由于約定在固定的位置,小數(shù)點就不再使用記
號“.”來表示。原理上講,小數(shù)點位置固定在哪匕位都可
以,但是通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)?!?/p>
例如用一個n+1位字來表示一個定點數(shù)x,其中一位x0用
來表示數(shù)的符號,其余位數(shù)代表它的量值。為了將整個n+1
位統(tǒng)一處理起見,符號位X。放在最左位置,并用數(shù)值0和1
分別代表正號和負號,這裸,對于任意定點數(shù)X=X0X]X2...Xn,
在定點機中可表示為如下形式:
號口集數(shù)X表示的是純小數(shù),那么小數(shù)點位于X。和X]之間。當
X°X]X2…Xn各位均為0時,數(shù)X的絕對值最小,當各位均為1時,
X的絕對宿最大,故數(shù)的表示范圍為g|x|<1—2-n
如果數(shù)X表示的是純整數(shù),那么小數(shù)點位于最低位X。的
右邊,此時數(shù)X的表示范圍為OW|x|<2n-l,目前計算機
中多采用定點純整數(shù)表示,因此將定點數(shù)表示的運算簡稱
為整數(shù)運算。
(2)浮點數(shù)的表示方法
采用浮點表示法表示的數(shù)據(jù)叫做浮點數(shù),采用浮點數(shù)
進行運算的機器叫做“浮點機”。浮點數(shù)是指小數(shù)點位置
可以改變的數(shù),顯然浮點數(shù)可用來表示帶符號的實數(shù)。例
如:表示8位字長的二進制浮點數(shù)可以寫成
士0.10110101X2±1U/.
I一尾數(shù)一It階碼.
.任意一個十進制數(shù)N可以寫成N=1OZXX,同
樣,在計算機中一個任意進制數(shù)N可以寫成N=Bz
XX其中X稱為浮點數(shù)的尾數(shù),是一個純小數(shù)。z是
比例因子的指數(shù),稱為浮點的指數(shù),是一個整數(shù)。
比例因子的基數(shù)B是一個常數(shù),一般規(guī)定只為2,8或
16o在機器中表示一個浮點數(shù)時,一是要給出尾數(shù),
用定點小數(shù)形式表示。尾數(shù)部分給出有效數(shù)字的位
數(shù),因而決定了浮點數(shù)的表示精度。二是要給出指
數(shù),用整數(shù)形式表示,常稱為階碼,階碼指明小數(shù)
點在數(shù)據(jù)中的位置,因而決定了浮點數(shù)的表示范圍。
浮點數(shù)也要有符號位。因此一個機器浮點數(shù)應當由
階碼和尾數(shù)及其符號位組成:,K
Z]Z...Zn/ZX.X,……x.,x
2n%[nn
除符一階碼一數(shù)符一尾數(shù)一
32位浮點數(shù)的標準格式為:
313023220
32位浮點數(shù)F<-Z—><-X—>
64位浮點數(shù)的標準格式為:
不論是32位浮點數(shù)還是64位浮點數(shù),規(guī)定基數(shù)B=2。由于基
數(shù)2是固定常數(shù),不必用顯示方式來表示它。
32位的浮點數(shù)中,F(xiàn)是浮點數(shù)的符號位,占1位,安排在最
高位,F(xiàn)=0表示正數(shù),F(xiàn)=1表示負數(shù)。X是尾數(shù),放在低位部
分,占用23位,用小數(shù)表示,小數(shù)點放在尾數(shù)域的最前面。Z
是階碼,占用8位,階符采用隱含方式,即采用移碼方法來表
示正負指數(shù)。移碼方法對兩個指數(shù)大小的比較和對階操作都比
較方便,因為階碼域值大者其指數(shù)值也大。采用這種方式時,
將浮點數(shù)的指數(shù)值z變成階碼Z時,應將指數(shù)z加上一個固定的
偏移值127(01111111),BPZ=z+127o一個規(guī)格化的32位浮點
數(shù)X的值可表示為X=(—1)FX(1.X)X2ET27
其中尾數(shù)域所表示的值是LXo因為規(guī)格化的浮點數(shù)的尾
數(shù)域最左位也即最高有效位總是1,故這一位經(jīng)常不予存儲,
而認為隱藏在小數(shù)點的左邊。r
64位的浮點數(shù)中符號位1位,階碼域11位,尾數(shù)域52位,指數(shù)偏移值
*1021因此規(guī)格化的64位浮點數(shù)X的真值為
x=(—1)FX(1.X)X2E—1O23z=E-1023
一^不對浮點數(shù)的表示作出明確規(guī)定,同一個浮點數(shù)的表示就不是惟一的。
例如0.5也可以表示成0.05X101,50X10—2等等。為了提高數(shù)據(jù)的表
示精度,當尾數(shù)的值不為0時,其絕對值應N0.5,即尾數(shù)域的最高有效
位應為1,否則要以修改階碼同時左右移小數(shù)點的辦法,使其變成這一要
求的表示形式,這稱為浮點數(shù)的規(guī)格化表示。
當一個浮點數(shù)的尾數(shù)為0,不論其階碼為何值,或者當階碼的值遇到比它能
表示的最小值還小時,不管其尾數(shù)為何值,計算機都把該浮點數(shù)看成零
值,稱為機器零。
浮點數(shù)所表示的范圍遠比定點數(shù)大的多。假設(考慮符號位)機器中
的數(shù)由8位二進制數(shù)表示時:在定點機中這8位全部用來表示有效數(shù)字(包
括符號);在浮點機中若階符階碼占3位,數(shù)符尾數(shù)占5位。在此情況下,
若只考慮正數(shù)值,定點機小數(shù)表示的數(shù)的范圍是0.0000000到
0.1111111,相當于十進制數(shù)的0到127,而浮點機所能表示的數(shù)的范圍
是2-UX0.0001至)211X0.1111,相當于十進制數(shù)的1/128?7.5。顯
然,都用8位,浮點機能表示的數(shù)的范圍比定點機大得多?!?
二,臺計算機中究竟采用定點表示還是浮點表示,要根據(jù)計算
桃的使用條件來確定。一般在高檔微機以上的計算機中同時采用
4足點、注點表示,由使用者進行選擇。而單片機中多采用定點表
/JNo
【例2.1】若浮點數(shù)X。的二進制存儲格式為(43240000)16,求其
32位浮點數(shù)的十進制值。
解:將16進制數(shù)展開后,可得二制數(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]將十進制數(shù)16.59375轉換成32位浮點
、數(shù)的二進制格式來存儲。
.解:首先分別將整數(shù)和分數(shù)部分轉換成二進
制數(shù):16.59375=10000.10011移動小數(shù)點,
使其在第1位和第2位之間
10000.10011=1.000010011X24z=4
所以:
F=0,E=4+127=131,X=000010011
則得到的32位浮點數(shù)的二進制存儲格式為:
01000001100001001100000000000000=
(4184C000)打“
⑶定點數(shù)據(jù)的編碼方法
①、金直與機器碼
機器碼是數(shù)在計算機中的表示形式。對于數(shù)值數(shù)據(jù)而言,
無論以定點形式表示或是以浮點形式表示,都需要通過某
種編碼方法,以計算機所能處理的0和I二進制位來表示
其數(shù)值大小。通常一個數(shù)值數(shù)據(jù)的機內表示形式稱為其機
器碼,而一個機器碼所代表的數(shù)值稱為該機器碼的真值。
計算機中只有機器碼,不存在數(shù)的真值。
假設機器碼的寬度為n,最高位為符號位,下面分別介紹
實際應用中常見的4種機器碼編碼方法:原碼、反碼、補
碼和移碼。
②原碼表示法
定點整數(shù)原碼表示法
定點整數(shù)原碼的定義如下所示:
5^=X0WX<2nT
X-2nT<XW0
?靛義可以看出,正整數(shù)的原碼就是其自身,負
整數(shù)的原碼只需把其絕對值的原碼的符號位置為1即
可。(用0表示正號,用1表示負號)。原碼表示方法
的定點整數(shù)的取值范圍為一QnT—)SXS2nT—1。
注意在原碼表示法中,零有正零和負零之分。[+0]=
0000...0,[―0]=1000…0。
定點小數(shù)的原碼表示法「
定點小數(shù)原例的定'義如下所示:
[X]原=X0<X<l
[X]原=1—X-l<x<o:一,
滅的純小數(shù)的原碼就是其自身,而負的純小數(shù)的原碼
冰以逋過把其絕對值的原碼的符號位置1來得到。其取
'值范圍為一(1—2-(nT))SXS(l—2-(n-1))。綜上可以看出
一個數(shù)的原碼是由符號位加上數(shù)值位絕對值組成,符號
位為0代表正數(shù),符號位為1代表負數(shù)。由于0有+0和一
0兩種表示方法,n位二進制數(shù)可以表示2n—1個原碼。
用原碼實現(xiàn)乘除運算規(guī)則較簡單,但做加減運算不方
便。原碼表示法的一個主要優(yōu)點在于其真值和機器碼表
示之間對應關系很直觀,容易轉換。
③補碼表示法
定點整數(shù)的補碼表示
定點整數(shù)補碼的定義如下所示:3F
兇補=xO0X<2nT-,
[X]補=2n+X-2n-l<X<0
正整數(shù)的補碼就是其自身,負整數(shù)的補碼可以通過對
焉色對值部分逐位求反,并在最低位加1求得。同樣,
b在補碼表示法中,符號位為0表示正號,為1表示負號。I
其表示的真值X的范圍為一2nTWXW2nT—1。在補碼
表示中,0的機器碼是惟一的,沒有+0和一o之分。
定點小數(shù)的補碼表示
定點小數(shù)補碼的定義如下所示:
兇補=X0<X<l
[X]補=2+X-1<X<O
定點小數(shù)的補碼求解方法與定點整數(shù)的補碼求解方法相
類似。其表示的真值X的范圍為一1WXW1—25-1)。當n
=8時,一1的定點小數(shù)補碼表示為:10000000,而用定
點整數(shù)的補碼表示一1,則為11111111。
在補碼表示方法中,。的編碼是惟一的,所以n稀二說
制數(shù)可以表示2n個補碼。,一一
③反碼表示法
定直整數(shù)的反碼表示
定點整鎏反碼的定義如下所示:
[乂]反=X0<X<2n-1
[X]反=(211—1)+X-2n-1<X<0
同樣,正整數(shù)的反碼就是其自身,而負整數(shù)的反碼可
以通過對其絕對值逐位求反來求得。在反碼表示法中
,符號位仍然用0表示正號,1表示負號。其表示的真
值范圍與原碼相同:一(2廣i—l)SXW2n-i—l。數(shù)值0
用反碼表示亦有+0和一0之分。當n=8時,[+0]反=
00000000,[—0]反=11111111。
定點小數(shù)的反碼表示
定點小數(shù)反碼的定義如下所示:
兇反=X0<X<l,
[X]反=(2—2-n+i)+x-1<X<O
定雙小數(shù)的反碼求解方法類似定點整數(shù)的反碼求解方法。其表
小為真值的取值范圍為:一(1—2-(n-1))WXW(1—2-(n-l))。反碼
表示法中,由于0占有了兩個不同的編碼,所以,n位二進制數(shù)
可以表示2廣1個反碼。
④移碼表示法
定點整數(shù)的移碼表示
[X]移=2nT+X—241<X<2n-1
定點小數(shù)的移碼表示
[X]移=1+X-1<X<1
移碼的符號位與其他三種編碼不同,用1表示正號而0表示負號。
移碼的求法其實也很簡單,把其補碼的符號位直接變反即可。
所以在移碼表示法中,0也有惟一的表示方法:10000000(n=8)
【例2.3]設機器碼長度為8,求X=(—6)10的原碼、林碼、/
反碼和移碼。?
解::[X]原碼=27-(-110)=10000000+110=10000110
[X]補碼=28+(—110)=10000000—110=11111010
[X]反碼=(28—1)+(-110)=11111111—110=
11111001
[X]移碼=27+(—110)=10000000+110=01111010
【例2.4]設機器碼長度為8,求X=(-0.3125)10
=(-0.0101)2的原碼、補碼、反碼和移碼。
解:[X]原碼=1-X=L0-(-0.0101)=1.0101=
10101000
[X]補碼=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ù)的原碼、補碼、反碼和移碼時不僅可以
利用其定義式采求解,也可以通過這4個編碼間的相
工關系來求得。比如移碼就可以通過把補碼的符號位
變反來求,而對于正數(shù)來講其原碼、補碼和反碼是完
全相同的;一個負數(shù)的補碼也可以很容易地從其原碼
推知:除符號位外,各位取反,末位再加1即可。
(4)浮點數(shù)據(jù)的編碼方法
計算機內部浮點數(shù)據(jù)表示成如下形式:
FYZX
Fx是尾數(shù)的符號位,0表示正號而1表示負號;Z是階碼,通常
用移碼表示;X是定點小數(shù)形式的尾數(shù),一般用補碼或原碼表示,
'[例2、5]某浮點數(shù)機器碼10位,基數(shù)為2,階碼用4位移碼表示,
尾數(shù)5位用補碼表示,符號位1位。求21。義0.1101的編碼。
解:,(
符號位Fx=0
階碼Z=(10)移碼=1010
尾數(shù)X=(0.1101)補碼=11010
則其編碼為0101011010
【例2.6]某浮點數(shù)機器碼為17位,基數(shù)為2,階碼用4位移碼
表示,尾數(shù)用12位補碼表示,符號位1位。求一2.75的浮點編碼
形式。
解:首先把-2.75表示成浮點形式:
(10
(-2.75)10=(-0.6875X22)]0=(—0.1O11)2X2^
rFx=1]
Z=(10)爬=1010
Xf(IN1o11)補碼=010100000000
N編碼為11010010100000000
,同一個浮點數(shù)可以有許多種不同的編碼表示(改變其階碼),所以需要對浮點
數(shù)進行規(guī)格化處理,以統(tǒng)一其形式,同時提高數(shù)據(jù)的表示精度。
規(guī)格化處理(基數(shù)為2)
①尾數(shù)部分以純小數(shù)形式表示,其絕對值應滿足0.5<|X|<lo若不滿足該條
件,則需要修改階碼并對尾數(shù)進行移位,以使尾數(shù)滿足該條件;
②當尾數(shù)為正時,無論其使用原碼還是補碼表示,X應滿足條件:0.5WX<1
以二進制形式表示為X=0.Ixx...x(x為0或1);
③用原碼表示的負尾數(shù),X滿足一l<xs—0.5,以二進制形式表示為M=l.1
xx...x(x為0或1);
④以補碼表示的負尾數(shù),X滿足-—0.5,以二進制形式表示為X=
1.Oxx...x(x為0或1);
從上面的討論可以看出,如果規(guī)格化的尾數(shù)用原碼表示,則其最高位一定為1
如果改用補碼表示,則尾數(shù)的最高位與其符號位相反,即為0。,4,
2.符號數(shù)據(jù)的表示方法
‘現(xiàn)代計算機不僅處理數(shù)值領域的問題,而且處理大量非數(shù)值領域的問題。這
、樣r,必然要引入文字、字母以及某些專用符號,以便表示文字語言、邏
輯語言管信息。例如人機交換信息時使用英文字母、標點符號、十進制數(shù)以
及諸如$,%,+等符號。然而數(shù)字計算機只能處理二進制數(shù)據(jù),因此,上述
信息應用到計算機中時,都必須編寫成二進制格式的代碼,也就是字符信息
用數(shù)據(jù)表示,稱為符號數(shù)據(jù)。最常見的編碼格式為ASCH碼和EBCDIC碼。
(1)ASCII碼
目前國際上普遍采用的一種字符系統(tǒng)是七單位的ASCII碼(美國國家信息交換標準
字符碼),它包括10個十進制數(shù)碼,26個英文字母和一定數(shù)量的專用符號,如$,
%,+,=等,總共128個元素,因此二進制編碼需要7位,加上一個偶校驗
位,共8位,剛好為一個字節(jié)。表2—1列出了七單位的ASCII碼字符編碼表。
ASCII碼規(guī)定8個二進制位的最高一位為0,余下的7位可以給出128個編碼,
表示128個不同的字符。其中95個編碼,對應著計算機終端能輸人并且可以顯
示的95個字符,打印機設備也能打印這95個字符,如大小寫各26個英文字母,
0?9這10個數(shù)字符,通用的運算符和標點符號+,一,*,\,>,=,〈等等,
另外的33個字符,其編碼值為0?31和127,則不對應任何一個可以顯示或打印
的實際字符,它們被用作控制碼,控制計算機某些外圍設備的工作特性和物
些計算機軟件的運行情況。.一/
ra算機里的存儲和傳送單位通常使用Byte(lByte=8bit),所以
7位的ASCII碼也用一個字節(jié)來表示。ASCII編碼和128個字符的對
應關系如表2.1所示。表中編碼符號的排列次序為b7b6b5b4
b3b2b1b0,最高1位沒有使用,通常填0;也可以把它用作校
驗位或者用某擴展字符集。表中未給出,列b6b5b4為高位部
分,行b3b2b1b0為低位部分。ASCII的字符編碼表一共有24
=16行,23=8列。低4位編碼b3b2b1b0用作行編碼,而b6
b5b4高3位用作列編碼。值得注意的一點是數(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”的二進制碼。可以再出:
十進.,
制的8421碼可以去掉b6b5b式=011)而得到。這個特點庵得在/
數(shù)字符號(ASCII碼)與數(shù)字值(二進制碼)之間進行轉換非常方便。
表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ù)的多個字節(jié),每個字節(jié)存一個字符。當主存字由2個或4個字
節(jié)組成時,在同一個主存字中,既可按從低位字節(jié)向高位字節(jié)
的順序存放字符串內容,也可按從高位字節(jié)向低位字節(jié)的次序
順序存放字符串內容。這兩種存放方式都是常用方式,不同的
計算機可以選用其中任何一種。例如下述字符串:_______
圖2-1字符串在主存中的存放
、IF-A>B-ELSE-READ(C)」就可以按圖
2二1所示從高位字節(jié)到低位字節(jié)依次存放在主存中。其中主
存單元長度由4個字節(jié)組成。每個字節(jié)中存放相應字符的
ASCII值,文字表達式中的空格“一”在主存中也占一個
字節(jié)的位置。因而每個字節(jié)分別存放十進制的73,70,32,
65,62,66,32,69,76,83,69,32,82,69,65,68,
40,67,41,32o
(2)EBCDIC碼
EBCDIC(ExtendedBinaryCodedDecimalInterchangeCode)即所
謂擴展的二/十進制交換碼。采用8bit編碼來表示一個字符,
共可以表示28=256個不同符號,但EBCDIC中并沒有使用全
部編碼,只選用了其中一部分,剩下的保留作擴充用。
EBCDIC碼常用于IBM大型機中。在EBCDIC碼制中,數(shù)字
“0”?“9”的高4位編碼都是1111,而低4位編碼則依次為
0000到1001。把高四位屏蔽掉,也很容易實現(xiàn)從EBCDIC碼
到二進制數(shù)字值的轉換?!?
3.W學的表示方法
\(1漢字的輸入編碼
為工能直接使用西文標準鍵盤把漢字輸入到計算機,就必須為
漢字設并相應的輸入編碼方法。當前采用的方法主要有以下三
類:
數(shù)字編碼常用的是國標區(qū)位碼,用數(shù)字串代表一個漢字輸
入。區(qū)位碼是將國家標準局公布的6763個兩級漢字分為94個
區(qū),每個區(qū)分94位,實際上把漢字表示成二維數(shù)組,每個漢字
在數(shù)組中的下標就是區(qū)位碼。區(qū)碼和位碼各兩位十進制數(shù)字,
因此輸入一個漢字需按鍵四次。例如“中”字位于第54區(qū)48位,
區(qū)位碼為5448。
數(shù)字編碼輸入的優(yōu)點是無重碼,且輸入碼與內部編碼的轉換比
較方便,缺點是代碼難以記憶。,
拼音碼拼音碼是以漢語拼音為基礎的輸入方法。凡學垂?jié)h
語拼音的人,不需訓練和記憶,即可使用。但漢字同音器太
多,輸入重碼率很高,因此按拼音輸入后還必須進代同音字選
擇,影響了輸入速度?!?/p>
國形編碼字形編碼是用漢字的形狀來進行的編碼。漢字總數(shù)雖多,但
是由一筆廠一劃組成,全部漢字的部件和筆劃是有限的。因此,把漢字
的筆戈1部件用字母或數(shù)字進行編碼,按筆劃的順序依次輸入,就能表示
一個漢字。例如五筆字型編碼是最有影響的一種字形編碼方法。
除了上述三種編碼方法之外,為了加快輸入速度,在上述方法基礎上,
發(fā)展了詞組輸入、聯(lián)想輸入等多種快速輸入方法。但是都利用了鍵盤
進行“手動”輸入。理想的輸入方式是利用語音或圖像識別技術“自動”
將拼音或文本輸入到計算機內,使計算機能認識漢字,聽懂漢語,并將
其自動轉換為機內代碼表示。目前這種理想已經(jīng)成為現(xiàn)實。
(2)漢字的存儲(漢字內碼)
漢字內碼是用于漢字信息的存儲、交換、檢索等操作的機內代碼,一般
采用兩個字節(jié)表示。英文字符的機內代碼是七位的ASCH碼,當用一個字
節(jié)表示時,最高位為“0”。為了與英文字符能相互區(qū)別,漢字機內代碼
中兩個字節(jié)的最高位均規(guī)定為“1”。例如漢字操作系統(tǒng)CCD0S中使用的
漢字內碼是一種最高位為“1”的兩字節(jié)內碼。
有些系統(tǒng)中字節(jié)的最高位用于奇偶校驗位,這種情況下用三個字節(jié)表示
漢字內碼。■,/
(3)漢字的輸出(漢字字模碼)
、字模碼是用點陣表示的漢字字形代碼,它是漢字的輸
?出彤據(jù)漢字輸出的要求不同,點陣的多少也不同。
簡易型漢字為16X16點陣,提高型漢字為24X24點陣、
32X32點陣,甚至更高。因此字模點陣的信息量是很大的,
所占存儲空間也很大。以16X16點陣為例,每個漢字要
占用32個字節(jié),國標兩級漢字要占用256K字節(jié)。因此字模
點陣只能用來構成漢字庫,而不能用于機內存儲。字庫中
存儲了每個漢字的點陣代碼。當顯示輸出或打印輸出時才
檢索字庫,輸出字模點陣,得到字形。圖2—2示出了“大”
字的點陣及編碼。注意,漢字的輸入編碼、漢字內碼、字
模碼是計算機中用于輸入、內部處理、輸出三種不嗅途
的編碼,不要混為一談。.??等,/
圖2—2漢字的字模點陣及編碼
4?校驗碼
元件故褲、噪聲干擾等各種因素常常導致計算機在處理信息過程中出現(xiàn)
錯誤。例如將1位x從部件A傳送到部件B,可能由于傳送信道中的噪聲干
擾而受到破壞,以至于在接收部件B收到的是而不是X。為了防止這種錯
誤,可將信號采用專門的邏輯線路進行編碼以檢測錯誤,甚至校正錯誤
通常的方法是,在每個字上添加一些校驗位,用來確定字中出現(xiàn)錯誤的
位置。計算機中常用這種檢錯或糾錯技術進行存儲器讀寫正確性或傳輸
信息的檢驗。這里僅介紹檢錯碼中的奇偶校驗碼。
最簡單且應用廣泛的檢錯碼是采用一位校驗位的奇校驗或偶校驗。設X=(x°
X1...Xnj)是一個n位字,則奇校驗位定義為C=xox1...xn_1
式中十代表按位加,表明只有當X中包含有奇數(shù)個1時,才能使=1,即C=
Oo
同理,偶校驗位C定義為C=X0X]…Xn」即X中包含偶數(shù)個1時,才使C=0。
假設一個字X從部件A傳送到部件B。在源點A,校驗位C可用上面公式算
出來,并合在一起將(x°xi…x31C)送到B。假設在B點真正接收到的是
X=(xox\...xn,C1),然后計算F=(x0x\...xnlC'M:F=1,意
味著收到島信息看錯,例如(X。X]…x,)中正巧有一也變“反”時就會
出現(xiàn)這種情況。若F=0,表明X字傳邃正確。奇偶校驗可提供單,個錯誤
檢測,但無法檢測多個錯誤,更無法識別錯誤信息的位置。>J
【例2.7]已知下表中左面一欄有5個字節(jié)
而數(shù)據(jù)。請分別是用奇校驗和偶校驗進行編碼,
填在中間一欄和右面一欄。
解:假定最低一位為校驗位,其余高8位為
數(shù)據(jù)位,列表如下。從中看出,校驗位的值取。
還星取是由數(shù)據(jù)位中1的個數(shù)決定的一
IWI偶校驗編碼I奇校驗編碼I
10101010101010100101010101
01010100010101001010101000
00000000000000000000000001
01111111011111111011111110
11111111111111110111111111'
2.1.2計算機中算術運算和邏輯運算
卜三進例數(shù)的算術運算
(1)定點數(shù)運算
①定點數(shù)加法/減法運算
定點數(shù)的加法和減法運算使用補碼較為方便。對于定點小數(shù)
的運算規(guī)則如下:
加法:良+丫[補={[X]補+[y]補}mod2
減法:[X—丫]補={[X]補+[―y]補}mod2
當運算結果超過了定點數(shù)的表示范圍時,則產生溢出
(Overflow),常用的溢出檢測機制主要有以下兩種:
進位判決法:
令C-]表示次高位(最高數(shù)值位)向最高位(符號位)的也
位,加則表示符號位的進位,則結果是否溢出的判決表加
表2—2所示,即1=1時溢出。這里,表示異或廣
表2—2溢出的判決表
CnOverflow=CnCn_1
00無溢出
01
10
1無溢出
【例2,.8]X=(100)=(01100100),,Y=(50)=(00110010),,
JiLUn乙JiLUn乙
求3+Y。4
解:,[X]補=01100100,[y]補=00110010
N[X+Y*=[X]補+[y]補=10010110
CC1=1,表示結果溢出。
【例2.9]X=(-100)10—(-01100100)2,Y=(—5O)]o=(一
00110010),,求X—Y。
解:[X]補=10011100,[—y]補=00110010
[X—丫]補=[幻補+[—Y]補=11001110
CnCn-i=0,因此沒有溢出。
雙符號位判決法:
采用兩位二進制位來表示符號位:00?正號,11?負號,根據(jù)運
算結果的符號位也可以判定其是否溢出,其判決表如表2“3所親。
表2—3雙符號位判決表
運算結果的Overflow運算結果的符Overflow
符號位號位
0010
0111J無溢出
【例2.10]X=(1OO)1O=(O11OO1OO)2,Y=(5O)]o=(OOl10010)2,
'求XCY1
[X]#=001100100[Y]補=000110010
[X+Y];=[X]#+[y]#=010010110
其符號位為01,說明結果溢出。
②定點數(shù)乘法運算
在作定點數(shù)的乘法運算時采用原碼比較方便。通常使用原碼一
位乘法來求兩個定點數(shù)的乘積。
運算規(guī)則:
乘積的符號位等于乘數(shù)和被乘數(shù)的符號位進行異或;
乘積的值等于兩數(shù)絕對值之積,即乘數(shù)和被乘數(shù)的絕對值進行
移彳立相加。/
算法:(用絕對值進行運算)二
令X表示被乘數(shù),Y表示乘數(shù),P表示部分積以點放中佝結
果,flag用作列別位,count用作計數(shù)。/
令^=0;count=0;flag=0;
p和Y一起右移一位(P為高位部分,Y為低位部分),
右移時P的最高位補0,P的最低位移入Y的最高位,
Y的最低位移入到flag中;
如果flag=l同P=P+X,否則P不變;
count=count+1,如果count超過Y的位數(shù)則運算停
止,否則轉到上述第2步繼續(xù)執(zhí)行;
P和Y的內容就是所求乘積的絕對值,其中P存放積
的高位,而Y存放積的低位。
【例2.11]X=(10)10=(1010)2,Y=(-6)10=(-
0110)2,求X,Yo
解:「
[|X|]jg=1010,[|Y|]原=0110'
乘積的符號位S=01=1。4
t'一表2—4定點數(shù)乘法運算表
熱什動比二
部分積p乘數(shù)Y別位counter
Flag
0000011000
0000001101
0000000112
P+X1010
右移0101000013
P+X1111
0111100004
__r________
001111000一5,
則所.得乘積為(一oounoo)2=(—GO)]。
③麓點數(shù)除法運算
定點數(shù)的除法通常也常用原碼進行。下面介紹常用的加減交替法求兩
個數(shù)X和Y的商。運算規(guī)則:
商的符號位同定點數(shù)原碼乘法的處理方法,由兩數(shù)的符號位進行異或;
兩數(shù)的絕對值部分進行相除;
算法:(求X/Y,設X、Y的數(shù)值部分長度為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則結束,否則轉到上述第3步執(zhí)行。
(2)浮點數(shù)運算
在進行浮點運算之前,應先對浮點數(shù)進行規(guī)格化。
①浮點數(shù)的加減運算
設有浮點數(shù)X=M2,Y=N-2J,求X+Y或X—Y,其運算過
程如下:
對階:使兩個數(shù)的階碼相同。☆K=|i-j|,把階碼小的
數(shù)的尾數(shù)右移K位,其階碼加上K。當右移尾數(shù)時,若尾數(shù)
用補碼表示則符號位參加移位,符號位不變,如果是原碼,
則符號位不參加移位,尾數(shù)的最高位補0。
尾數(shù)進行加、減運算:
規(guī)格化處理:若尾數(shù)所得結果不是規(guī)格化的數(shù),則需對
其進行規(guī)格化處理。當尾數(shù)溢出時,尾數(shù)向右規(guī)格化位,
階碼加1;當尾數(shù)用補碼表示,尾數(shù)的最高位與符號位相同
時,應向左規(guī)格化,尾數(shù)每向左移一位,階碼減L直到,尾
數(shù)最高位與符號位相反?!?一
IIIIIriiii
舍入操作:舍入的方法常用0舍1入,即當向右規(guī)格化時,若
移掉的最高位為1,則在尾數(shù)末位加1,否則舍去。另一種則是
“恒1”法,即不管移走的數(shù)據(jù)為何值,尾數(shù)最末位恒置1。
溢出判斷:以階碼為準。若階碼上溢,則結果溢出;若階碼
下溢,則結果為0;否則結果正確無溢出。
②浮點數(shù)的乘除運算
浮點數(shù)相乘,其積的階碼為兩數(shù)階碼相加,積的尾數(shù)為兩
尾數(shù)相乘。浮點數(shù)相除,其商的階碼為兩數(shù)階碼之差,商的尾
數(shù)為兩尾數(shù)相除。其結果都需要進行規(guī)格化處理,同時還需要
判斷其階碼是否溢出。
2.邏輯代數(shù)及邏輯運算
邏輯代數(shù)是1849年英國數(shù)學家喬治?布爾提出的以代數(shù)的方
式對邏輯變量進行描述和分析的數(shù)學工具,又稱布爾代數(shù)。邏
輯變量的取值只有“真”和“假”,通常以1和o表示/
(1)基本的邏輯運算
、①'與"(AND)運算
又稱為邏輯乘運算,其運算符號通常用AND、n、八或?等
表示。兩個變量的“與”運算的運算規(guī)則如表2—4所示。即
當A、B中任一變量取0值時,其運算結果為0。
表2.5“與”運算表表2.6“或”運
②.“或4(OR)運算
'又稱為邏輯加運算,其運算符號為OR、U、V或+
等。兩個變量的“或”運算規(guī)則如表2—5所示。即當
A、B中任意一個取1值時,其運算結果為1。
③“非"(NOT)運算
又稱為邏輯求反運算。常用表示對變量A進行求反。
其運算規(guī)則很簡單:=0,
=1O
④“異或”運算
常用的還有“異或”運算,又稱為半加運算,其運
算符號為XOR或。異或運算是一種復合邏輯運算,
可用上述基本邏輯運算表示如下:
A十B=A?B+A?B./
,2.2邏輯部件
2.2.1寄存器
1.寄存器組(registerblock)概述
CPU中的寄存器通??梢浴⒎至霞S:用戶可見的寄存器(user-
visibleregisters)和狀態(tài)控制寄存器(controlandstatusregisters)o
⑴用戶可見的寄存器
用戶能夠通過機器語言來訪問這些寄存器。合理優(yōu)化地使用這
些寄存器可以減少對主存的訪問次數(shù),從而提高程序的執(zhí)行
速度。按其功能可以分為4類:
①通用寄存器(generalpurposeregister)
通用寄存器的用途由程序員編程決定,例如可以用來存放操作
數(shù),也可以用作尋址寄存器。,
②數(shù)據(jù)寄存器(dataregister)/-
數(shù)據(jù)寄存器僅能用來存放數(shù)據(jù)而不能用來對操作數(shù)的地址進行
計算。,?
③地址寄存器(addressregister)
商需、器用來存放操作數(shù)的地址,一般而言地址寄存
器又可以分為段地址寄存器(segmentpointerregister)>
間址寄存器(indexregister)粕堆棧寄存器(stackpointer
register)o段地址寄存器用在采用段式內存管理的計算
機中,存放著某一段內存區(qū)域的基地址。間址寄存器
用在間接尋址(indexedaddressing)方式下。堆棧寄存器
用以存放堆棧棧頂?shù)牡刂罚沟迷谑褂枚褩2僮?如
push,pop)時無須顯式地給出操作數(shù)的地址(即其地址
是隱含的)。
④標志寄存器(flag/conditioncodesregister)
標志寄存器中的位是由CPU硬件根據(jù)運算的結果而設立
的一些指示位,以反映該次運算的某些特征:結果為
正、負、零、溢出等等,并可以用作分支跳轉的依據(jù)。
一般而言,標志寄存器允許編程者進行讀操作,但不
允許對其直接進行寫操作。/
⑵狀態(tài)控制寄存器(CSR)
這些窗容器被控制器(controlunit)用來控制CPU的操作。通常是程序
員不可見的,但也有某些寄存器在某種特定的狀態(tài)下可以由某些
特權指令進行訪問。常見的CSR看:程序計數(shù)器(programcounter,
PC)>指令寄存器(instructionregister,IR).存蓿器地址寄存器
(memoryaddress‘register,MAR)>存儲器緩沖寄存器(memory
bufferregister,MBR)以及程序狀態(tài)字(programstatusworMPSW)。
PC中存放著下一條待取指令的地址。當程序順序執(zhí)行時,CPU在取
一條指令后,會自動修改PC中的值以使其指向下一條指令。
而程序中的分支或跳轉指令也是通過修改PC中的值來達到改變
流程的目的。
IR中存放著CPU剛取回的指令,以供指令譯碼使用。CPU和存儲器
之間的數(shù)據(jù)交換通過MAR和MBR來實現(xiàn)。MAR中存放著待訪問
的內存單元的地址而MBR則存放從內存中讀人的數(shù)據(jù)或要寫回
內存單元的數(shù)據(jù)。
這4個寄存器(PC、IR、MAR、MBR)用來實現(xiàn)在CPU和存儲器
(memory)之間的數(shù)據(jù)交換。另外CPU內部,在ALU與MBR、用
戶可見的寄存器之間也可能存在用作輸入/輸出緩沖寄存器。>
2..寄存器邏輯組成
“寄存器是計算機的一個重要部件,用于暫存數(shù)據(jù)、
指令等。它由觸發(fā)器和一些控制門組成。在寄存器
中,常用的是正邊沿觸發(fā)D觸發(fā)器和鎖存器。
圖2—3所示是由正沿觸發(fā)的D觸發(fā)器組成的四位
寄存器。在CP正沿作用下,外部數(shù)據(jù)才能進入寄存
器??谑菑臀欢耍珻P是D觸發(fā)器的脈沖端,CK是
增加了個與邏輯門電路來取正沿脈沖的輸入端。四
D寄存器的功能見表2—7,其中t代表正脈沖,也
即正沿。
圖2—3四D寄存器
表2—7四D寄存器功能表
控制和輸入輸出
CKID2D3D4DIQ2Q3Q4Q
L,"JJ
1tID2D3D4DID2D3D4D
oxMrxx"xxoooo
事次E-在計算機中常要求寄存器有移位功能。如在進行乘法
要求將部分積右移;在將并行傳送的數(shù)轉換成串行數(shù)時
也需移位。有移位功能的寄存器稱為移位寄存器。
2.2.2計數(shù)器
計數(shù)器是計算機、數(shù)字儀表中常用的一種電路。計數(shù)器按時鐘
作用方式來分,有同步計數(shù)器和異步計數(shù)器兩大類。在異步
計數(shù)器中,由于高位觸發(fā)器的時鐘信號是由低一位觸發(fā)器的
輸出來提供的,但是結構簡單。同步計數(shù)器中各觸發(fā)器的時
鐘信號是由同一脈沖來提供的,因此,各觸發(fā)器是同時翻轉
的,它的工作頻率比異步計數(shù)器高,但結構較復雜。計數(shù)器
按計數(shù)順序來分,有二進制、十進制兩大類。在計算機中較
少使用異步計數(shù)器,這里著重介紹有并行輸入數(shù)據(jù)功能的正
向同步十進制計數(shù)器。
圖2—4是用主一從J—K觸發(fā)器構成的同步十進制集成化計數(shù)器。
同步計數(shù)器是采用快速進位方式來計數(shù)的,觸發(fā)器及實現(xiàn)快
速進位的邏輯電路是它的核心?!?/p>
圖2—4十進制同步計數(shù)器
:“預置數(shù)”是集成化同步計數(shù)器的一個重要功能。一般設置控
'制端,用來選擇電路是執(zhí)行計數(shù)還是執(zhí)行預置數(shù):當L=l,
執(zhí)行同步計數(shù);L=0,執(zhí)行預置數(shù)。由于J—K觸發(fā)器數(shù)據(jù)輸
入是雙端的,所以要將單端的預置數(shù)A?D經(jīng)兩級“與非”
門變成互補信號,再加在J,K端。圖2—4所示與非門4?11
就是為此目的而設置的。當L=1時,這些與非門被封鎖,快
速進位電路輸出經(jīng)或門12?15進入觸發(fā)器,電路執(zhí)行計數(shù);
當L=0,門4?11打開,快速進位被封鎖,電路執(zhí)行置數(shù)。
能夠方便地擴展位數(shù)是集成化計數(shù)器的一個特點。下面介紹
擴展方法。計數(shù)器擴展應滿足以下條件。
首先,要有標志計數(shù)器已計至最大數(shù)的進位輸出端RC,對二
進制、十進制計數(shù)器,RC
分別為:4
二進制計數(shù)器:RC=QAQBQCQD/,.可
十進制計數(shù)器:RC=QAQD''
其次,計數(shù)器應有保持功能。圖2—4計數(shù)器中
設置了“計數(shù)允許”端P和T,用來控制計數(shù)
器快速進位電路和RC形成門:當P,T均為
“1”,快速進位電路才能打開(見表2—8),
此時若L=l,則電路處于計數(shù)狀態(tài);若P=0,
T=l,則快速進位電路封鎖,電路不能計數(shù),
此時若L=l,預置數(shù)也被封鎖,又由于T=1
時RC形成門不封鎖,所以各觸發(fā)器狀態(tài)及RC
均保持。有了RC,P,T端,就可以方便地對
計數(shù)器進行擴展。
表2—8同步計數(shù)器功能表
LRDCK功能
1111計數(shù)
XX01并行輸入數(shù)據(jù)
0111X保持
X011X觸發(fā)器保持,RCR
XXX1X異步清“0”7
2.273譯碼器
譯碼器有n個輸入變量,2n個(或少于2n個)輸出,每個
輸出對應于n個輸入變量的一個最小項。當輸入為某
一組合時,對應的僅有一個輸出為“1”(或為
“0”),其余輸出均為“0”(或為“1”)。譯碼器
的用途是把輸入代碼譯成相應的控制電位,以實現(xiàn)
代碼所要求的操作。
圖2—5給出了2輸入4輸出譯碼器的邏輯圖。譯碼器中
常設置“使能”控制端正,當該端為“1”時,譯碼
器功能被禁止,此時所有輸出均為“1”。使能端的
一個主要功能是用來擴充輸人變量數(shù)?!?/p>
功能表
EAB丫。4%丫3
0000111
0101011
0011101
0111110
1XX1111
2.3控制部件
控制器(見圖2—6)負責控制整個計算機系統(tǒng)的運行,
讀取指令寄存器、狀態(tài)控制寄存器以及從外部來的
控制信號(例如中斷信號),發(fā)布外控制信號控制
CPU與存儲器、I/O設備進行數(shù)據(jù)交換,發(fā)布內控
制信號控制寄存器間的數(shù)據(jù)交換,控制ALU完成指
定的運算功能,并且管理其他的CPU內部操作。
2.3.1控制器的基本功能
控制器的基本功能就是時序(sequencing)控制和執(zhí)行
(execution)控制。根據(jù)當前運行的程序,控制器使
CPU按一定的時序關系執(zhí)行一系歹U的微操作(micro-
operation),從而完成程序規(guī)定的動作。,/
控制器的輸入信號有:時鐘信號、指令寄存器、標
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度專業(yè)牧場代牧服務標準合同4篇
- 2025年度臨時停車場帳篷搭建施工合同范本3篇
- 2024物流包裝與裝卸合同
- 2025年度智慧家居產品研發(fā)承包經(jīng)營合同書范文4篇
- 2025年度桉樹種植與生物質能利用技術研發(fā)合同3篇
- 2025年個人汽車抵押貸款抵押權設立及轉讓合同4篇
- 2025年度住宅小區(qū)地下車庫車位使用權購買合同范本4篇
- 2025年度文化產業(yè)園開發(fā)承包合同股東內部合作協(xié)議4篇
- 2024年甲乙雙方石材供需合同
- 2025年度新能源項目地質鉆孔工程承包協(xié)議4篇
- 【傳媒大學】2024年新營銷
- 乳腺癌的綜合治療及進展
- 【大學課件】基于BGP協(xié)議的IP黑名單分發(fā)系統(tǒng)
- 2025屆廣東省佛山市高三上學期普通高中教學質量檢測(一模)英語試卷(無答案)
- 自身免疫性腦炎課件
- 人力資源管理各崗位工作職責
- 信陽農林學院《新媒體傳播學》2023-2024學年第一學期期末試卷
- 2024建筑公司年終工作總結(32篇)
- 信息安全意識培訓課件
- 2024年項目投資計劃書(三篇)
- 配電安規(guī)課件
評論
0/150
提交評論