版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第二章 數(shù)據(jù)表示方法2-1 數(shù)據(jù)表示方法和運(yùn)算器 2-2 邏輯部件 2-3 控制部件 .21 數(shù)據(jù)表示方法和運(yùn)算器 211計(jì)算機(jī)中數(shù)據(jù)的表示方法 當(dāng)前的計(jì)算機(jī)所采用的存儲(chǔ)器件都是兩態(tài)器件,所以適宜于存放二進(jìn)制數(shù)據(jù)。雖然為了方便起見,也運(yùn)用其他進(jìn)制,如十進(jìn)制、十六進(jìn)制,但是在計(jì)算機(jī)內(nèi)部數(shù)據(jù)還是以二進(jìn)制的方式存放和處置。二進(jìn)制只運(yùn)用了兩個(gè)不同的數(shù)字符號(hào),易于用物理器件來實(shí)現(xiàn):在物理世界中具有兩個(gè)穩(wěn)定形狀的物理器件很多,如晶體管的“截止與“導(dǎo)通、電容的“充電與“放電、電壓信號(hào)的“高與“低、脈沖的“有與“無,電磁單元的“正向磁化與“反向磁化等等,只需規(guī)定其中一種穩(wěn)定形狀表示“1,另一種穩(wěn)定形狀表示“0
2、,就可以用來表示二進(jìn)制數(shù)位了。其次,二進(jìn)制的運(yùn)算規(guī)那么非常簡(jiǎn)單,易于用電子器件來實(shí)現(xiàn)。數(shù)據(jù)的類型多種多樣,如文件、圖、表、樹、陣列、鏈表、棧、向量、串、實(shí)數(shù)、整數(shù)、布爾數(shù)、字符等。計(jì)算機(jī)里用到的數(shù)據(jù)類型主要可分為兩類:表示數(shù)量的數(shù)值數(shù)據(jù)和非數(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ù)的類型(小數(shù)、整數(shù)、實(shí)數(shù)和復(fù)數(shù))、符號(hào)如何表示以及小數(shù)點(diǎn)的位置;能夠遇到的數(shù)值范圍;數(shù)值準(zhǔn)確度;數(shù)據(jù)存儲(chǔ)和處置所需求的硬件代價(jià)。計(jì)算機(jī)中表示數(shù)值符號(hào)的方法是占用一位二進(jìn)制位
3、,1表示負(fù)號(hào)、0表示正號(hào)。常用的數(shù)值數(shù)據(jù)表示格式有兩種,根據(jù)小數(shù)點(diǎn)的位置是固定不變還是浮動(dòng)變化的分為定點(diǎn)格式和浮點(diǎn)格式。普通來說,定點(diǎn)格式允許的數(shù)值范圍有限,但要求的處置硬件比較簡(jiǎn)單。而浮點(diǎn)格式允許的數(shù)值范圍很大,但要求的處置硬件比較復(fù)雜。 (1) 定點(diǎn)數(shù)的表示方法 所謂定點(diǎn)格式,即商定機(jī)器中一切數(shù)據(jù)的小數(shù)點(diǎn)位置是固定不變的。由于商定在固定的位置,小數(shù)點(diǎn)就不再運(yùn)用記號(hào)“來表示。原理上講,小數(shù)點(diǎn)位置固定在哪一位都可以,但是通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)。 . 例如用一個(gè)n1位字來表示一個(gè)定點(diǎn)數(shù)x,其中一位x0用來表示數(shù)的符號(hào),其他位數(shù)代表它的量值。為了將整個(gè)n1位一致處置起見,符號(hào)位x0放在最左
4、位置,并用數(shù)值 0和1分別代表正號(hào)和負(fù)號(hào),這樣,對(duì)于恣意定點(diǎn)數(shù)x=x0 x1x2xn,在定點(diǎn)機(jī)中可表示為如下方式: x0 x1 x2 xn-1 xn符號(hào) 數(shù)量值 . 假設(shè)數(shù)x表示的是純小數(shù),那么小數(shù)點(diǎn)位于x0和x1之間。當(dāng)x0 x1x2xn各位均為0時(shí),數(shù)x的絕對(duì)值最小,當(dāng)各位均為1時(shí),x的絕對(duì)值最大,故數(shù)的表示范圍為 0 x12n 假設(shè)數(shù)x表示的是純整數(shù),那么小數(shù)點(diǎn)位于最低位xn的右邊,此時(shí)數(shù)x的表示范圍為 0 x2n1,目前計(jì)算機(jī)中多采用定點(diǎn)純整數(shù)表示,因此將定點(diǎn)數(shù)表示的運(yùn)算簡(jiǎn)稱為整數(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ī)
5、。浮點(diǎn)數(shù)是指小數(shù)點(diǎn)位置可以改動(dòng)的數(shù),顯然浮點(diǎn)數(shù)可用來表示帶符號(hào)的實(shí)數(shù)。例如:表示8位字長(zhǎng)的二進(jìn)制浮點(diǎn)數(shù)可以寫成 0.10110101 2111 尾 數(shù) 階碼 . 恣意一個(gè)十進(jìn)制數(shù)N可以寫成 N = 10ZX ,同樣,在計(jì)算機(jī)中一個(gè)恣意進(jìn)制數(shù)N可以寫成 N = Bz X其中X稱為浮點(diǎn)數(shù)的尾數(shù),是一個(gè)純小數(shù)。z是比例因子的指數(shù),稱為浮點(diǎn)的指數(shù),是一個(gè)整數(shù)。比例因子的基數(shù)B是一個(gè)常數(shù),普通規(guī)定只為2,8或16。在機(jī)器中表示一個(gè)浮點(diǎn)數(shù)時(shí),一是要給出尾數(shù),用定點(diǎn)小數(shù)方式表示。尾數(shù)部分給出有效數(shù)字的位數(shù),因此決議了浮點(diǎn)數(shù)的表示精度。二是要給出指數(shù),用整數(shù)方式表示,常稱為階碼,階碼指明小數(shù)點(diǎn)在數(shù)據(jù)中的位置,
6、因此決議了浮點(diǎn)數(shù)的表示范圍。浮點(diǎn)數(shù)也要有符號(hào)位。因此一個(gè)機(jī)器浮點(diǎn)數(shù)該當(dāng)由階碼和尾數(shù)及其符號(hào)位組成: . 32位浮點(diǎn)數(shù)的規(guī)范格式為: Z0Z1 Z2 Zn-1 ZnX0X1 X2 Xn-1 Xn階符 階碼 數(shù)符 尾數(shù) 3130 2322 032位浮點(diǎn)數(shù)F Z X 64位浮點(diǎn)數(shù)的規(guī)范格式為: 6362 5251 064位浮點(diǎn)數(shù)F Z X . 不論是32位浮點(diǎn)數(shù)還是64位浮點(diǎn)數(shù),規(guī)定基數(shù)B2。由于基數(shù)2是固定常數(shù),不用用顯示方式來表示它。 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ù)域的最前面。
7、Z是階碼,占用8位,階符采用隱含方式,即采用移碼方法來表示正負(fù)指數(shù)。移碼方法對(duì)兩個(gè)指數(shù)大小的比較和對(duì)階操作都比較方便,由于階碼域值大者其指數(shù)值也大。采用這種方式時(shí),將浮點(diǎn)數(shù)的指數(shù)值z(mì)變成階碼Z時(shí),應(yīng)將指數(shù)z加上一個(gè)固定的偏移值127(01111111),即Zz127。一個(gè)規(guī)格化的32位浮點(diǎn)數(shù)X的值可表示為X(1)F(1X) 2E127 其中尾數(shù)域所表示的值是1X。由于規(guī)格化的浮點(diǎn)數(shù)的尾數(shù)域最左位也即最高有效位總是1,故這一位經(jīng)常不予存儲(chǔ),而以為隱藏在小數(shù)點(diǎn)的左邊。 . 64位的浮點(diǎn)數(shù)中符號(hào)位1位,階碼域11位,尾數(shù)域52位,指數(shù)偏移值是1023。因此規(guī)格化的64位浮點(diǎn)數(shù)X的真值為X=(1)F
8、(1X) 2E1O23 zE1023 假設(shè)不對(duì)浮點(diǎn)數(shù)的表示作出明確規(guī)定,同一個(gè)浮點(diǎn)數(shù)的表示就不是獨(dú)一的。例如05也可以表示成005101,50102等等。為了提高數(shù)據(jù)的表示精度,當(dāng)尾數(shù)的值不為0時(shí),其絕對(duì)值應(yīng)05,即尾數(shù)域的最高有效位應(yīng)為1,否那么要以修正階碼同時(shí)左右移小數(shù)點(diǎn)的方法,使其變成這一要求的表示方式,這稱為浮點(diǎn)數(shù)的規(guī)格化表示。當(dāng)一個(gè)浮點(diǎn)數(shù)的尾數(shù)為0,不論其階碼為何值,或者當(dāng)階碼的值遇到比它能表示的最小值還小時(shí),不論其尾數(shù)為何值,計(jì)算機(jī)都把該浮點(diǎn)數(shù)看成零值,稱為機(jī)器零。 浮點(diǎn)數(shù)所表示的范圍遠(yuǎn)比定點(diǎn)數(shù)大的多。假設(shè)(思索符號(hào)位)機(jī)器中的數(shù)由8位二進(jìn)制數(shù)表示時(shí):在定點(diǎn)機(jī)中這8位全部用來表示有
9、效數(shù)字(包括符號(hào));在浮點(diǎn)機(jī)中假設(shè)階符階碼占3位,數(shù)符尾數(shù)占5位。在此情況下,假設(shè)只思索正數(shù)值,定點(diǎn)機(jī)小數(shù)表示的數(shù)的范圍是00000000到01111111,相當(dāng)于十進(jìn)制數(shù)的0到127,而浮點(diǎn)機(jī)所能表示的數(shù)的范圍是21100001到21101111,相當(dāng)于十進(jìn)制數(shù)的112875。顯然,都用8位,浮點(diǎn)機(jī)能表示的數(shù)的范圍比定點(diǎn)機(jī)大得多。 . 一臺(tái)計(jì)算機(jī)中終究采用定點(diǎn)表示還是浮點(diǎn)表示,要根據(jù)計(jì)算機(jī)的運(yùn)用條件來確定。普通在高檔微機(jī)以上的計(jì)算機(jī)中同時(shí)采用定點(diǎn)、浮點(diǎn)表示,由運(yùn)用者進(jìn)展選擇。而單片機(jī)中多采用定點(diǎn)表示。 【例21】假設(shè)浮點(diǎn)數(shù)X0的二進(jìn)制存儲(chǔ)格式為(43240000)16,求其32位浮點(diǎn)數(shù)的十進(jìn)
10、制值。 解: 將16進(jìn)制數(shù)展開后,可得二制數(shù)格式為 0 100 0011 0 010 0100 0000 0000 0000 0000 F 階碼(8位) 尾數(shù)(23位) 指數(shù)z階碼127100001100111111100000111(7)10。包括隱藏位1的尾數(shù)1X1010 0100 0000 0000 0000 00001010010 于是有 X0(1)F 1X 2z(1010010) 2710100100(187)10。 . 【例22】將十進(jìn)制數(shù)1659375轉(zhuǎn)換成32位浮點(diǎn)數(shù)的二進(jìn)制格式來存儲(chǔ)。 解:首先分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù):16593751000010011挪動(dòng)小數(shù)點(diǎn),
11、使其在第1位和第2位之間10000100111000010011 24 z4 所以:F=0,E=4127 =131,X=000010011 那么得到的32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式為: 0100 0001 1000 0100 1100 0000 0000 0000 = 4184C00016 . (3)定點(diǎn)數(shù)據(jù)的編碼方法 真值與機(jī)器碼機(jī)器碼是數(shù)在計(jì)算機(jī)中的表示方式。對(duì)于數(shù)值數(shù)據(jù)而言,無論以定點(diǎn)方式表示或是以浮點(diǎn)方式表示,都需求經(jīng)過某種編碼 方法,以計(jì)算機(jī)所能處置的0和1二進(jìn)制位來表示其數(shù)值大小。通常一個(gè)數(shù)值數(shù)據(jù)的機(jī)內(nèi)表示方式稱為其機(jī)器碼,而一個(gè)機(jī)器碼所代表的數(shù)值稱為該機(jī)器碼的真值。計(jì)算機(jī)中只需機(jī)器
12、碼,不存在數(shù)的真值。假設(shè)機(jī)器碼的寬度為n,最高位為符號(hào)位,下面分別引見實(shí)踐運(yùn)用中常見的4種機(jī)器碼編碼方法:原碼、反碼、補(bǔ)碼和移碼。 原碼表示法定點(diǎn)整數(shù)原碼表示法定點(diǎn)整數(shù)原碼的定義如下所示: . X 原= X 0X2n1 X 原=2n1X 2n1X0 由定義可以看出,正整數(shù)的原碼就是其本身,負(fù)整數(shù)的原碼只需把其絕對(duì)值的原碼的符號(hào)位置為1即可。( 用0表示正號(hào),用1表示負(fù)號(hào))。原碼表示方法的定點(diǎn)整數(shù)的取值范圍為(2n1)X2n11。留意在原碼表示法中,零有正零和負(fù)零之分。000000,010000。定點(diǎn)小數(shù)的原碼表示法定點(diǎn)小數(shù)原碼的定義如下所示:X 原 X 0X1X 原1X 1X0. 正的純小數(shù)的
13、原碼就是其本身,而負(fù)的純小數(shù)的原碼可以經(jīng)過把其絕對(duì)值的原碼的符號(hào)位置1來得到。其取值范圍為(12(n1)X(12(n1)。綜上可以看出一個(gè)數(shù)的原碼是由符號(hào)位加上數(shù)值位絕對(duì)值組成,符號(hào)位為0代表正數(shù),符號(hào)位為1代表負(fù)數(shù)。由于0有0和0兩種表示方法,n位二進(jìn)制數(shù)可以表示2n1個(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ǔ)碼的定義如下所示:X 補(bǔ) X 0X2n1X 補(bǔ)2nX 2n1X0. 正整數(shù)的補(bǔ)碼就是其本身,負(fù)整數(shù)的補(bǔ)碼可以經(jīng)過對(duì)其絕對(duì)值部分逐位求反,并在最低位加1求
14、得。同樣,在補(bǔ)碼表示法中,符號(hào)位為0表示正號(hào),為1表示負(fù)號(hào)。其表示的真值X的范圍為 2n1X2n11。在補(bǔ)碼表示中,0的機(jī)器碼是獨(dú)一的,沒有0和0之分。定點(diǎn)小數(shù)的補(bǔ)碼表示定點(diǎn)小數(shù)補(bǔ)碼的定義如下所示:X 補(bǔ) X 0X1X 補(bǔ)2X 1X0定點(diǎn)小數(shù)的補(bǔ)碼求解方法與定點(diǎn)整數(shù)的補(bǔ)碼求解方法相類似。其表示的真值X的范圍為1X12-(n-1)。當(dāng)n8時(shí),1的定點(diǎn)小數(shù)補(bǔ)碼表示為:10000000,而用定點(diǎn)整數(shù)的補(bǔ)碼表示1,那么為11111111。 在補(bǔ)碼表示方法中,0的編碼是獨(dú)一的,所以n位二進(jìn) 制數(shù)可以表示2n個(gè)補(bǔ)碼。 . 反碼表示法定點(diǎn)整數(shù)的反碼表示定點(diǎn)整數(shù)反碼的定義如下所示: X 反 X 0X2n1 X
15、 反(2n1)X 2n1X0同樣,正整數(shù)的反碼就是其本身,而負(fù)整數(shù)的反碼可以經(jīng)過對(duì)其絕對(duì)值逐位求反來求得。在反碼表示法中,符號(hào)位依然用0表示正號(hào),1表示負(fù)號(hào)。其表示的真值范圍與原碼一樣:(2n11)X2n-11。數(shù)值0用反碼表示亦有0和0之分。當(dāng)n8時(shí),0反00000000,0反11111111。定點(diǎn)小數(shù)的反碼表示定點(diǎn)小數(shù)反碼的定義如下所示:X 反 X 0X1X 反(22n1)X 1X0.定點(diǎn)小數(shù)的反碼求解方法類似定點(diǎn)整數(shù)的反碼求解方法。其表示的真值的取值范圍為:(12(n1)X(12(n1)。反碼表示法中,由于0占有了兩個(gè)不同的編碼,所以,n位二進(jìn)制數(shù)可以表示2n1個(gè)反碼。移碼表示法定點(diǎn)整數(shù)
16、的移碼表示 X 移2n1X 2n-1X2n1 定點(diǎn)小數(shù)的移碼表示 X 移1X 1X1移碼的符號(hào)位與其他三種編碼不同,用1表示正號(hào)而0表示負(fù)號(hào)。移碼的求法其實(shí)也很簡(jiǎn)單,把其補(bǔ)碼的符號(hào)位直接變反即可。所以在移碼表示法中,0也有獨(dú)一的表示方法:10000000(n8) 【例】 設(shè)機(jī)器碼長(zhǎng)度為8,求X(6)10的原碼、補(bǔ)碼、反碼和移碼。 . 解:X原碼27(110)1000000011010000110 X補(bǔ)碼28(110)1000000011011111010 X反碼(281)(110)1111111111011111001 X移碼27(110)1000000011001111010【例】 設(shè)機(jī)器碼
17、長(zhǎng)度為8,求X(03125)10(00101)2的原碼、補(bǔ)碼、反碼和移碼。 解:X原碼1X10(00101)1010110101000 X補(bǔ)碼2X100(00101)1101111011000 X反碼(227)X(10000000001)(00101)11010111 X移碼1X10(00101)0101101011000 .實(shí)踐上求某個(gè)數(shù)的原碼、補(bǔ)碼、反碼和移碼時(shí)不僅可以利用其定義式采求解,也可以經(jīng)過這4個(gè)編碼間的相互關(guān)系來求得。比如移碼就可以經(jīng)過把補(bǔ)碼的符號(hào)位變反來求,而對(duì)于正數(shù)來講其原碼、補(bǔ)碼和反碼是完全一樣的;一個(gè)負(fù)數(shù)的補(bǔ)碼也可以很容易地從其原碼推知:除符號(hào)位外,各位取反,末位再加1即
18、可。(4)浮點(diǎn)數(shù)據(jù)的編碼方法計(jì)算機(jī)內(nèi)部浮點(diǎn)數(shù)據(jù)表示成如下方式:FXZX. FX是尾數(shù)的符號(hào)位,0表示正號(hào)而l表示負(fù)號(hào);Z是階碼,通常用移碼表示;X是定點(diǎn)小數(shù)方式的尾數(shù),普通用補(bǔ)碼或原碼表示?!纠?】 某浮點(diǎn)數(shù)機(jī)器碼10位,基數(shù)為2,階碼用4位移碼表示,尾數(shù)5位用補(bǔ)碼表示,符號(hào)位1位。求2100110l的編碼。解: 符號(hào)位FX0 階碼Z(10)移碼1010 尾數(shù)X(01101)補(bǔ)碼11010 那么其編碼為0101011010【例 】 某浮點(diǎn)數(shù)機(jī)器碼為17位,基數(shù)為2,階碼用4位移碼表示,尾數(shù)用12位補(bǔ)碼表示,符號(hào)位1位。求275的浮點(diǎn)編碼方式。解:首先把275表示成浮點(diǎn)方式: (275)10(0
19、687522)10(01011)22(10) FX1 . Z(10)移碼1010 X(01011)補(bǔ)碼010100000000 編碼為11010010100000000 同一個(gè)浮點(diǎn)數(shù)可以有許多種不同的編碼表示(改動(dòng)其階碼),所以需求對(duì)浮點(diǎn)數(shù)進(jìn)展規(guī)格化處置,以一致其方式,同時(shí)提高數(shù)據(jù)的表示精度。規(guī)格化處置(基數(shù)為2)尾數(shù)部分以純小數(shù)方式表示,其絕對(duì)值應(yīng)滿足05X1。假設(shè)不滿足該條件,那么需求修正階碼并對(duì)尾數(shù)進(jìn)展移位,以使尾數(shù)滿足該條件; 當(dāng)尾數(shù)為正時(shí),無論其運(yùn)用原碼還是補(bǔ)碼表示,X應(yīng)滿足條件:05X1。以二進(jìn)制方式表示為X01xx x(x為0或1); 用原碼表示的負(fù)尾數(shù),X滿足1X05,以二進(jìn)制
20、方式表示為M11 xx x(x為0或1);以補(bǔ)碼表示的負(fù)尾數(shù),X滿足1M05,以二進(jìn)制方式表示為X10 xx x(x為0或1); 從上面的討論可以看出,假設(shè)規(guī)格化的尾數(shù)用原碼表示,那么其最高位一定為1假設(shè)改用補(bǔ)碼表示,那么尾數(shù)的最高位與其符號(hào)位相反,即為0。 . 2符號(hào)數(shù)據(jù)的表示方法 現(xiàn)代計(jì)算機(jī)不僅處置數(shù)值領(lǐng)域的問題,而且處置大量非數(shù)值領(lǐng)域的問題。這樣一來,必然要引入文字、字母以及某些公用符號(hào),以便表示文字言語、邏輯言語等信息。例如人機(jī)交換信息時(shí)運(yùn)用英文字母、標(biāo)點(diǎn)符號(hào)、十進(jìn)制數(shù)以及諸如$,等符號(hào)。然而數(shù)字計(jì)算機(jī)只能處置二進(jìn)制數(shù)據(jù),因此,上述信息運(yùn)用到計(jì)算機(jī)中時(shí),都必需編寫成二進(jìn)制格式的代碼,也
21、就是字符信息用數(shù)據(jù)表示,稱為符號(hào)數(shù)據(jù)。最常見的編碼格式為ASC碼和EBCDIC碼。1ASC碼目前國(guó)際上普遍采用的一種字符系統(tǒng)是七單位的ASCII碼(美國(guó)國(guó)家信息交換規(guī)范字符碼),它包括10個(gè)十進(jìn)制數(shù)碼,26個(gè)英文字母和一定數(shù)量的公用符號(hào),如$,等,總共128個(gè)元素,因此二進(jìn)制編碼需求7位,加上一個(gè)偶校驗(yàn)位,共8位,剛好為一個(gè)字節(jié)。表21列出了七單位的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è)字符,如大小寫各26個(gè)英文字母,
22、09這10個(gè)數(shù)字符,通用的運(yùn)算符和標(biāo)點(diǎn)符號(hào),*,等等。 另外的33個(gè)字符,其編碼值為031和127,那么不對(duì)應(yīng)任何一個(gè)可以顯示或打印的實(shí)踐字符,它們被用作控制碼,控制計(jì)算機(jī)某些外圍設(shè)備的任務(wù)特性和某些計(jì)算機(jī)軟件的運(yùn)轉(zhuǎn)情況。. 計(jì)算機(jī)里的存儲(chǔ)和傳送單位通常運(yùn)用Byte(1Byte8 bit),所以7位的ASCII碼也用一個(gè)字節(jié)來表示。ASCII編碼和128個(gè)字符的對(duì)應(yīng)關(guān)系如表21所示。表中編碼符號(hào)的陳列次序?yàn)?,最?位沒有運(yùn)用,通常填0;也可以把它用作校驗(yàn)位或者用來擴(kuò)展字符集。表中未給出,列為高位部分,行為低位部分。 ASCII的字符編碼表一共有2416行,238列。低4位編碼用作行編碼,而高3
23、位用作列編碼。值得留意的一點(diǎn)是數(shù)字“0到“9的編碼:它們都位于3列 (011),從0行(0000)陳列到9行(1001),即“0的ASCII碼為(0110000)2(30)16,“9的 ASCII碼為(0111001)2(39)16。把高3位屏蔽掉,低4位恰是“0“9的二進(jìn)制碼??梢钥闯?,十進(jìn)制的8421碼可以去掉(011)而得到。這個(gè)特點(diǎn)使得在數(shù)字符號(hào)(ASCII碼)與數(shù)字值(二進(jìn)制碼)之間進(jìn)展轉(zhuǎn)換非常方便。 .表21 ASC字符編碼表 0000010100111001011101110000NULDELSP0Pp0001SOHDC1!1AQaq0010STXDC22BRbr0011ETXD
24、C3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111DELETB7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;Kk1100FFFS,Nn1111SIUS/?OoDEL.字符串是指延續(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ī)可以選用其中
25、任何一種。例如下述字符串: 圖2-1字符串在主存中的存放 . IF AB ELSEREAD (C) 就可以按圖21所示從高位字節(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,32。2EBCDIC碼EBCDIC(Extended Binary Coded Decimal Interchange Code)即所謂擴(kuò)展的二十進(jìn)制交換碼。采用8 bit編碼來表示一
26、個(gè)字符,共可以表示28256個(gè)不同符號(hào),但EBCDIC中并沒有運(yùn)用全部編碼,只選用了其中一部分,剩下的保管作擴(kuò)展用。EBCDIC碼常用于IBM大型機(jī)中。在EBCDIC碼制中,數(shù)字“0“9的高4位編碼都是1111,而低4位編碼那么依次為0000到1001。把高四位屏蔽掉,也很容易實(shí)現(xiàn)從EBCDIC碼到二進(jìn)制數(shù)字值的轉(zhuǎn)換。 .3漢字的表示方法1 漢字的輸入編碼為了能直接運(yùn)用西文規(guī)范鍵盤把漢字輸入到計(jì)算機(jī),就必需為漢字設(shè)計(jì)相應(yīng)的輸入編碼方法。當(dāng)前采用的方法主要有以下三類: 數(shù)字編碼 常用的是國(guó)標(biāo)區(qū)位碼,用數(shù)字串代表一個(gè)漢字輸入。區(qū)位碼是將國(guó)家 規(guī)范局公布的6763個(gè)兩級(jí)漢字分為94個(gè)區(qū),每個(gè)區(qū)分94
27、位,實(shí)踐上把漢字表示成二維數(shù)組,每個(gè)漢字在數(shù)組中的下標(biāo)就是區(qū)位碼。區(qū)碼和位碼各兩位十進(jìn)制數(shù)字,因此輸入一個(gè)漢字需按鍵四次。例如“中字位于第54區(qū)48位,區(qū)位碼為5448。數(shù)字編碼輸入的優(yōu)點(diǎn)是無重碼,且輸入碼與內(nèi)部編碼的轉(zhuǎn)換比較方便,缺陷是代碼難以記憶。 拼音碼 拼音碼是以漢語拼音為根底的輸入方法。凡掌握漢語拼音的人,不需訓(xùn) 練和記憶,即可運(yùn)用。但漢字同音字太多,輸入重碼率很高,因此按拼音輸入后還必需進(jìn)展同音字選擇,影響了輸入速度。 . 字形編碼 字形編碼是用漢字的外形來進(jìn)展的編碼。漢字總數(shù)雖多,但是由一筆 一劃組成,全部漢字的部件和筆劃是有限的。因此,把漢字的筆劃部件用字母或數(shù)字進(jìn)展編碼,按筆
28、劃的順序依次輸入,就能表示一個(gè)漢字。例如五筆字型編碼是最有影響的一種字形編碼方法。 除了上述三種編碼方法之外,為了加快輸入速度,在上述方法根底上,開展了詞組 輸入、聯(lián)想輸入等多種快速輸入方法。但是都利用了鍵盤進(jìn)展“手動(dòng)輸入。理想的輸入方式是利用語音或圖像識(shí)別技術(shù)“自動(dòng)將拼音或文本輸入到計(jì)算機(jī)內(nèi),使計(jì)算機(jī)能認(rèn)識(shí)漢字,聽懂漢語,并將其自動(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)代碼是七位的ASCII碼,當(dāng)用一個(gè)字節(jié)表示時(shí),最高位為“0。為了與英文字符能相互區(qū)別,漢字機(jī)內(nèi)代碼中
29、兩個(gè)字節(jié)的最高位均規(guī)定為“1。例如漢字操作系統(tǒng)CCDOS中運(yùn)用的漢字內(nèi)碼是一種最高位為“l(fā)的兩字節(jié)內(nèi)碼。 有些系統(tǒng)中字節(jié)的最高位用于奇偶校驗(yàn)位,這種情況下用三個(gè)字節(jié)表示漢字內(nèi)碼。 . 3 漢字的輸出漢字字模碼 字模碼是用點(diǎn)陣表示的漢字字形代碼,它是漢字的輸出方式。根據(jù)漢字輸出的要求不同,點(diǎn)陣的多少也不同。簡(jiǎn)易型漢字為16 16點(diǎn)陣,提高型漢字為24 24點(diǎn)陣、32 32點(diǎn)陣,甚至更高。因此字模點(diǎn)陣的信息量是很大的,所占存儲(chǔ)空間也很大。以16 16點(diǎn)陣為例,每個(gè)漢字要占用32個(gè)字節(jié),國(guó)標(biāo)兩級(jí)漢字要占用 256K字節(jié)。因此字模點(diǎn)陣只能用來構(gòu)成漢字庫,而不能用于機(jī)內(nèi)存儲(chǔ)。字庫中存儲(chǔ)了每個(gè)漢字的點(diǎn)陣代
30、碼。當(dāng)顯示輸出或打印輸出時(shí)才檢索字庫,輸出字模點(diǎn)陣,得到字形。圖 22示出了“大字的點(diǎn)陣及編碼。留意,漢字的輸入編碼、漢字內(nèi)碼、字模碼是計(jì)算機(jī)中用于輸入、內(nèi)部處置、輸出三種不同用途的編碼,不要混為一談。 .圖22漢字的字模點(diǎn)陣及編碼 .4校驗(yàn)碼 元件缺點(diǎn)、噪聲干擾等各種要素經(jīng)常導(dǎo)致計(jì)算機(jī)在處置信息過程中出現(xiàn)錯(cuò)誤。例如將1位x從部件A傳送到部件B,能夠由于傳送信道中的噪聲干擾而遭到破壞,以致于在接納部件B收到的是而不是x。為了防止這種錯(cuò)誤,可將信號(hào)采用專門的邏輯線路進(jìn)展編碼以檢測(cè)錯(cuò)誤,甚至校正錯(cuò)誤。通常的方法是,在每個(gè)字上添加一些校驗(yàn)位,用來確定字中出現(xiàn)錯(cuò)誤的位置。計(jì)算機(jī)中常用這種檢錯(cuò)或糾錯(cuò)技術(shù)
31、進(jìn)展存儲(chǔ)器讀寫正確性或傳輸信息的檢驗(yàn)。這里僅引見檢錯(cuò)碼中的奇偶校驗(yàn)碼。最簡(jiǎn)單且運(yùn)用廣泛的檢錯(cuò)碼是采用一位校驗(yàn)位的奇校驗(yàn)或偶校驗(yàn)。設(shè)X(x0 x1 xn-1)是一個(gè)n位字,那么奇校驗(yàn)位 定義為 C x0 x1xn-1 式中代表按位加,闡明只需當(dāng)X中包含有奇數(shù)個(gè)1時(shí),才干使 1,即C0。 同理,偶校驗(yàn)位C定義為Cx0 x1xn-1 即X中包含偶數(shù)個(gè)1時(shí),才使C0。 假設(shè)一個(gè)字X從部件A傳送到部件B。在源點(diǎn)A,校驗(yàn)位C可用上面公式算出來,并合在一同將( x0 x1 xn-1 C )送到B。假設(shè)在B點(diǎn)真正接納到的是X( x0 x1 xn-1 C ),然后計(jì)算 F( x0 x1 xn-1 C )假設(shè)F1
32、,意味著收到的信息有錯(cuò),例如(x0 x1 xn-1)中正巧有一位變“反時(shí)就會(huì)出現(xiàn)這種情況。假設(shè)F0,闡明X字傳送正確。奇偶校驗(yàn)可提供單個(gè)錯(cuò)誤檢測(cè),但無法檢測(cè)多個(gè)錯(cuò)誤,更無法識(shí)別錯(cuò)誤信息的位置。 . 【例】 知下表中左面一欄有5個(gè)字節(jié)的數(shù)據(jù)。請(qǐng)分別是用奇校驗(yàn)和偶校驗(yàn)進(jìn)展編碼,填在中間一欄和右面一欄。 解:假定最低一位為校驗(yàn)位,其他高8位為數(shù)據(jù)位,列表如下。從中看出,校驗(yàn)位的值取。還是取1,是由數(shù)據(jù)位中1的個(gè)數(shù)決議的。 數(shù)據(jù)偶校驗(yàn)編碼奇校驗(yàn)編碼101010101010101001010101010101010001010100101010100000000000000000000000000001
33、0111111101111111101111111011111111111111110111111111.212 計(jì)算機(jī)中算術(shù)運(yùn)算和邏輯運(yùn)算1二進(jìn)制數(shù)的算術(shù)運(yùn)算1 定點(diǎn)數(shù)運(yùn)算 定點(diǎn)數(shù)加法減法運(yùn)算定點(diǎn)數(shù)的加法和減法運(yùn)算運(yùn)用補(bǔ)碼較為方便。對(duì)于定點(diǎn)小數(shù)的運(yùn)算規(guī)那么如下: 加法:XY補(bǔ)X補(bǔ)y補(bǔ) mod 2 減法:XY補(bǔ)X補(bǔ)y補(bǔ) mod 2當(dāng)運(yùn)算結(jié)果超越了定點(diǎn)數(shù)的表示范圍時(shí),那么產(chǎn)生溢出(Overflow),常用的溢出檢測(cè)機(jī)制主要有以下兩種:進(jìn)位判決法: 令Cn1表示次高位(最高數(shù)值位)向最高位(符號(hào)位)的進(jìn)位,Cn那么表示符號(hào)位的進(jìn)位,那么結(jié)果能否溢出的判決表如表22所示,即CnCn11時(shí)溢出。這里,
34、表示異或。 .表22 溢出的判決表 CnCn1OverflowCnCn100無溢出01溢出10溢出11無溢出. 【例.】X(100)10(01100100)2,Y(50)10(00110010)2,求XY。解: X補(bǔ)01100100,y補(bǔ)00110010 XY補(bǔ)X補(bǔ)y補(bǔ)10010110 CnCn11,表示結(jié)果溢出?!纠?】X(100)l0(01100100)2,Y(50)l0(00110010)2,求XY。解: X補(bǔ)10011100,y補(bǔ)00110010 XY補(bǔ)X補(bǔ)Y補(bǔ)11001110 CnCn10,因此沒有溢出。雙符號(hào)位判決法: 采用兩位二進(jìn)制位來表示符號(hào)位:00正號(hào),11負(fù)號(hào),根據(jù)運(yùn)算結(jié)果
35、的符號(hào)位也可以斷定其能否溢出,其判決表如表23所示。 .表23 雙符號(hào)位判決表 運(yùn)算結(jié)果的符號(hào)位Overflow運(yùn)算結(jié)果的符號(hào)位Overflow00無溢出10溢出01溢出11無溢出. 【例2.1】X(100)l0(01100100)2,Y(50)l0(00110010)2,求XY。解: X補(bǔ)001100100 Y補(bǔ)000110010 XY補(bǔ)X補(bǔ)y補(bǔ)010010110 其符號(hào)位為0 1,闡明結(jié)果溢出。 定點(diǎn)數(shù)乘法運(yùn)算在作定點(diǎn)數(shù)的乘法運(yùn)算時(shí)采用原碼比較方便。通常運(yùn)用原碼一位乘法來求兩個(gè)定點(diǎn)數(shù)的乘積。 運(yùn)算規(guī)那么:乘積的符號(hào)位等于乘數(shù)和被乘數(shù)的符號(hào)位進(jìn)展異或;乘積的值等于兩數(shù)絕對(duì)值之積,即乘數(shù)和被乘
36、數(shù)的絕對(duì)值進(jìn)展移位相加。算法:(用絕對(duì)值進(jìn)展運(yùn)算) 令X表示被乘數(shù),Y表示乘數(shù),P表示部分積以存放中間結(jié)果,flag用作判別位,count用作計(jì)數(shù)。 .令P0;count0;flag0; P和Y一同右移一位(P為高位部分,Y為低位部分),右移時(shí)P的最高位補(bǔ)0,P的最低位移入Y的最高位,Y的最低位移入到flag中; 假設(shè)flag1同PPX,否那么P不變; countcount1,假設(shè)count超越Y(jié)的位數(shù)那么運(yùn)算停頓,否那么轉(zhuǎn)到上述第2步繼續(xù)執(zhí)行; P和Y的內(nèi)容就是所求乘積的絕對(duì)值,其中P存放積的高位,而Y存放積的低位?!纠?X(10)l0(1010)2,Y(6)10(0110)2,求X,Y。
37、解: X原1010,Y原0110乘積的符號(hào)位S 0 1 1。 .表24 定點(diǎn)數(shù)乘法運(yùn)算表 執(zhí)行動(dòng)作部分積P乘數(shù)Y判別位Flagcounter初始化0000011000右移0000001101右移0000000112P+X1010右移0101000013P+X1111右移0111100004右移0011110005.那么所得乘積為(00111100)2(60)l0 定點(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)展相除;算法:(求XY,設(shè)X、Y的數(shù)值部分長(zhǎng)度為N
38、) 令及RX,counter0; RRY;假設(shè)R為正那么商1,否那么商0; R左移一位,countercounter1; 假設(shè)上一次商為1那么RRY,否那么RRY; R為正那么商1,否那么商0; 假設(shè)R0或者counterN那么終了,否那么轉(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ù)XM2i,YN2j,求XY或XY,其運(yùn)算過程如下: 對(duì)階:使兩個(gè)數(shù)的階碼一樣。令Kij,把階碼小的數(shù)的尾數(shù)右移K位,其階碼加上K。當(dāng)右移尾數(shù)時(shí),假設(shè)尾數(shù)用補(bǔ)碼表示那么符號(hào)位參與移位,符號(hào)位不變,假設(shè)是原碼,那么符號(hào)位不參與移位,尾數(shù)的最高位補(bǔ)0。 尾
39、數(shù)進(jìn)展加、減運(yùn)算: 規(guī)格化處置:假設(shè)尾數(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ù)每向左移一位,階碼減1,直到尾數(shù)最高位與符號(hào)位相反。 . 舍入操作:舍入的方法常用0舍1入,即當(dāng)向右規(guī)格化時(shí),假設(shè)移掉的最高位為1,那么在尾數(shù)末位加1,否那么舍去。另一種那么是“恒1法,即不論移走的數(shù)據(jù)為何值,尾數(shù)最末位恒置1。 溢出判別:以階碼為準(zhǔn)。假設(shè)階碼上溢,那么結(jié)果溢出;假設(shè)階碼下溢,那么結(jié)果為0;否那么結(jié)果正確無溢出。 浮點(diǎn)數(shù)的乘除運(yùn)算 浮點(diǎn)數(shù)相乘,其積的階碼為兩數(shù)階碼相加,積的尾數(shù)為兩尾數(shù)
40、相乘。浮點(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é)工具,又稱布爾代數(shù)。邏輯變量的取值只需“真和“假,通常以1和0表示。 .1 根本的邏輯運(yùn)算 “與(AND)運(yùn)算 又稱為邏輯乘運(yùn)算,其運(yùn)算符號(hào)通常用AND、或等表示。兩個(gè)變量的“與運(yùn)算的運(yùn)算規(guī)那么如表24所示。即當(dāng)A、B中任一變量取0值時(shí),其運(yùn)算結(jié)果為0。 表25 “與運(yùn)算表 表26 “或運(yùn)算表 ABZ=AB000010100111ABZ=A+B0000111011
41、11.“或(OR)運(yùn)算 又稱為邏輯加運(yùn)算,其運(yùn)算符號(hào)為OR、U、V或等。兩個(gè)變量的“或運(yùn)算規(guī)那么如表25所示。即當(dāng)A、B中恣意一個(gè)取1值時(shí),其運(yùn)算結(jié)果為l?!胺?NOT)運(yùn)算 又稱為邏輯求反運(yùn)算。常用表示對(duì)變量A進(jìn)展求反。其運(yùn)算規(guī)那么很簡(jiǎn)單:0,。 “異或運(yùn)算 常用的還有“異或運(yùn)算,又稱為半加運(yùn)算,其運(yùn)算符號(hào)為XOR或。異或運(yùn)算是一種復(fù)合邏輯運(yùn)算,可用上述根本邏輯運(yùn)算表示如下:AB A BA B .22 邏輯部件 221 存放器 1存放器組(register block)概述CPU中的存放器通??梢苑譃閮深悾河脩艨梢姷拇娣牌?user-visible registers)和形狀控制存放器(co
42、ntrol and status registers)。 (1) 用戶可見的存放器用戶可以經(jīng)過機(jī)器言語來訪問這些存放器。合理優(yōu)化地運(yùn)用這些存放器可以減少對(duì)主存的訪問次數(shù),從而提高程序的執(zhí)行速度。按其功能可以分為4類:通用存放器(general purpose register)通用存放器的用途由程序員編程決議,例如可以用來存放操作數(shù),也可以用作尋址存放器。數(shù)據(jù)存放器(dataregister)數(shù)據(jù)存放器僅能用來存放數(shù)據(jù)而不能用來對(duì)操作數(shù)的地址進(jìn)展計(jì)算。 .地址存放器(addressregister) 地址存放器用來存放操作數(shù)的地址,普通而言地址存放器又可以分為段地址存放器(segment po
43、inter register)、間址存放器(index register)和堆棧存放器(stack pointer register)。段地址存放器用在采用段式內(nèi)存管理的計(jì)算機(jī)中,存放著某一段內(nèi)存區(qū)域的基地址。間址存放器用在間接尋址(indexed addressing)方式下。堆棧存放器用以存放堆棧棧頂?shù)牡刂?,使得在運(yùn)用堆棧操作(如push,pop)時(shí)無須顯式地給出操作數(shù)的地址(即其地址是隱含的)。標(biāo)志存放器(flagcondition codes register)標(biāo)志存放器中的位是由CPU硬件根據(jù)運(yùn)算的結(jié)果而設(shè)立的一些指示位,以反映該次運(yùn)算的某些特征:結(jié)果為正、負(fù)、零、溢出等等,并可以用
44、作分支跳轉(zhuǎn)的根據(jù)。普通而言,標(biāo)志存放器允許編程者進(jìn)展讀操作,但不允許對(duì)其直接進(jìn)展寫操作。 .(2)形狀控制存放器(CSR)這些存放器被控制器(control unit)用來控制CPU的操作。通常是程序員不可見的,但也有某些存放器在某種特定的形狀下可以由某些特權(quán)指令進(jìn)展訪問。常見的CSR有:程序計(jì)數(shù)器(program counter,PC)、指令存放器(instruction register,IR)、存儲(chǔ)器地址存放器(memoryaddress,register,MAR)、存儲(chǔ)器緩沖存放器(memory buffer register,MBR)以及程序形狀字(programstatusword
45、,PSW)。PC中存放著下一條待取指令的地址。當(dāng)程序順序執(zhí)行時(shí),CPU在取回一條指令后,會(huì)自動(dòng)修正PC中的值以使其指向下一條指令。而程序中的分支或跳轉(zhuǎn)指令也是經(jīng)過修正PC中的值來到達(dá)改動(dòng)流程的目的。IR中存放著CPU剛?cè)』氐闹噶?,以供指令譯碼運(yùn)用。CPU和存儲(chǔ)器之間的數(shù)據(jù)交換經(jīng)過MAR和MBR來實(shí)現(xiàn)。MAR中存放著待訪問的內(nèi)存單元的地址而MBR那么存放從內(nèi)存中讀人的數(shù)據(jù)或要寫回內(nèi)存單元的數(shù)據(jù)。這4個(gè)存放器(PC、IR、MAR、MBR)用來實(shí)如今CPU和存儲(chǔ)器(memory)之間的數(shù)據(jù)交換。另外CPU內(nèi)部,在ALU與MBR、用戶可見的存放器之間也能夠存在用作輸入/輸出緩沖存放器。 .2存放器邏輯
46、組成 存放器是計(jì)算機(jī)的一個(gè)重要部件,用于暫存數(shù)據(jù)、指令等。它由觸發(fā)器和一些控制門組成。在存放器中,常用的是正邊沿觸發(fā)D觸發(fā)器和鎖存器。 圖23所示是由正沿觸發(fā)的D觸發(fā)器組成的四位存放器。在CP正沿作用下,外部數(shù)據(jù)才干進(jìn)入存放器。D是復(fù)位端,CP 是 D觸發(fā)器的脈沖端,CK 是添加了個(gè)與邏輯門電路來取正沿脈沖的輸入端。四D存放器的功能見表27,其中代表正脈沖,也即正沿。 .圖23四D存放器 .表27 四D存放器功能表 控制和輸入輸出R DCK1D2D3D4D1Q2Q3Q4Q11D2D3D4D1D2D3D4D00000.現(xiàn)實(shí)上,在計(jì)算機(jī)中常要求存放器有移位功能。如在進(jìn)展乘法時(shí),要求將部分積右移;在
47、將并行傳送的數(shù)轉(zhuǎn)換成串行數(shù)時(shí)也需移位。有移位功能的存放器稱為移位存放器。222 計(jì)數(shù)器計(jì)數(shù)器是計(jì)算機(jī)、數(shù)字儀表中常用的一種電路。計(jì)數(shù)器按時(shí)鐘作用方式來分,有同步計(jì)數(shù)器和異步計(jì)數(shù)器兩大類。在異步計(jì)數(shù)器中,由于高位觸發(fā)器的時(shí)鐘信號(hào)是由低一位觸發(fā)器的輸出來提供的,但是構(gòu)造簡(jiǎn)單。同步計(jì)數(shù)器中各觸發(fā)器的時(shí)鐘信號(hào)是由同一脈沖來提供的,因此,各觸發(fā)器是同時(shí)翻轉(zhuǎn)的,它的任務(wù)頻率比異步計(jì)數(shù)器高,但構(gòu)造較復(fù)雜。計(jì)數(shù)器按計(jì)數(shù)順序來分,有二進(jìn)制、十進(jìn)制兩大類。在計(jì)算機(jī)中較少運(yùn)用異步計(jì)數(shù)器,這里著重引見有并行輸入數(shù)據(jù)功能的正向同步十進(jìn)制計(jì)數(shù)器。圖24是用主從JK觸發(fā)器構(gòu)成的同步十進(jìn)制集成化計(jì)數(shù)器。同步計(jì)數(shù)器是采用快速進(jìn)
48、位方式來計(jì)數(shù)的,觸發(fā)器及實(shí)現(xiàn)快速進(jìn)位的邏輯電路是它的中心。 .圖24十進(jìn)制同步計(jì)數(shù)器 .“預(yù)置數(shù)是集成化同步計(jì)數(shù)器的一個(gè)重要功能。普通設(shè)置控制端L,用來選擇電路是執(zhí)行計(jì)數(shù)還是執(zhí)行預(yù)置數(shù):當(dāng)L1,執(zhí)行同步計(jì)數(shù);L0,執(zhí)行預(yù)置數(shù)。由于JK觸發(fā)器數(shù)據(jù)輸入是雙端的,所以要將單端的預(yù)置數(shù)AD經(jīng)兩級(jí)“與非門變成互補(bǔ)信號(hào),再加在J,K端。圖24所示與非門411就是為此目的而設(shè)置的。當(dāng)L1時(shí),這些與非門被封鎖,快速進(jìn)位電路輸出經(jīng)或門1215進(jìn)入觸發(fā)器,電路執(zhí)行計(jì)數(shù);當(dāng)L0,門411翻開,快速進(jìn)位被封鎖,電路執(zhí)行置數(shù)。 可以方便地?cái)U(kuò)展位數(shù)是集成化計(jì)數(shù)器的一個(gè)特點(diǎn)。下面引見擴(kuò)展方法。計(jì)數(shù)器擴(kuò)展應(yīng)滿足以下條件。 首
49、先,要有標(biāo)志計(jì)數(shù)器已計(jì)至最大數(shù)的進(jìn)位輸出端RC,對(duì)二進(jìn)制、十進(jìn)制計(jì)數(shù)器,RC分別為: 二進(jìn)制計(jì)數(shù)器:RCQAQBQCQD 十進(jìn)制計(jì)數(shù)器:RCQAQD.其次,計(jì)數(shù)器應(yīng)有堅(jiān)持功能。圖24計(jì)數(shù)器中設(shè)置了“計(jì)數(shù)允許端P和T,用來控制計(jì)數(shù)器快速進(jìn)位電路和RC構(gòu)成門:當(dāng)P,T均為“1,快速進(jìn)位電路才干翻開見表28,此時(shí)假設(shè)L1,那么電路處于計(jì)數(shù)形狀;假設(shè)P0,T1,那么快速進(jìn)位電路封鎖,電路不能計(jì)數(shù),此時(shí)假設(shè)L1,預(yù)置數(shù)也被封鎖,又由于T1時(shí)RC構(gòu)成門不封鎖,所以各觸發(fā)器形狀及RC均堅(jiān)持。有了RC,P,T端,就可以方便地對(duì)計(jì)數(shù)器進(jìn)展擴(kuò)展。表28 同步計(jì)數(shù)器功能表.PTLRDCK功能1111計(jì)數(shù)01并行輸入
50、數(shù)據(jù)0111堅(jiān)持011觸發(fā)器堅(jiān)持,RC=01異步清“0.223 譯碼器譯碼器有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)椤?),其他輸出均為“0(或?yàn)椤?)。譯碼器的用途是把輸入代碼譯成相應(yīng)的控制電位,以實(shí)現(xiàn)代碼所要求的操作。圖25給出了2輸入4輸出譯碼器的邏輯圖。譯碼器中常設(shè)置“使能控制端正,當(dāng)該端為“1時(shí),譯碼器功能被制止,此時(shí)一切輸出均為“1。使能端的一個(gè)主要功能是用來擴(kuò)展輸人變量數(shù)。.23 控制部件 控制器(見圖26)擔(dān)任控制整個(gè)計(jì)算機(jī)系統(tǒng)的運(yùn)轉(zhuǎn),讀取指令存放器、形狀控制存放器以及從外部來的控制信
51、號(hào)(例如中斷信號(hào)),發(fā)布外控制信號(hào)控制CPU與存儲(chǔ)器、IO設(shè)備進(jìn)展數(shù)據(jù)交換,發(fā)布內(nèi)控制信號(hào)控制存放器間的數(shù)據(jù)交換,控制ALU完成指定的運(yùn)算功能,并且管理其他的CPU內(nèi)部操作。231 控制器的根本功能 控制器的根本功能就是時(shí)序(sequencing)控制和執(zhí)行(execution)控制。根據(jù)當(dāng)前運(yùn)轉(zhuǎn)的程序,控制器使CPU按一定的時(shí)序關(guān)系執(zhí)行一系列的微操作(micro-operation),從而完成程序規(guī)定的動(dòng)作。 .控制器的輸入信號(hào)有:時(shí)鐘信號(hào)、指令存放器、標(biāo)志位、控制總線上的控制信號(hào)??刂破鞯妮敵鲂盘?hào)包括:CPU內(nèi)的控制信號(hào)、發(fā)往控制總線的控制信號(hào)。 時(shí)鐘信號(hào) 控制器根據(jù)由時(shí)鐘電路產(chǎn)生的時(shí)鐘信
52、號(hào)進(jìn)展定時(shí),以控制各種操作按指定的時(shí)序進(jìn)展。計(jì)算機(jī)的根本功能是執(zhí)行程序,而程序由一連串的指令組成;計(jì)算機(jī)的執(zhí)行過程由一連串的指令周期組成,每一指令周期完成一條機(jī)器指令。這些指令周期又可進(jìn)一步細(xì)分為更小的單元,直到微操作(microoperation)CPU完成的根本的原子操作。時(shí)鐘電路由時(shí)鐘脈沖發(fā)生器、分頻電路及各種外圍電路組成。時(shí)鐘脈沖發(fā)生器的晶振頻率稱為機(jī)器的主頻,它產(chǎn)生的時(shí)鐘脈沖信號(hào)是整個(gè)機(jī)器的時(shí)間基準(zhǔn),其周期T稱為該計(jì)算機(jī)的時(shí)鐘周期。執(zhí)行一條機(jī)器指令所需的時(shí)間稱為一個(gè)指令周期(instructioncycle),由于CPU機(jī)器指令的執(zhí)行的時(shí)間通?;ゲ灰粯?,因此其指令周期也各不一樣。為了
53、便于控制和管理,把指令周期進(jìn)展分解,細(xì)化為各種原子操作(微操作,op),每一op都與CPU的存放器相關(guān)。完成一個(gè)微操作的時(shí)間就稱為CPU周期(機(jī)器周期)。例如一條指令周期通常可分為取指子周期、執(zhí)行子周期、保管結(jié)果子周期,而每一個(gè)子周期又由假設(shè)干原子周期CPU周期組成。 .2指令存放器(R)控制器需求完成取指令、分析指令和執(zhí)行指令的操作??刂破鞲鶕?jù)程序計(jì)數(shù)器PC中的內(nèi)容(指令地址)從存儲(chǔ)器中取出該指令;然后對(duì)指令進(jìn)展譯碼以確定所需執(zhí)行的 op;最后控制器根據(jù)分析的結(jié)果發(fā)出一系列的控制信號(hào)控制各相關(guān)部件(運(yùn)算器、存儲(chǔ)器、IO設(shè)備)完成規(guī)定的操作;同時(shí)產(chǎn)生下一條指令的地址。MAR(PC)MBRMem
54、oryIR(MBR)PC(PC)13中斷控制邏輯計(jì)算機(jī)系統(tǒng)通常都提供了中斷機(jī)制,允許某一事件的發(fā)生(如由IO設(shè)備提出效力懇求)可以中止CPU正在執(zhí)行的程序,轉(zhuǎn)去對(duì)該事件進(jìn)展處置,然后再前往原程序被中止處繼續(xù)執(zhí)行。中斷機(jī)制的主要作用就是提高CPU的處置效率;使CPU與IO設(shè)備并行任務(wù),當(dāng)進(jìn)展IO操作時(shí)CPU可以處置其他事務(wù);同時(shí)使CPU可以及時(shí)地呼應(yīng)各種預(yù)先不知的異常事件,并進(jìn)展處置;還可以實(shí)現(xiàn)分時(shí)操作等等。 .(1) 中斷處置過程 如圖27所示,假設(shè)系統(tǒng)允許呼應(yīng)中斷懇求,那么在每條指令執(zhí)行完成后,控制器都要檢查能否有中斷發(fā)生,假設(shè)沒有中斷懇求信號(hào),控制器那么轉(zhuǎn)去取下一條指令,假設(shè)有中斷事件發(fā)生
55、,那么暫停執(zhí)行當(dāng)前程序并維護(hù)其現(xiàn)場(chǎng)形狀信息(如下一條指令的地址、相關(guān)存放器的內(nèi)容等等),然后轉(zhuǎn)去執(zhí)行中斷效力程序。當(dāng)完成中斷效力后,再恢復(fù)以前保管的現(xiàn)場(chǎng)信息,從原程序被中止處(斷點(diǎn))繼續(xù)執(zhí)行。. 圖27 計(jì)算機(jī)的中斷機(jī)制 .通常把CPU中斷處置過程分為兩個(gè)階段:中斷呼應(yīng)過程和中斷效力過程。中斷呼應(yīng)過程CPU接受中斷懇求后,就暫停執(zhí)行當(dāng)前程序,進(jìn)人中斷呼應(yīng)過程:封鎖中斷:為了使CPU在中斷效力后可以前往原程序斷點(diǎn)處繼續(xù)執(zhí)行,在中斷呼應(yīng)期間,保管斷點(diǎn)信息之前,需求封鎖中斷允許,制止CPU呼應(yīng)新的中斷懇求。保管斷點(diǎn)信息:當(dāng)CPU進(jìn)入中斷呼應(yīng)過程,封鎖中斷允許后,控制器要維護(hù)當(dāng)前正在執(zhí)行的程序的斷點(diǎn)信
56、息;把程序的斷點(diǎn)即PC里的內(nèi)容,以及PSW里的內(nèi)容等推入系統(tǒng)堆棧。中斷前往以后,再?gòu)亩褩V谢謴?fù)現(xiàn)場(chǎng)信息,繼續(xù)執(zhí)行主程序。把中斷效力程序的入口地址置人PC中:控制器保管完斷點(diǎn)信息后,接著就把相應(yīng)的中斷效力程序入口地址置入程序計(jì)數(shù)器中去,CPU馬上要執(zhí)行的下一條指令就是中斷效力程序的第一條指令。 中斷效力過程當(dāng)PC中置入中斷效力程序的入口地址之后,接著保管現(xiàn)場(chǎng)信息,CPU開放中斷允許呼應(yīng)新的中斷懇求,然后就轉(zhuǎn)入中斷效力程序,對(duì)中斷事件進(jìn)展處置。中斷效力完成之后,CPU再次制止中斷,以恢復(fù)現(xiàn)場(chǎng)和斷點(diǎn)信息,使之前往到原主程序斷點(diǎn)處繼續(xù)執(zhí)行。 .4總線控制邏輯計(jì)算機(jī)各個(gè)部件經(jīng)過總線(BUS)相互銜接起來
57、,傳送信息協(xié)調(diào)任務(wù),共同完成操作。CPU內(nèi)部各器件之間互連的總線稱為內(nèi)部總線,CPU與其他部件之間互連的總線稱為外部總線(又稱系統(tǒng)總線)。由于總線是共享的傳輸通道,恣意一時(shí)辰只能由一個(gè)器件擔(dān)任發(fā)送數(shù)據(jù),所以需求由總線控制器采協(xié)調(diào)各部件懇求運(yùn)用總線。當(dāng)發(fā)生多個(gè)設(shè)備爭(zhēng)用總線時(shí),仲裁電路會(huì)根據(jù)某種戰(zhàn)略(如優(yōu)先級(jí))來決議運(yùn)用總線的先后順序。常用的仲裁方式主要有中央仲裁和分布式仲裁兩種。232控制器的實(shí)現(xiàn)(硬布線邏輯微程序控制)控制器的作用就是根據(jù)輸入的時(shí)鐘信號(hào)、指令信息以及各種形狀信號(hào)產(chǎn)生相應(yīng)的控制信號(hào)去控制各個(gè)部件完成特定的操作??刂破鞯倪壿嬙O(shè)計(jì)中包括時(shí)序邏輯(控制微操作的時(shí)序關(guān)系)、譯碼邏輯(對(duì)指
58、令操作碼進(jìn)展譯碼分析)、執(zhí)行邏輯(按一定的順序執(zhí)行微操作)和決策邏輯(根據(jù)ALU等部件的標(biāo)志位來決議下一步的動(dòng)作)??刂破鞯膶?shí)現(xiàn)方法主要有兩種:硬布線邏輯(hard wired implementation)和微程序控制(microprogrammed implementation)。 .1硬布線邏輯在這種機(jī)制下,控制器根本上由組合電路實(shí)現(xiàn),因此這種方法又稱之為組合邏輯實(shí)現(xiàn)(圖28)。(1)指令譯碼控制器分析每條待執(zhí)行的指令,對(duì)不同的操作碼產(chǎn)生不同的控制信號(hào)。為了簡(jiǎn)化設(shè)計(jì),可以由一個(gè)譯碼器來完成操作碼的識(shí)別功能,一個(gè)n位輸入的譯碼器可以識(shí)別2n條不同的指令操作碼,為每一條操作碼產(chǎn)生不同的輸出信號(hào)。(2)定時(shí)(一個(gè)指令所產(chǎn)生的輸出控制信號(hào)是有時(shí)序關(guān)系的)控制器利用輸入的時(shí)鐘信號(hào)作為產(chǎn)生各種控制信號(hào)的定時(shí)信號(hào)。由于控制器在一個(gè)指令周期內(nèi),需求在不同的時(shí)辰發(fā)出不同的控制信號(hào),所以采用一個(gè)定時(shí)電路根據(jù)時(shí)鐘信號(hào)依次產(chǎn)生定時(shí)信號(hào)如T1,T2, ,Tn??刂破骶驮赥1,T2, ,Tn的作用下,順序產(chǎn)生各種控制信號(hào)。在指令周期的末尾,控制器要復(fù)位定時(shí)電路,以便在下一個(gè)指令周期開場(chǎng)時(shí),定時(shí)電路
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人民版九年級(jí)歷史上冊(cè)階段測(cè)試試卷含答案
- 二零二五版農(nóng)村集體資產(chǎn)農(nóng)民房屋租賃合同2篇
- 2025年度智能化農(nóng)場(chǎng)承包經(jīng)營(yíng)合同4篇
- 二零二五年度建筑幕墻施工安全協(xié)議合同4篇
- 二零二五年度健康營(yíng)養(yǎng)面包研發(fā)與訂購(gòu)合同4篇
- 二零二五版專業(yè)攝影棚場(chǎng)地租賃及拍攝服務(wù)合同范本4篇
- 2025年度木飾面產(chǎn)品市場(chǎng)推廣與廣告投放合同
- 房屋抵債合同(2篇)
- 2025版南京商業(yè)地產(chǎn)租賃稅費(fèi)結(jié)算合同4篇
- 著火場(chǎng)景的火源辨識(shí)與處置
- 紅色革命故事《王二小的故事》
- 《白蛇緣起》賞析
- 海洋工程用高性能建筑鋼材的研發(fā)
- 蘇教版2022-2023學(xué)年三年級(jí)數(shù)學(xué)下冊(cè)開學(xué)摸底考試卷(五)含答案與解析
- 英語48個(gè)國(guó)際音標(biāo)課件(單詞帶聲、附有聲國(guó)際音標(biāo)圖)
- GB/T 6892-2023一般工業(yè)用鋁及鋁合金擠壓型材
- 冷庫安全管理制度
- 2023同等學(xué)力申碩統(tǒng)考英語考試真題
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
- 在雙減政策下小學(xué)音樂社團(tuán)活動(dòng)有效開展及策略 論文
- envi二次開發(fā)素材包-idl培訓(xùn)
評(píng)論
0/150
提交評(píng)論