




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章數據表示方法2-1數據表示方法和運算器
2-2邏輯部件
2-3控制部件
第一頁,共七十四頁。2.1數據表示方法和運算器
2.1.1計算機中數據的表示方法
當前的計算機所采用的存儲器件都是兩態器件,所以適合于存放二進制數據。盡管為了方便起見,也使用其他進制,如十進制、十六進制,但是在計算機內部數據還是以二進制的形式存放和處理。二進制只使用了兩個不同的數字符號,易于用物理器件來實現:在物理世界中具有兩個穩定狀態的物理器件很多,如晶體管的“截止”與“導通”、電容的“充電”與“放電”、電壓信號的“高”與“低”、脈沖的“有”與“無”,電磁單元的“正向磁化”與“反向磁化”等等,只要規定其中一種穩定狀態表示“1”,另一種穩定狀態表示“0”,就可以用來表示二進制數位了。其次,二進制的運算規則非常簡單,易于用電子器件來實現。數據的類型多種多樣,如文件、圖、表、樹、陣列、鏈表、棧、向量、串、實數、整數、布爾數、字符等。計算機里用到的數據類型主要可分為兩類:表示數量的數值數據和非數值性的符號數據。所有的數據都是以二進制的形式在計算機里處理和存儲。本節主要講述數值數據在計算機里的表示方法。
第二頁,共七十四頁。
1.數值數據表示方法在計算機中表示數時,需要考慮以下幾個因素:要表示的數的類型(小數、整數、實數和復數)、符號如何表示以及小數點的位置;可能遇到的數值范圍;數值精確度;數據存儲和處理所需要的硬件代價。計算機中表示數值符號的方法是占用一位二進制位,1表示負號、0表示正號。常用的數值數據表示格式有兩種,根據小數點的位置是固定不變還是浮動變化的分為定點格式和浮點格式。一般來說,定點格式容許的數值范圍有限,但要求的處理硬件比較簡單。而浮點格式容許的數值范圍很大,但要求的處理硬件比較復雜。(1)定點數的表示方法所謂定點格式,即約定機器中所有數據的小數點位置是固定不變的。由于約定在固定的位置,小數點就不再使用記號“.”來表示。原理上講,小數點位置固定在哪一位都可以,但是通常將數據表示成純小數或純整數。
第三頁,共七十四頁。例如用一個n+1位字來表示一個定點數x,其中一位x0用來表示數的符號,其余位數代表它的量值。為了將整個n+1位統一處理起見,符號位x0放在最左位置,并用數值0和1分別代表正號和負號,這樣,對于任意定點數x=x0x1x2…xn,在定點機中可表示為如下形式:
x0x1x2……xn-1xn符號←數量值→第四頁,共七十四頁。
如果數x表示的是純小數,那么小數點位于x0和x1之間。當x0x1x2…xn各位均為0時,數x的絕對值最小,當各位均為1時,x的絕對值最大,故數的表示范圍為0≤▕x▏≤1—2-n
如果數x表示的是純整數,那么小數點位于最低位xn的右邊,此時數x的表示范圍為0≤▕x▏≤2n-1,目前計算機中多采用定點純整數表示,因此將定點數表示的運算簡稱為整數運算。
(2)浮點數的表示方法采用浮點表示法表示的數據叫做浮點數,采用浮點數進行運算的機器叫做“浮點機”。浮點數是指小數點位置可以改變的數,顯然浮點數可用來表示帶符號的實數。例如:表示8位字長的二進制浮點數可以寫成
±0.10110101×2±111▏←尾數→▕↑階碼
第五頁,共七十四頁。任意一個十進制數N可以寫成N=10Z×X,同樣,在計算機中一個任意進制數N可以寫成N=Bz×X其中X稱為浮點數的尾數,是一個純小數。z是比例因子的指數,稱為浮點的指數,是一個整數。比例因子的基數B是一個常數,一般規定只為2,8或16。在機器中表示一個浮點數時,一是要給出尾數,用定點小數形式表示。尾數部分給出有效數字的位數,因而決定了浮點數的表示精度。二是要給出指數,用整數形式表示,常稱為階碼,階碼指明小數點在數據中的位置,因而決定了浮點數的表示范圍。浮點數也要有符號位。因此一個機器浮點數應當由階碼和尾數及其符號位組成:
第六頁,共七十四頁。
32位浮點數的標準格式為:
Z0Z1Z2……Zn-1ZnX0X1X2……
Xn-1Xn階符←階碼→數符←尾數→
31302322032位浮點數F←Z→←X
→64位浮點數的標準格式為:
63625251064位浮點數F←Z→←X
→第七頁,共七十四頁。不論是32位浮點數還是64位浮點數,規定基數B=2。由于基數2是固定常數,不必用顯示方式來表示它。32位的浮點數中,F是浮點數的符號位,占1位,安排在最高位,F=0表示正數,F=1表示負數。X是尾數,放在低位部分,占用23位,用小數表示,小數點放在尾數域的最前面。Z是階碼,占用8位,階符采用隱含方式,即采用移碼方法來表示正負指數。移碼方法對兩個指數大小的比較和對階操作都比較方便,因為階碼域值大者其指數值也大。采用這種方式時,將浮點數的指數值z變成階碼Z時,應將指數z加上一個固定的偏移值127(01111111),即Z=z+127。一個規格化的32位浮點數X的值可表示為X=(-1)F×(1.X)×2E-127
其中尾數域所表示的值是1.X。因為規格化的浮點數的尾數域最左位也即最高有效位總是1,故這一位經常不予存儲,而認為隱藏在小數點的左邊。
第八頁,共七十四頁。
64位的浮點數中符號位1位,階碼域11位,尾數域52位,指數偏移值是1023。因此規格化的64位浮點數X的真值為X=(-1)F×(1.X)×2E—1O23z=E-1023若不對浮點數的表示作出明確規定,同一個浮點數的表示就不是惟一的。例如0.5也可以表示成0.05×101,50×10—2等等。為了提高數據的表示精度,當尾數的值不為0時,其絕對值應≥0.5,即尾數域的最高有效位應為1,否則要以修改階碼同時左右移小數點的辦法,使其變成這一要求的表示形式,這稱為浮點數的規格化表示。當一個浮點數的尾數為0,不論其階碼為何值,或者當階碼的值遇到比它能表示的最小值還小時,不管其尾數為何值,計算機都把該浮點數看成零值,稱為機器零。浮點數所表示的范圍遠比定點數大的多。假設(考慮符號位)機器中的數由8位二進制數表示時:在定點機中這8位全部用來表示有效數字(包括符號);在浮點機中若階符階碼占3位,數符尾數占5位。在此情況下,若只考慮正數值,定點機小數表示的數的范圍是0.0000000到0.1111111,相當于十進制數的0到127,而浮點機所能表示的數的范圍是2-11×0.0001到211×0.1111,相當于十進制數的1/128~7.5。顯然,都用8位,浮點機能表示的數的范圍比定點機大得多。
第九頁,共七十四頁。一臺計算機中究竟采用定點表示還是浮點表示,要根據計算機的使用條件來確定。一般在高檔微機以上的計算機中同時采用定點、浮點表示,由使用者進行選擇。而單片機中多采用定點表示。【例2.1】若浮點數X0的二進制存儲格式為(43240000)16,求其32位浮點數的十進制值。解:將16進制數展開后,可得二制數格式為01000011001001000000000000000000↑↑↑↑↑
F階碼(8位)尾數(23位)指數z=階碼—127=10000110—01111111=00000111=(7)10。包括隱藏位1的尾數1.X=1.01001000000000000000000=1.010010于是有
X0=(—1)F×1.X×2z=+(1.010010)×27=+10100100=(187)10。
第十頁,共七十四頁。【例2.2】將十進制數16.59375轉換成32位浮點數的二進制格式來存儲。解:首先分別將整數和分數部分轉換成二進制數:16.59375=10000.10011移動小數點,使其在第1位和第2位之間10000.10011=1.000010011×24
z=4所以:F=0,E=4+127=131,X=000010011則得到的32位浮點數的二進制存儲格式為:01000001100001001100000000000000=(4184C000)16
第十一頁,共七十四頁。
(3)定點數據的編碼方法①
真值與機器碼機器碼是數在計算機中的表示形式。對于數值數據而言,無論以定點形式表示或是以浮點形式表示,都需要通過某種編碼方法,以計算機所能處理的0和1二進制位來表示其數值大小。通常一個數值數據的機內表示形式稱為其機器碼,而一個機器碼所代表的數值稱為該機器碼的真值。計算機中只有機器碼,不存在數的真值。假設機器碼的寬度為n,最高位為符號位,下面分別介紹實際應用中常見的4種機器碼編碼方法:原碼、反碼、補碼和移碼。②原碼表示法定點整數原碼表示法定點整數原碼的定義如下所示:
第十二頁,共七十四頁。
[X]
原=X0≤X<2n-1[X]
原=2n-1-X-2n-1<X≤0
由定義可以看出,正整數的原碼就是其自身,負整數的原碼只需把其絕對值的原碼的符號位置為1即可。(用0表示正號,用1表示負號)。原碼表示方法的定點整數的取值范圍為-(2n-1-)≤X≤2n-1-1。注意在原碼表示法中,零有正零和負零之分。[+0]=0000…0,[-0]=1000…0。定點小數的原碼表示法定點小數原碼的定義如下所示:[X]
原=
X0≤X<1[X]
原=1-X-1<X≤0第十三頁,共七十四頁。正的純小數的原碼就是其自身,而負的純小數的原碼可以通過把其絕對值的原碼的符號位置1來得到。其取值范圍為-(1-2-(n-1))≤X≤(1-2-(n-1))。綜上可以看出一個數的原碼是由符號位加上數值位絕對值組成,符號位為0代表正數,符號位為1代表負數。由于0有+0和-0兩種表示方法,n位二進制數可以表示2n-1個原碼。用原碼實現乘除運算規則較簡單,但做加減運算不方便。原碼表示法的一個主要優點在于其真值和機器碼表示之間對應關系很直觀,容易轉換。③補碼表示法定點整數的補碼表示定點整數補碼的定義如下所示:[X]
補=X0≤X<2n-1[X]
補=2n+X-2n-1≤X<0第十四頁,共七十四頁。正整數的補碼就是其自身,負整數的補碼可以通過對其絕對值部分逐位求反,并在最低位加1求得。同樣,在補碼表示法中,符號位為0表示正號,為1表示負號。其表示的真值X的范圍為
-2n-1≤X≤2n-1-1。在補碼表示中,0的機器碼是惟一的,沒有+0和-0之分。定點小數的補碼表示定點小數補碼的定義如下所示:[X]
補=
X0≤X<1[X]
補=2+X-1≤X<0定點小數的補碼求解方法與定點整數的補碼求解方法相類似。其表示的真值X的范圍為-1≤X≤1-2-(n-1)。當n=8時,-1的定點小數補碼表示為:,而用定點整數的補碼表示-1,則為。在補碼表示方法中,0的編碼是惟一的,所以n位二進制數可以表示2n個補碼。第十五頁,共七十四頁。
③反碼表示法定點整數的反碼表示定點整數反碼的定義如下所示:[X]
反=X0≤X<2n-1
[X]
反=(2n-1)+X-2n-1<X≤0同樣,正整數的反碼就是其自身,而負整數的反碼可以通過對其絕對值逐位求反來求得。在反碼表示法中,符號位仍然用0表示正號,1表示負號。其表示的真值范圍與原碼相同:-(2n-1-1)≤X≤2n-1-1。數值0用反碼表示亦有+0和-0之分。當n=8時,[+0]反=00000000,[-0]反=11111111。定點小數的反碼表示定點小數反碼的定義如下所示:[X]
反=X0≤X<1[X]
反=(2-2-n+1)+X-1<X≤0第十六頁,共七十四頁。定點小數的反碼求解方法類似定點整數的反碼求解方法。其表示的真值的取值范圍為:-(1-2-(n-1))≤X≤(1-2-(n-1))。反碼表示法中,由于0占有了兩個不同的編碼,所以,n位二進制數可以表示2n-1個反碼。④移碼表示法定點整數的移碼表示
[X]
移=2n-1+X-2n-1≤X<2n-1
定點小數的移碼表示[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=1.0-(-0.0101)=1.0101=10101000[X]補碼=2+X=10.0+(-0.0101)=1.1011=11011000[X]反碼=(2-2-7)+X=(10.0-0.0000001)+(-0.0101)=11010111[X]移碼=1+X=1.0+(-0.0101)=0.1011=01011000第十八頁,共七十四頁。實際上求某個數的原碼、補碼、反碼和移碼時不僅可以利用其定義式采求解,也可以通過這4個編碼間的相互關系來求得。比如移碼就可以通過把補碼的符號位變反來求,而對于正數來講其原碼、補碼和反碼是完全相同的;一個負數的補碼也可以很容易地從其原碼推知:除符號位外,各位取反,末位再加1即可。(4)浮點數據的編碼方法計算機內部浮點數據表示成如下形式:FXZX第十九頁,共七十四頁。
FX是尾數的符號位,0表示正號而l表示負號;Z是階碼,通常用移碼表示;X是定點小數形式的尾數,一般用補碼或原碼表示。【例2.5】某浮點數機器碼10位,基數為2,階碼用4位移碼表示,尾數5位用補碼表示,符號位1位。求210×0.110l的編碼。解:符號位FX=0
階碼Z=(10)移碼=1010尾數X=(0.1101)補碼=11010則其編碼為0101011010【例2.6
】
某浮點數機器碼為17位,基數為2,階碼用4位移碼表示,尾數用12位補碼表示,符號位1位。求-2.75的浮點編碼形式。解:首先把-2.75表示成浮點形式:
(-2.75)10=(-0.6875×22)10=(-0.1011)2×2(10)
FX=1
第二十頁,共七十四頁。Z=(10)移碼=1010
X=(-0.1011)補碼=0編碼為110000同一個浮點數可以有許多種不同的編碼表示(改變其階碼),所以需要對浮點數進行規格化處理,以統一其形式,同時提高數據的表示精度。規格化處理(基數為2)①尾數部分以純小數形式表示,其絕對值應滿足0.5≤▕X▏<1。若不滿足該條件,則需要修改階碼并對尾數進行移位,以使尾數滿足該條件;②當尾數為正時,無論其使用原碼還是補碼表示,X應滿足條件:0.5≤X<1。以二進制形式表示為X=0.1xx…x(x為0或1);③用原碼表示的負尾數,X滿足-1<X≤-0.5,以二進制形式表示為M=1.1xx…x(x為0或1);④以補碼表示的負尾數,X滿足-1≤M<-0.5,以二進制形式表示為X=1.0xx…x(x為0或1);從上面的討論可以看出,如果規格化的尾數用原碼表示,則其最高位一定為1如果改用補碼表示,則尾數的最高位與其符號位相反,即為0。
第二十一頁,共七十四頁。
2.符號數據的表示方法現代計算機不僅處理數值領域的問題,而且處理大量非數值領域的問題。這樣一來,必然要引入文字、字母以及某些專用符號,以便表示文字語言、邏輯語言等信息。例如人機交換信息時使用英文字母、標點符號、十進制數以及諸如$,%,+等符號。然而數字計算機只能處理二進制數據,因此,上述信息應用到計算機中時,都必須編寫成二進制格式的代碼,也就是字符信息用數據表示,稱為符號數據。最常見的編碼格式為ASCⅡ碼和EBCDIC碼。(1)ASCⅡ碼目前國際上普遍采用的一種字符系統是七單位的ASCII碼(美國國家信息交換標準字符碼),它包括10個十進制數碼,26個英文字母和一定數量的專用符號,如$,%,+,=等,總共128個元素,因此二進制編碼需要7位,加上一個偶校驗位,共8位,剛好為一個字節。表2-1列出了七單位的ASCII碼字符編碼表。ASCII碼規定8個二進制位的最高一位為0,余下的7位可以給出128個編碼,表示128個不同的字符。其中95個編碼,對應著計算機終端能輸人并且可以顯示的95個字符,打印機設備也能打印這95個字符,如大小寫各26個英文字母,0~9這10個數字符,通用的運算符和標點符號+,-,*,\,>,=,<等等。另外的33個字符,其編碼值為0~31和127,則不對應任何一個可以顯示或打印的實際字符,它們被用作控制碼,控制計算機某些外圍設備的工作特性和某些計算機軟件的運行情況。第二十二頁,共七十四頁。計算機里的存儲和傳送單位通常使用Byte(1Byte=8bit),所以7位的ASCII碼也用一個字節來表示。ASCII編碼和128個字符的對應關系如表2.1所示。表中編碼符號的排列次序為b7b6b5b4b3b2b1b0,最高1位沒有使用,通常填0;也可以把它用作校驗位或者用來擴展字符集。表中未給出,列b6b5b4為高位部分,行b3b2b1b0為低位部分。
ASCII的字符編碼表一共有24=16行,23=8列。低4位編碼b3b2b1b0用作行編碼,而b6b5b4高3位用作列編碼。值得注意的一點是數字“0”到“9”的編碼:它們都位于3列(011),從0行(0000)排列到9行(1001),即“0”的ASCII碼為(0110000)2=(30)16,“9”的
ASCII碼為(0111001)2=(39)16。把高3位屏蔽掉,低4位恰是“0”~“9”的二進制碼。可以看出,十進制的8421碼可以去掉b6b5b4(=011)而得到。這個特點使得在數字符號(ASCII碼)與數字值(二進制碼)之間進行轉換非常方便。
第二十三頁,共七十四頁。表2-1ASCⅡ字符編碼表
0000010100111001011101110000NULDELSP0@P`p0001SOHDC1!1AQaq0010STXDC2〃2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111DELETB‘7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\l┃1101CRGS-=M]m}1110SORS.>N∧n~1111SIUS/?O—oDEL第二十四頁,共七十四頁。字符串是指連續的一串字符,通常方式下,它們占用主存中連續的多個字節,每個字節存一個字符。當主存字由2個或4個字節組成時,在同一個主存字中,既可按從低位字節向高位字節的順序存放字符串內容,也可按從高位字節向低位字節的次序順序存放字符串內容。這兩種存放方式都是常用方式,不同的計算機可以選用其中任何一種。例如下述字符串:
圖2-1字符串在主存中的存放
第二十五頁,共七十四頁。IF┗┛A>B┗┛ELSE┗┛READ(C)┗┛
就可以按圖2-1所示從高位字節到低位字節依次存放在主存中。其中主存單元長度由4個字節組成。每個字節中存放相應字符的ASCII值,文字表達式中的空格“┗┛”在主存中也占一個字節的位置。因而每個字節分別存放十進制的73,70,32,65,62,66,32,69,76,83,69,32,82,69,65,68,40,67,41,32。(2)EBCDIC碼EBCDIC(ExtendedBinaryCodedDecimalInterchangeCode)即所謂擴展的二/十進制交換碼。采用8bit編碼來表示一個字符,共可以表示28=256個不同符號,但EBCDIC中并沒有使用全部編碼,只選用了其中一部分,剩下的保留作擴充用。EBCDIC碼常用于IBM大型機中。在EBCDIC碼制中,數字“0”~“9”的高4位編碼都是1111,而低4位編碼則依次為0000到1001。把高四位屏蔽掉,也很容易實現從EBCDIC碼到二進制數字值的轉換。
第二十六頁,共七十四頁。3.漢字的表示方法
(1)
漢字的輸入編碼
為了能直接使用西文標準鍵盤把漢字輸入到計算機,就必須為漢字設計相應的輸入編碼方法。當前采用的方法主要有以下三類:
數字編碼
常用的是國標區位碼,用數字串代表一個漢字輸入。區位碼是將國家
標準局公布的6763個兩級漢字分為94個區,每個區分94位,實際上把漢字表示成二維數組,每個漢字在數組中的下標就是區位碼。區碼和位碼各兩位十進制數字,因此輸入一個漢字需按鍵四次。例如“中”字位于第54區48位,區位碼為5448。
數字編碼輸入的優點是無重碼,且輸入碼與內部編碼的轉換比較方便,缺點是代碼難以記憶。
拼音碼拼音碼是以漢語拼音為基礎的輸入方法。凡掌握漢語拼音的人,不需訓練和記憶,即可使用。但漢字同音字太多,輸入重碼率很高,因此按拼音輸入后還必須進行同音字選擇,影響了輸入速度。
第二十七頁,共七十四頁。
字形編碼
字形編碼是用漢字的形狀來進行的編碼。漢字總數雖多,但是由一筆
一劃組成,全部漢字的部件和筆劃是有限的。因此,把漢字的筆劃部件用字母或數字進行編碼,按筆劃的順序依次輸入,就能表示一個漢字。例如五筆字型編碼是最有影響的一種字形編碼方法。
除了上述三種編碼方法之外,為了加快輸入速度,在上述方法基礎上,發展了詞組輸入、聯想輸入等多種快速輸入方法。但是都利用了鍵盤進行“手動”輸入。理想的輸入方式是利用語音或圖像識別技術“自動”將拼音或文本輸入到計算機內,使計算機能認識漢字,聽懂漢語,并將其自動轉換為機內代碼表示。目前這種理想已經成為現實。(2)
漢字的存儲(漢字內碼)漢字內碼是用于漢字信息的存儲、交換、檢索等操作的機內代碼,一般采用兩個字節表示。英文字符的機內代碼是七位的ASCII碼,當用一個字節表示時,最高位為“0”。為了與英文字符能相互區別,漢字機內代碼中兩個字節的最高位均規定為“1”。例如漢字操作系統CCDOS中使用的漢字內碼是一種最高位為“l”的兩字節內碼。有些系統中字節的最高位用于奇偶校驗位,這種情況下用三個字節表示漢字內碼。
第二十八頁,共七十四頁。
(3)
漢字的輸出(漢字字模碼)字模碼是用點陣表示的漢字字形代碼,它是漢字的輸出形式。根據漢字輸出的要求不同,點陣的多少也不同。簡易型漢字為16×16點陣,提高型漢字為24×24點陣、32×32點陣,甚至更高。因此字模點陣的信息量是很大的,所占存儲空間也很大。以16×16點陣為例,每個漢字要占用32個字節,國標兩級漢字要占用256K字節。因此字模點陣只能用來構成漢字庫,而不能用于機內存儲。字庫中存儲了每個漢字的點陣代碼。當顯示輸出或打印輸出時才檢索字庫,輸出字模點陣,得到字形。圖2-2示出了“大”字的點陣及編碼。注意,漢字的輸入編碼、漢字內碼、字模碼是計算機中用于輸入、內部處理、輸出三種不同用途的編碼,不要混為一談。第二十九頁,共七十四頁。圖2-2漢字的字模點陣及編碼
第三十頁,共七十四頁。4.校驗碼元件故障、噪聲干擾等各種因素常常導致計算機在處理信息過程中出現錯誤。例如將1位x從部件A傳送到部件B,可能由于傳送信道中的噪聲干擾而受到破壞,以至于在接收部件B收到的是而不是x。為了防止這種錯誤,可將信號采用專門的邏輯線路進行編碼以檢測錯誤,甚至校正錯誤。通常的方法是,在每個字上添加一些校驗位,用來確定字中出現錯誤的位置。計算機中常用這種檢錯或糾錯技術進行存儲器讀寫正確性或傳輸信息的檢驗。這里僅介紹檢錯碼中的奇偶校驗碼。最簡單且應用廣泛的檢錯碼是采用一位校驗位的奇校驗或偶校驗。設X=(x0
x1
…xn-1)是一個n位字,則奇校驗位
定義為
C
=x0x1…xn-1
式中⊕代表按位加,表明只有當X中包含有奇數個1時,才能使
=1,即C=0。
同理,偶校驗位C定義為C=x0x1…xn-1
即X中包含偶數個1時,才使C=0。
假設一個字X從部件A傳送到部件B。在源點A,校驗位C可用上面公式算出來,并合在一起將(x0x1
…xn-1C)送到B。假設在B點真正接收到的是X=(x’0x’1
…x’n-1C’),然后計算
F=(x’0
x’1
…
x’n-1
C’)若F=1,意味著收到的信息有錯,例如(x0
x1
…xn-1
)中正巧有一位變“反”時就會出現這種情況。若F=0,表明X字傳送正確。奇偶校驗可提供單個錯誤檢測,但無法檢測多個錯誤,更無法識別錯誤信息的位置。
第三十一頁,共七十四頁。【例2.7】
已知下表中左面一欄有5個字節的數據。請分別是用奇校驗和偶校驗進行編碼,填在中間一欄和右面一欄。解:假定最低一位為校驗位,其余高8位為數據位,列表如下。從中看出,校驗位的值取。還是取1,是由數據位中1的個數決定的。數據偶校驗編碼奇校驗編碼101010100101010101010101001010101000000000000000000001011111111011111110111111110111111111第三十二頁,共七十四頁。2.1.2計算機中算術運算和邏輯運算1.二進制數的算術運算(1)定點數運算①定點數加法/減法運算定點數的加法和減法運算使用補碼較為方便。對于定點小數的運算規則如下:加法:[X+Y]補={[X]補+[y]補}mod2減法:[X-Y]補={[X]補+[-y]補}mod2當運算結果超過了定點數的表示范圍時,則產生溢出(Overflow),常用的溢出檢測機制主要有以下兩種:進位判決法:令Cn—1表示次高位(最高數值位)向最高位(符號位)的進位,Cn則表示符號位的進位,則結果是否溢出的判決表如表2-2所示,即CnCn—1=1時溢出。這里,表示異或。
第三十三頁,共七十四頁。表2-2溢出的判決表
CnCn-1Overflow=CnCn-100無溢出01溢出10溢出11無溢出第三十四頁,共七十四頁。【例2.8】X=(100)10=(01100100)2,Y=(50)10=(00110010)2,求X+Y。解:[X]補=01100100,[y]補=00110010[X+Y]補=[X]補+[y]補=10010110
CnCn—1=1,表示結果溢出。【例2.9】X=(-100)l0—(-01100100)2,Y=(-50)l0=(-00110010)2,求X-Y。解:[X]補=10011100,[-y]補=00110010[X-Y]補=[X]補+[-Y]補=11001110
CnCn-1=0,因此沒有溢出。雙符號位判決法:采用兩位二進制位來表示符號位:00~正號,11~負號,根據運算結果的符號位也可以判定其是否溢出,其判決表如表2.3所示。
第三十五頁,共七十四頁。表2-3雙符號位判決表
運算結果的符號位Overflow運算結果的符號位Overflow00無溢出10溢出01溢出11無溢出第三十六頁,共七十四頁。【例2.10】X=(100)l0=(01100100)2,Y=(50)l0=(00110010)2,求X+Y。解:[X]補=001100100[Y]補=000110010[X+Y]補=[X]補+[y]補=010010110其符號位為01,說明結果溢出。②定點數乘法運算在作定點數的乘法運算時采用原碼比較方便。通常使用原碼一位乘法來求兩個定點數的乘積。運算規則:乘積的符號位等于乘數和被乘數的符號位進行異或;乘積的值等于兩數絕對值之積,即乘數和被乘數的絕對值進行移位相加。算法:(用絕對值進行運算)令X表示被乘數,Y表示乘數,P表示部分積以存放中間結果,flag用作判別位,count用作計數。
第三十七頁,共七十四頁。令P=0;count=0;flag=0;P和Y一起右移一位(P為高位部分,Y為低位部分),右移時P的最高位補0,P的最低位移入Y的最高位,Y的最低位移入到flag中;如果flag=1同P=P+X,否則P不變;
count=count+1,如果count超過Y的位數則運算停止,否則轉到上述第2步繼續執行;
P和Y的內容就是所求乘積的絕對值,其中P存放積的高位,而Y存放積的低位。【例2.11】X=(10)l0=(1010)2,Y=(-6)10=(-0110)2,求X,Y。解:[▕X▏]原=1010,[▕Y▏]原=0110乘積的符號位S=01=1。
第三十八頁,共七十四頁。表2-4定點數乘法運算表
執行動作部分積P乘數Y判別位Flagcounter初始化0000011000右移0000001101右移0000000112P+X1010
右移0101000013P+X1111
右移0111100004右移0011110005第三十九頁,共七十四頁。則所得乘積為(-00111100)2=(-60)l0
③定點數除法運算定點數的除法通常也常用原碼進行。下面介紹常用的加減交替法求兩個數X和Y的商。運算規則:商的符號位同定點數原碼乘法的處理方法,由兩數的符號位進行異或;兩數的絕對值部分進行相除;算法:(求X/Y,設X、Y的數值部分長度為N)
令及R=X,counter=0;R=R-Y;若R為正則商1,否則商0;
R左移一位,counter=counter+1;
若上一次商為1則R=R—Y,否則R=R+Y;R為正則商1,否則商0;若R=0或者counter≥N則結束,否則轉到上述第3步執行。
第四十頁,共七十四頁。
(2)浮點數運算在進行浮點運算之前,應先對浮點數進行規格化。①浮點數的加減運算設有浮點數X=M·2i,Y=N·2j,求X+Y或X-Y,其運算過程如下:對階:使兩個數的階碼相同。令K=▕i-j▏,把階碼小的數的尾數右移K位,其階碼加上K。當右移尾數時,若尾數用補碼表示則符號位參加移位,符號位不變,如果是原碼,則符號位不參加移位,尾數的最高位補0。尾數進行加、減運算:規格化處理:若尾數所得結果不是規格化的數,則需對其進行規格化處理。當尾數溢出時,尾數向右規格化位,階碼加1;當尾數用補碼表示,尾數的最高位與符號位相同時,應向左規格化,尾數每向左移一位,階碼減1,直到尾數最高位與符號位相反。
第四十一頁,共七十四頁。舍入操作:舍入的方法常用0舍1入,即當向右規格化時,若移掉的最高位為1,則在尾數末位加1,否則舍去。另一種則是“恒1”法,即不管移走的數據為何值,尾數最末位恒置1。溢出判斷:以階碼為準。若階碼上溢,則結果溢出;若階碼下溢,則結果為0;否則結果正確無溢出。②浮點數的乘除運算浮點數相乘,其積的階碼為兩數階碼相加,積的尾數為兩尾數相乘。浮點數相除,其商的階碼為兩數階碼之差,商的尾數為兩尾數相除。其結果都需要進行規格化處理,同時還需要判斷其階碼是否溢出。
2.邏輯代數及邏輯運算邏輯代數是1849年英國數學家喬治·布爾提出的以代數的方式對邏輯變量進行描述和分析的數學工具,又稱布爾代數。邏輯變量的取值只有“真”和“假”,通常以1和0表示。
第四十二頁,共七十四頁。(1)基本的邏輯運算①“與”(AND)運算又稱為邏輯乘運算,其運算符號通常用AND、∩、∧或·等表示。兩個變量的“與”運算的運算規則如表2-4所示。即當A、B中任一變量取0值時,其運算結果為0。
表2.5“與”運算表表2.6“或”運算表
ABZ=A·B000010100111ABZ=A+B000011101111第四十三頁,共七十四頁。②“或”(OR)運算又稱為邏輯加運算,其運算符號為OR、U、V或+等。兩個變量的“或”運算規則如表2-5所示。即當A、B中任意一個取1值時,其運算結果為l。③“非”(NOT)運算又稱為邏輯求反運算。常用表示對變量A進行求反。其運算規則很簡單:=0,=1。④“異或”運算常用的還有“異或”運算,又稱為半加運算,其運算符號為XOR或。異或運算是一種復合邏輯運算,可用上述基本邏輯運算表示如下:A⊕B=A·B+A·B
第四十四頁,共七十四頁。2.2邏輯部件
2.2.1寄存器
1.寄存器組(registerblock)概述CPU中的寄存器通常可以分為兩類:用戶可見的寄存器(user-visibleregisters)和狀態控制寄存器(controlandstatusregisters)。
(1)用戶可見的寄存器用戶能夠通過機器語言來訪問這些寄存器。合理優化地使用這些寄存器可以減少對主存的訪問次數,從而提高程序的執行速度。按其功能可以分為4類:①通用寄存器(generalpurposeregister)通用寄存器的用途由程序員編程決定,例如可以用來存放操作數,也可以用作尋址寄存器。②數據寄存器(dataregister)數據寄存器僅能用來存放數據而不能用來對操作數的地址進行計算。
第四十五頁,共七十四頁。③地址寄存器(addressregister)地址寄存器用來存放操作數的地址,一般而言地址寄存器又可以分為段地址寄存器(segmentpointerregister)、間址寄存器(indexregister)和堆棧寄存器(stackpointerregister)。段地址寄存器用在采用段式內存管理的計算機中,存放著某一段內存區域的基地址。間址寄存器用在間接尋址(indexedaddressing)方式下。堆棧寄存器用以存放堆棧棧頂的地址,使得在使用堆棧操作(如push,pop)時無須顯式地給出操作數的地址(即其地址是隱含的)。④標志寄存器(flag/conditioncodesregister)標志寄存器中的位是由CPU硬件根據運算的結果而設立的一些指示位,以反映該次運算的某些特征:結果為正、負、零、溢出等等,并可以用作分支跳轉的依據。一般而言,標志寄存器允許編程者進行讀操作,但不允許對其直接進行寫操作。
第四十六頁,共七十四頁。(2)狀態控制寄存器(CSR)這些寄存器被控制器(controlunit)用來控制CPU的操作。通常是程序員不可見的,但也有某些寄存器在某種特定的狀態下可以由某些特權指令進行訪問。常見的CSR有:程序計數器(programcounter,PC)、指令寄存器(instructionregister,IR)、存儲器地址寄存器(memoryaddress,register,MAR)、存儲器緩沖寄存器(memorybufferregister,MBR)以及程序狀態字(programstatusword,PSW)。PC中存放著下一條待取指令的地址。當程序順序執行時,CPU在取回一條指令后,會自動修改PC中的值以使其指向下一條指令。而程序中的分支或跳轉指令也是通過修改PC中的值來達到改變流程的目的。IR中存放著CPU剛取回的指令,以供指令譯碼使用。CPU和存儲器之間的數據交換通過MAR和MBR來實現。MAR中存放著待訪問的內存單元的地址而MBR則存放從內存中讀人的數據或要寫回內存單元的數據。這4個寄存器(PC、IR、MAR、MBR)用來實現在CPU和存儲器(memory)之間的數據交換。另外CPU內部,在ALU與MBR、用戶可見的寄存器之間也可能存在用作輸入/輸出緩沖寄存器。
第四十七頁,共七十四頁。2.寄存器邏輯組成寄存器是計算機的一個重要部件,用于暫存數據、指令等。它由觸發器和一些控制門組成。在寄存器中,常用的是正邊沿觸發D觸發器和鎖存器。圖2-3所示是由正沿觸發的D觸發器組成的四位寄存器。在CP正沿作用下,外部數據才能進入寄存器。D是復位端,CP是
D觸發器的脈沖端,CK是增加了個與邏輯門電路來取正沿脈沖的輸入端。四D寄存器的功能見表2-7,其中↑代表正脈沖,也即正沿。
第四十八頁,共七十四頁。圖2-3四D寄存器
第四十九頁,共七十四頁。表2-7四D寄存器功能表
控制和輸入輸出RDCK1D2D3D4D1Q2Q3Q4Q1↑1D2D3D4D1D2D3D4D0×××××0000第五十頁,共七十四頁。事實上,在計算機中常要求寄存器有移位功能。如在進行乘法時,要求將部分積右移;在將并行傳送的數轉換成串行數時也需移位。有移位功能的寄存器稱為移位寄存器。2.2.2計數器計數器是計算機、數字儀表中常用的一種電路。計數器按時鐘作用方式來分,有同步計數器和異步計數器兩大類。在異步計數器中,由于高位觸發器的時鐘信號是由低一位觸發器的輸出來提供的,但是結構簡單。同步計數器中各觸發器的時鐘信號是由同一脈沖來提供的,因此,各觸發器是同時翻轉的,它的工作頻率比異步計數器高,但結構較復雜。計數器按計數順序來分,有二進制、十進制兩大類。在計算機中較少使用異步計數器,這里著重介紹有并行輸入數據功能的正向同步十進制計數器。圖2-4是用主—從J—K觸發器構成的同步十進制集成化計數器。同步計數器是采用快速進位方式來計數的,觸發器及實現快速進位的邏輯電路是它的核心。
第五十一頁,共七十四頁。圖2-4十進制同步計數器
第五十二頁,共七十四頁。“預置數”是集成化同步計數器的一個重要功能。一般設置控制端L,用來選擇電路是執行計數還是執行預置數:當L=1,執行同步計數;L=0,執行預置數。由于J—K觸發器數據輸入是雙端的,所以要將單端的預置數A~D經兩級“與非”門變成互補信號,再加在J,K端。圖2-4所示與非門4~11就是為此目的而設置的。當L=1時,這些與非門被封鎖,快速進位電路輸出經或門12~15進入觸發器,電路執行計數;當L=0,門4~11打開,快速進位被封鎖,電路執行置數。
能夠方便地擴展位數是集成化計數器的一個特點。下面介紹擴展方法。計數器擴展應滿足以下條件。
首先,要有標志計數器已計至最大數的進位輸出端RC,對二進制、十進制計數器,RC分別為:
二進制計數器:RC=QAQBQCQD
十進制計數器:RC=QAQD第五十三頁,共七十四頁。其次,計數器應有保持功能。圖2-4計數器中設置了“計數允許”端P和T,用來控制計數器快速進位電路和RC形成門:當P,T均為“1”,快速進位電路才能打開(見表2-8),此時若L=1,則電路處于計數狀態;若P=0,T=1,則快速進位電路封鎖,電路不能計數,此時若L=1,預置數也被封鎖,又由于T=1時RC形成門不封鎖,所以各觸發器狀態及RC均保持。有了RC,P,T端,就可以方便地對計數器進行擴展。
表2-8同步計數器功能表第五十四頁,共七十四頁。PTLRDCK功能1111↑計數××01↑并行輸入數據0111×保持×011×觸發器保持,RC=0×××1×異步清“0”第五十五頁,共七十四頁。2.2.3譯碼器譯碼器有n個輸入變量,2n個(或少于2n個)輸出,每個輸出對應于n個輸入變量的一個最小項。當輸入為某一組合時,對應的僅有一個輸出為“1”(或為“0”),其余輸出均為“0”(或為“1”)。譯碼器的用途是把輸入代碼譯成相應的控制電位,以實現代碼所要求的操作。圖2-5給出了2輸入4輸出譯碼器的邏輯圖。譯碼器中常設置“使能”控制端正,當該端為“1”時,譯碼器功能被禁止,此時所有輸出均為“1”。使能端的一個主要功能是用來擴充輸人變量數。第五十六頁,共七十四頁。第五十七頁,共七十四頁。2.3控制部件
控制器(見圖2-6)負責控制整個計算機系統的運行,讀取指令寄存器、狀態控制寄存器以及從外部來的控制信號(例如中斷信號),發布外控制信號控制CPU與存儲器、I/O設備進行數據交換,發布內控制信號控制寄存器間的數據交換,控制ALU完成指定的運算功能,并且管理其他的CPU內部操作。2.3.1控制器的基本功能控制器的基本功能就是時序(sequencing)控制和執行(execution)控制。根據當前運行的程序,控制器使CPU按一定的時序關系執行一系列的微操作(micro-operation),從而完成程序規定的動作。
第五十八頁,共七十四頁。控制器的輸入信號有:時鐘信號、指令寄存器、標志位、控制總線上的控制信號。控制器的輸出信號包括:CPU內的控制信號、發往控制總線的控制信號。
1.時鐘信號控制器根據由時鐘電路產生的時鐘信號進行定時,以控制各種操作按指定的時序進行。計算機的基本功能是執行程序,而程序由一連串的指令組成;計算機的執行過程由一連串的指令周期組成,每一指令周期完成一條機器指令。這些指令周期又可進一步細分為更小的單元,直到微操作(micro-operation)——CPU完成的基本的原子操作。時鐘電路由時鐘脈沖發生器、分頻電路及各種外圍電路組成。時鐘脈沖發生器的晶振頻率稱為機器的主頻,它產生的時鐘脈沖信號是整個機器的時間基準,其周期T稱為該計算機的時鐘周期。執行一條機器指令所需的時間稱為一個指令周期(instruction
cycle),因為CPU機器指令的執行的時間通常互不相同,因而其指令周期也各不相同。為了便于控制和管理,把指令周期進行分解,細化為各種原子操作(微操作,μop),每一μop都與CPU的寄存器相關。完成一個微操作的時間就稱為CPU周期(機器周期)。例如一條指令周期通常可分為取指子周期、執行子周期、保存結果子周期,而每一個子周期又由若干原子周期——CPU周期組成。
第五十九頁,共七十四頁。2.指令寄存器(IR)控制器需要完成取指令、分析指令和執行指令的操作。控制器根據程序計數器PC中的內容(指令地址)從存儲器中取出該指令;然后對指令進行譯碼以確定所需執行的
μop;最后控制器根據分析的結果發出一系列的控制信號控制各相關部件(運算器、存儲器、I/O設備)完成規定的操作;同時產生下一條指令的地址。MAR←(PC)MBR←MemoryIR←(MBR)PC←(PC)+13.中斷控制邏輯計算機系統通常都提供了中斷機制,允許某一事件的發生(如由I/O設備提出服務請求)可以中止CPU正在執行的程序,轉去對該事件進行處理,然后再返回原程序被中止處繼續執行。中斷機制的主要作用就是提高CPU的處理效率;使CPU與I/O設備并行工作,當進行I/O操作時CPU可以處理其他事務;同時使CPU能夠及時地響應各種預先不知的異常事件,并進行處理;還可以實現分時操作等等。
第六十頁,共七十四頁。(1)中斷處理過程
如圖2-7所示,如果系統允許響應中斷請求,那么在每條指令執行完成后,控制器都要檢查是否有中斷發生,如果沒有中斷請求信號,控制器則轉去取下一條指令,如果有中斷事件發生,則暫停執行當前程序并保護其現場狀態信息(如下一條指令的地址、相關寄存器的內容等等),然后轉去執行中斷服務程序。當完成中斷服務后,再恢復以前保存的現場信息,從原程序被中止處(斷點)繼續執行。第六十一頁,共七十四頁。圖2-7計算機的中斷機制
第六十二頁,共七十四頁。通常把CPU中斷處理過程分為兩個階段:中斷響應過程和中斷服務過程。①中斷響應過程CPU接受中斷請求后,就暫停執行當前程序,進人中斷響應過程:關閉中斷:為了使CPU在中斷服務后能夠返回原程序斷點處繼續執行,在中斷響應期間,保存斷點信息之前,需要關閉中斷允許,禁止CPU響應新的中斷請求。保存斷點信息:當CPU進入中斷響應過程,關閉中斷允許后,控制器要保護當前正在執行的程序的斷點信息;把程序的斷點即PC里的內容,以及PSW里的內容等推入系統堆棧。中斷返回以后,再從堆棧中恢復現場信息,繼續執行主程序。把中斷服務程序的入口地址置人PC中:控制器保存完斷點信息后,接著就把相應的中斷服務程序入口地址置入程序計數器中去,CPU馬上要執行的下一條指令就是中斷服務程序的第一條指令。②
中斷服務過程當PC中置入中斷服務程序的入口地址之后,接著保留現場信息,CPU開放中斷允許響應新的中斷請求,然后就轉入中斷服務程序,對中斷事件進行處理。中斷服務完成之后,CPU再次禁止中斷,以恢復現場和斷點信息,使之返回到原主程序斷點處繼續執行。
第六十三頁,共七十四頁。4.總線控制邏輯計算機各個部件通過總線(BUS)相互連接起來,傳遞信息協調工作,共同完成操作。CPU內部各器件之間互連的總線稱為內部總線,CPU與其他部件之間互連的總線稱為外部總線(又稱系統總線)。由于總線是共享的傳輸通道,任意一時刻只能由一個器件負責發送數據,所以需要由總線控制器采協調各部件申請使用總線。當發生多個設備爭用總線時,仲裁電路會依據某種策略(如優先級)來決定使用總線的先后順序。常用的仲裁方式主要有中央仲裁和分布式仲裁兩種。2.3.2控制器的實現(硬布線邏輯/微程序控制)控制器的作用就是根據輸入的時鐘信號、指令信息以及各種狀態信號產生相應的控制信號去控制各個部件完成特定的操作。控制器的邏輯設計中包括時序邏輯(控制微操作的時序關系)、譯碼邏輯(對指令操作碼進行譯碼分析)、執行邏輯(按一定的順序執行微操作)和決策邏輯(根據ALU等部件的標志位來決定下一步的動作)。控制器的實現方法主要有兩種:硬布線邏輯(hardwiredimplementation)和微程序控制(micro-programmedimplementation)。
第六十四頁,共七十四頁。1.硬布線邏輯在這種機制下,控制器基本上由組合電路實現,因此這種方法又稱之為組合邏輯實現(圖2-8)。(1)指令譯碼控制器分析每條待執行的指令,對不同的操作碼產生不同的控制信號。為了簡化設計,可以由一個譯碼器來完成操作碼的識別功能,一個n位輸入的譯碼器可以識別2n條不同的指令操作碼,為每一條操作碼產生不同的輸出信號。(2)定時(一個指令所產生的輸出控制信號是有時序關系的)控制器利用輸入的時鐘信號作為產生各種控制信號的定時信號。因為控制器在一個指令周期內,需要在不同的時刻發出不同的控制信號,所以采用一個定時電路根據時鐘信號依次產生定時信號如T1,T2,…
,Tn。控制器就在T1,T2,…
,Tn的作用下,順序產生各種控制信號。在指令周期的末尾,控制器要復位定時電路,以便在下一個指令周期開始時,定時電路又可以重新產生定時信號T1,T2,…
,Tn。
第六十五頁,共七十四頁。(3)控制邏輯我們已經討論了硬布線邏輯控制器的定時邏輯和指令譯碼邏輯,接下來討論其內部控制邏輯,控制邏輯的功能就是根據輸入信號產生相應的輸出控制信號,所以可以用一組布爾方程來描
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 疾病全程管理護理
- 2025年婦產科遠程醫療質量管理計劃
- 神經根損傷治療
- 農田灌溉水污染防治措施
- 2025年媒體行業內容質量問題及整改措施
- 教師心理輔導技巧及實施措施
- 樁基土石方基坑支護復習試題有答案(一)
- 冬季野外生存活動安全防范措施
- 幼兒園教師社會責任發展計劃
- 2019-2025年企業人力資源管理師之四級人力資源管理師高分通關題庫A4可打印版
- 人才盤點與人才儲備計劃設計合同
- 道路交通安全宣傳課件
- 2025年入團考試時事熱點及試題與答案
- (2025)保密觀題庫及答案
- 中華人民共和國民營經濟促進法
- 電大信息技術應用終結性作業
- 完整版:美制螺紋尺寸對照表(牙數、牙高、螺距、小徑、中徑外徑、鉆孔)
- 籃球比賽記錄表(上下半場)
- 2022年商務標技術標最全投標文件模板
- 市政道路綜合整治工程施工部署方案
- 泄漏擴散模型及其模擬計算
評論
0/150
提交評論