官术网_书友最值得收藏!

1.4 計算機硬件基礎

1.4.1 計算機中數的表示和運算

計算機中使用的數據一般可以分為兩大類:數值數據與字符數據。數值數據常用于表示數的大小與正負;字符數據則用于表示非數值的信息,如:英文、漢字、圖形、語音等數據。數據在計算機中是以器件的物理狀態(開、關狀態)來表示的,因此,各種數據在計算機中都是用二進制編碼的形式來表示的。

1.進位計數制

按進位的原則進行計數的方法,稱為進位計數制。

例如,在十進位計數制中,是根據“逢十進一”的原則進行計數的。

一個十進制數,它的數值是由數碼0、1、…、9來表示的。數碼所處的位置不同,代表數的大小也不同。從右面起的第一位是個位,第二位是十位,第三位是百位,第四位是千位……“個、十、百、千……”在數學上叫做“位權”或“權”。每一位上的數碼與該位“位權”的乘積表示該位數值的大小。另外,十進位計數制中的10,稱為基數。基數為10的進位計數制按“逢十進一”的原則進行計數。

“位權”和“基數”是進位計數制中的兩個要素。

在微機中,常用的是十進制、二進制、十六進制,它們對應的關系見表1-1。

表1-1 十進制數、二進制數、十六進制數的關系

(1)十進制數

十進制數563.62可表示為:

(563.62)10 = 5 × (10)2 + 6 × (10)1 + 3 × (10)0 + 6 × (10)-1 + 2 × (10)-2

一般來說,任意一個十進制數N可表示為:

式中,m、n均為正整數,m表示小數部分的位數,n表示整數部分的位數;Ki是0~9中的某一個,10i是權。

(2)二進制數

二進制數的基數是2,即“逢二進一”,它使用數字0和1兩個數碼。利用0和1可以表示開關的通、斷狀態。其表示方法如下:

(10111.101)2=1 × 24 + 0 × 23 + 1 × 22 + 1 × 21 + 1 × 20 + 1 × 2-1 + 0 × 2-2 + 1 × 2-3

也可以將一個二進制數表示為:

式中,n表示整數部分的位數,m表示小數部分的位數;Ki是1或0,2i是權。

(3)十六進制數

十六進制數是0~9、A~F,其中A~F分別代表10~15;其基數為16,即“逢十六進一”。其表示方法如下:

(2AC7.1F)16 = 2 × 163 + 10 × 162 + 12 × 161 + 7 × 160 + 1 × 16-1 + 15 × 16-2

2.不同進制數之間的轉換

(1)十進制數與二進制數之間的轉換

① 十進制整數轉換成二進制整數

十進制整數轉換成二進制整數,通常采用“除2取余法”。所謂除2取余法,就是將已知十進制數反復除以2,若每次相除之后余數為1,則對應于二進制數的相應位為1;余數為0,則相應位為0。第一次相除得到的余數是二進制數的低位,最后一次相除的余數是二進制數的高位。從低位到高位逐次進行,直到商為0。最后一次相除所得的余數為Kn-1,則Kn-1 Kn-2…K1 K0即為所求之二進制數。

【例1-1】 將(215)10轉換成二進制整數。其全過程可表示如下:

所以 (215)10 = (K7K6K5K4K3K2K1K02 = (11010111)2

② 十進制純小數轉換成二進制純小數

十進制純小數轉換成二進制純小數,通常采用“乘2取整法”。所謂乘2取整法,就是將已知十進制純小數反復乘以2,每次乘以2之后,所得新的整數部分為1,相應位為1;如果整數部分為0,則相應位為0。從高位向低位逐次進行,直到滿足精度要求或乘以2后的小數部分為0為止。最后一次乘以2所得的整數部分為K-m。轉換后,所得的純二進制小數為0.K-1K-2…K-m

【例1-2】 將(0.6531)10轉換成純二進制小數。轉換過程如下:

如只取六位小數能滿足精度要求,則得:

(0.6531)10= (0.K-1K-2…K-m2≈(0.K-1K-2K-3K-4K-5K-6) = (0.101001)2

可見,十進制純小數不一定能轉換成完全等值的二進制純小數。當遇到這種情況時,可根據精度要求,取近似值。

③ 十進制數轉換成二進制數

【例1-3】 將(215.6531)10轉換為二進制數。

④ 二進制數轉換成十進制數

【例1-4】 將二進制數11001.1001轉換成十進制數。

(2) 二進制數與十六進制數之間的轉換

① 二進制數轉換成十六進制數

對于二進制整數,只要自右向左將每四位二進制數分為一組,不足四位時,在左邊添0,補足四位;對于二進制小數,只要自左向右將每四位二進制數分為一組,不足四位時,在右邊添0,補足四位。然后將每組用相應的十六進制數代替,即可完成轉換。

【例1-5】 把(101101101.0100101)2轉換成十六進制數。

② 十六進制數轉換成二進制數

將十六進制數轉換成二進制數,只要將每一位十六進制數用四位相應的二進制數表示,即可完成轉換。

【例1-6】 將(1863.5B)16轉換成二進制數。

3.帶符號數的表示及運算

在應用中數字有正有負,計算機中該如何表示呢?計算機中所能表示的數或其他信息都是數字化的,即用數字0或1來表示數的正負號。一個數的最高位為符號位,若該位為0,則表示正數;若該位為1,則表示負數。

【例1-7】 用八位二進制數表示+20和-20分別為:

其中第一位為符號位。這種在計算機中使用的、連同數符一起數字化了的數,就稱為機器數;而真正表示數值大小的部分,并按一般書寫規則表示的原值稱為真值。即:

也就是說,在機器數中用0或1取代了真值形式的正負號。

計算機中對帶符號數的表示方法有原碼、反碼、補碼三種。下面將分別介紹。

(1)原碼

如上所述,正數的符號位用0表示,負數的符號位用1表示。這種表示法就稱為原碼。

在原碼表示時,+105和-105的數值位相同,而符號位不同。

(2)反碼

正數的反碼和原碼形式相同,負數的反碼是將符號位除外,其他各位逐次取反。

(3)補碼

補碼表示是為了方便加減運算(把減法變為加法),這在計算機中特別實用。

補碼規則為:正數的補碼和其原碼形式相同,負數的補碼是將它的原碼除符號位以外逐位取反,最后在末位加1。

例如 : X=+8 [X]=00001000 [X]=0 0001000

例如: X=-8 [X]=1 0001000 [X]=1 1110111 [X]=1 1111000

例如: X=44 Y=-57

4.二進制編碼

在計算機中,數是用二進制表示的。計算機應能識別和處理各種字符,如大小寫的英文字母,標點符號等。這些字符應如何表示呢?由于計算機中的基本物理器件是具有兩種狀態的器件,所以各種字符只能用若干位二進制碼的組合來表示,這就是二進制編碼。

(1)二進制編碼的十進制數

因為二進制數的實現比較容易、可靠,且二進制數的運算規律十分簡單,所以,在計算機中采用二進制。但是,二進制數不直觀,于是在計算機的輸入和輸出時通常還是采用十進制數表示。不過這樣的二進制數要用二進制編碼來表示。

一位十進制數用四位二進制編碼來表示。常用的8421碼是BCD碼的一種。

【例1-8】 將4978用BCD代碼可表示為:

表1-2列出一部分編碼關系。

表1-2 BCD編碼表

(2)字符、文字的編碼

由于計算機內部存儲、傳送及處理的信息只有二進制信息,因此各種文字、符號也就必須用二進制數編碼表示。

ASCII碼是美國標準信息碼,它采用七位二進制數(b7b6b5b4b3b2b1)表示128個符號。例如:0~9的ASCII碼為30H~39H;大寫字母A~Z的ASCII碼為41H~5AH。ASCII編碼見表1-3。

表1-3 ASCII編碼

5.位、字節和字的基本概念

計算機存儲信息的最小單位是“位”,是指二進制數中的一個數位,一般我們稱之為比特(bit),其值為“0”或“1”。

在計算機中,我們常使用字節(Byte)作為計量單位,一個字節由8個二進制位組成,其最小值為0,最大值為(11111111)2=(FF)16=255。一個字節對應計算機的一個存儲單元,它可存儲一定的內容,例如存儲一個英文字母“A”的編碼,其對應的內容為“01000001”。由于計算機中有很多個存儲單元,我們還需要將它們的地址進行編碼。若存儲器容量為1024字節(簡稱為1K字節),就需要用210=1024個地址編碼。有時我們又將兩個字節合稱為一個字(Word)。

6.算術與邏輯運算

(1)算術運算

算術的基本運算有四種算法:加、減、乘、除。

① 二進制加法

二進制加法的運算規則為:

0+0=0 0+1=1+0=1 1+1=0(進位1) 1+1+1=1(進位1)

例如:

② 二進制減法

二進制減法的運算規則為:

0-0=0 1-1=0 1-0=1 0-1=1(有借位)

例如:

③ 二進制乘法

二進制乘法的運算規則為:

0×0=0 0×1=0 1×0=0 1×1=1

例如:

④ 二進制除法

例如:

(2)邏輯運算

布爾代數主要研究如何對事物內部的邏輯關系進行表達和運算。邏輯數據只有兩個值,“真”和“假”。邏輯運算主要有以下幾種。

① 與運算(Y=A∧B)

與運算也稱為邏輯乘法運算,通常用符號“· ”或“∧”、“×”表示。它的運算規則為:

0∧0=0 1∧0=0 0∧1=0 1∧1=1

這種運算的結果也可以歸納為兩句話:二者皆為真則結果為真,有一為偽則結果必偽。

例如:設A=11001010,B=00001111,則

由此可見,用“0”去和一個數位相“與”,其運算結果為0;用“1”去和一個數位相“與”,就是將此數位“保存”下來。

② 或運算(Y=A∨B)

“或”運算也稱邏輯加法,常用符號“+”或“∨”表示。它的運算規則為:

0∨0=0 0∨1=1 1∨0=1 1∨1=1

上述四個式子與一般加法不同,Y的值只能有兩個數值0或1。上面四個式子可以歸納成兩句話:兩者皆偽則結果必偽,有一為真則結果為真。

例如:設A=10101,B=11011,則:

注意:1“或”1等于1,是沒有進位的。

③ 反運算(Y=A

反運算又稱非運算,為邏輯否定。如果一事物的性質為A,則經過“反”運算之后,其性質必與A相反,用表達式表示為:Y=A。其運算規則為:

0=1讀成“非0等于1”

1= 0讀成“非1等于0”

當A為多位數時,如A=A1A2A3…An,則其“邏輯反”為:Y=A1A2A3An

例如:設A=1101000,則:Y=A=0010111。

④ 異或運算(Y=A⊕B)

異或運算通常用符號“⊕”表示。它的運算規則為:

0⊕0=0 0⊕1=1 1⊕0=1 1⊕1=0

同樣,異或運算結果也可歸納成兩句話:只要兩邏輯變量相同,則異或運算的結果就為0;當兩個邏輯變量不同時,異或運算的結果為1。

當A或B為二進制數時,則進行異或運算時,各對應位分別進行異或運算。

例如:設A=1010,B=1101,則:

1.4.2 微型計算機的基本組成電路

計算機是由若干個基本電路單元組成的。本小節對微機中最常見的基本電路做一簡單介紹,這些電路是組成計算機的硬件基礎。

1.常用邏輯電路

邏輯電路是計算機執行運算、控制功能所必需的電路,是計算機的基本單元電路。

邏輯電路中,其輸入和輸出只有兩種狀態,即高電平和低電平。通常以邏輯1和0表示電平的高低。下面簡單介紹常用邏輯電路的邏輯符號和邏輯功能。具體電路可參看有關書籍。

(1)與門

與門是一個能夠實現邏輯乘運算的、具有多端輸入/單端輸出的邏輯電路。圖1-1(a)所示是一個二輸入的與門,其邏輯函數式是:

Y=A∧B,或Y=A·B

常用邏輯電路的真值表如表1-4所示。

圖1-1 常用邏輯單元圖形符號

表1-4 常用邏輯電路真值表

(2)或門

或門是一個能夠實現邏輯加運算的、具有多端輸入/單端輸出的邏輯電路。圖1-1(b)就是一個二輸入的或門,其邏輯函數式是:

Y=A∨B

(3)非門

非門是一個能夠完成邏輯非運算的、具有單端輸入/單端輸出的邏輯電路。圖1-1(c)就是非門電路,其邏輯函數式是:

Y=A

(4)異或門

異或門是一個能夠完成邏輯異或運算的多端輸入/單端輸出的邏輯電路。圖1-1(d)就是一個二輸入的異或門,其邏輯函數式是:

Y=A⊕B

(5)與非門

與非門是一個能夠完成邏輯與非運算的多端輸入/單端輸出的邏輯電路。圖1-1(e)就是一個二輸入的與非門,其邏輯函數式是:

Y=A∧B

(6)或非門

或非門是一個能夠完成邏輯或非運算的多端輸入/單端輸出的邏輯電路。圖1-1(f)就是一個二輸入的或非門,其邏輯函數式是:

Y=A∨B

2.觸發器

觸發器是計算機記憶裝置的基本單元,它具有把以前的輸入“記憶”下來的功能,一個觸發器能儲存一位二進制代碼。下面簡要介紹幾種計算機中常用的觸發器。

(1)RS觸發器

RS觸發器的邏輯符號如圖1-2所示。它有兩個輸入端,兩個輸出端。其中S為置位信號輸入端,R為復位信號輸入端;Q和Q為輸出端。規定Q為高電平,Q為低電平時,該觸發器為1狀態;反之為0狀態。其真值表如表1-5所示。

(2)D觸發器

D觸發器又稱數據觸發器,它的邏輯符號如圖1-3所示。R、S分別為置0、置1端,觸發器的狀態由時鐘脈沖到來時,D端的狀態決定。當D=1時,觸發器為1狀態;反之為0狀態。其真值表如表1-6所示。

圖1-2 RS觸發器的邏輯符號

圖1-3 D觸發器的邏輯符號

表1-5 RS觸發器真值表

表1-6 D觸發器真值表

(3)JK觸發器

JK觸發器的邏輯符號如圖1-4所示。R、S分別為直接置0端和置1端。K為同步置0輸入端,J為同步置1輸入端。其真值表如表1-7所示。

圖1-4 JK觸發器的邏輯符號

表1-7 JK觸發器真值表

JK觸發器的邏輯功能比較全面,因此在各種寄存器、計數器、邏輯控制等方面的應用最為廣泛。但在某些情況下,如二進制計數、移位、累加等,多用D觸發器。因為D觸發器的線路簡單,所以大量應用于移位寄存器等方面。

3.寄存器

寄存器是由觸發器組成的。一個觸發器就是一個一位寄存器。多個觸發器就可以組成一個多位寄存器。

(1)鎖存器

它是用以暫存某個數據,以便在適當的時間節拍將數據輸入或輸出到其他記憶元件中去。圖1-5是一個并行輸入與并行輸出的四位鎖存寄存器的電路原理圖,它由四個D觸發器組成。

開始時,先在清0端加清0脈沖,把各觸發器置0,即Q端為0。然后將數據加到觸發器的D輸入端,在CLK時鐘信號作用下,輸入端的信息就保存在各觸發器中(D0~D3)。

圖1-5 四位鎖存寄存器的電路原理圖

(2)移位寄存器(Shifting Register)

移位寄存器能將所儲存的數據逐位向左或向右移動,以達到計算機運行過程中所需的功能。圖1-6所示即為一串行輸入四位移位寄存器電路。

開始時,先在清0端加清0脈沖,使觸發器輸出置0。將第一個數據D0加到觸發器1的串行輸入端,在第一個CLK脈沖到達時Q0= D0, Q1= Q2= Q3=0;然后將第二個數據D1加到串行輸入端,在第二個CLK脈沖到達時,Q0= D1, Q1= D0, Q2= Q3=0。依此類推,當第四個CLK來到之后,各輸出端分別是,Q0= D3, Q1= D2, Q2= D1, Q3= D0。輸出數據可用串行的形式取出,也可用并行的形式取出。

圖1-6 四位移位寄存器

(3)計數器(Counter)

計數器也是由若干個觸發器組成的寄存器,它的特點是能夠對時鐘脈沖進行計數等。

圖1-7所示為計數器的電路原理圖。圖中各位的J、K輸入端都是懸浮的。這相當于J、K輸入端都是置1的狀態,即各位都處于準備翻轉的狀態。只要時鐘脈沖邊沿一到,最右邊的觸發器就會翻轉,即由0轉為1或由1轉為0。

圖1-7中的計數器是四位的,因此可以計0~15的數。如果要計更多的數,就需要加位數,如八位計數器可計0~255的數,16位則可以計0~65535的數。

圖1-7 計數器的電路原理圖

(4)三態門(三態寄存器)

微型計算機的總線“共享”總線通道,能正確實現信息源與信息目的地的對應傳輸。采用三態門電路(或稱三態門)把部件與總線相連。當部件不工作時,與總線相連的三態輸出電路處于高阻態,猶如與總線斷開一樣,對總線不產生影響。

所謂三態是指輸出電路具有0態(開通,傳輸“0”)、1態(開通,傳輸“1”)、高阻態(斷開/懸浮輸出)。圖1-8給出了總線結構上廣泛采用的單向和雙向三態門的電路原理。三態門“開”或“關”的控制信號一般由微處理器發出。雙向三態門由兩個單向三態門構成,又稱做雙向電子開關。工作時,用兩個單向三態門互斥的控制端信號來選通傳輸方向。

圖1-8 總線結構上采用的三態電路

三態門一般具有較高的輸入阻抗和較低的輸出阻抗,可以改善傳輸特性,故對傳輸數據起到緩沖作用,同時能對傳輸的數據進行功率放大,具有一定的驅動能力。所以三態門電路還被稱為數據緩沖/驅動電路。

當控制端E=1時,輸出等于輸入,此時總線由該器件驅動,總線上的數據由輸入數據決定。當E=0時,輸出端呈高阻抗狀態,該器件對總線不起作用。當寄存器的輸出端接至三態門,再將三態門的輸出端與總線連接起來,就構成三態輸出的緩沖寄存器。圖1-9所示即為一個四位的三態輸出緩沖寄存器。因圖中采用的是單向三態門,所以數據只能從寄存器輸出至數據總線。如果要實現雙向傳送,則要用雙向三態門,見圖1-8(b)。

圖1-9 三態輸出緩沖寄存器

(5)譯碼器

微機中廣泛采用地址譯碼器來對存儲器或輸入/輸出設備進行選擇,操作其工作。例如,CPU在給出存儲單元的地址后,存儲器要根據該地址選擇對應的存儲單元,這個過程叫做地址譯碼。設存儲單元的地址碼為n位二進制數,存儲單元的總數為N 個,則有N=2n。地址譯碼就是根據n位地址碼,在N 個存儲單元中選中對應的一個存儲單元進行讀/寫的。這個選擇工作是由地址譯碼電路來完成的。

譯碼電路的功能是,對輸入的一個二進制數碼經“翻譯”后產生一個對應的輸出有效信號。N位二進制數有2n個不同的編碼組合,所以,譯碼電路有n個輸入端,2n個輸出端。譯碼電路工作時,在某一時刻,2n個輸出中只能有一個(和當前輸入的代碼相對應的)輸出信號為有效,其余均為無效。若以輸出低電平“0”為有效,則高電平“1”表示無效。

圖1-10中給出了3-8譯碼器(74LS138)的邏輯電路。表1-8的真值表有三個輸入端A0~A2,八個輸出端(低電平有效),三個選通信號(或稱允許信號)和G。只有當為低電平G,為高電平,即時,譯碼器才能根據輸入A0~A2的組合進行譯碼。

圖1-10 3-8譯碼器74LS138的邏輯電路

表1-8 3-8譯碼器74LS138的真值表

主站蜘蛛池模板: 越西县| 崇左市| 黄龙县| 聂拉木县| 郸城县| 馆陶县| 新津县| 海盐县| 金堂县| 贵溪市| 沁水县| 贵阳市| 高唐县| 平凉市| 克东县| 甘德县| 尉氏县| 海城市| 武城县| 大荔县| 香港 | 如皋市| 成都市| 甘德县| 苍南县| 墨竹工卡县| 同江市| 中牟县| 靖宇县| 罗源县| 宜良县| 禄丰县| 陆河县| 锡林郭勒盟| 沁水县| 广南县| 丹东市| 衡山县| 互助| 新宁县| 齐河县|