2014年計算機三級《PC技術》考試要點
2.二進制數的運算
對二進制數有兩種不同類型的運算處理:算術運算和邏輯運算。
3.不同進位制數之間的轉換
十進制整數轉換成二進制整數可以采取“除以2取余法”。
十進制小數轉換成二進制小數,可以采取“乘以2取整法”,把給定的十進制小數不斷乘以2,取乘積的整數部分作為二進制小數的最高位,然后把乘積小數部分再乘以2,取乘積的整數部分,得到二進制小數的第二位,重復上述過程,就可以得到希望的位數,有時得到的是近似值。八進制數轉換成二進制數的方法很簡單,只要把每一個八進制數字改寫成等值的3位二進制數即可,且保持高、低位的次序不變。八進制數字與二進制數的對應關系如下:
(0)8 =000 (1)8 =001 (2)8 =010 (3)8 =011
(4)8 =100 (5)8 =101 (6)8 =110 (7)8 =111
十六進制數轉換成二進制數的方法與八進制數轉換成二進制數的方法類似,只要把每一個十六進制數字改寫成等值的4位二進制數即可,且保持高、低位的次序不變。十六進制數字與二進制數的對應關系如下:
(0)16 =0000 (1)16 =0001 (2)16 =0010 (3)16 =0011
(4)16 =0100 (5)16 =0101 (6)16 =0110 (7)16 =0111
(8)16 =1000 (9)16 =1001 (A)16 =1010 (B)16 =1011
(C)16 =1100 (D)16 =1101 (E)16 =1110 (F)16 =1111
二進制數轉換成八進制數,整數部分從低位向高位方向每3位用一個等值的八進制數來替換,最后不足3位時在高位補0湊滿3位;小數部分從高位向低位方向每3位用一個等值的十六進制數來替換,最后不足3位時在低位補0湊滿3位。
二進制數轉換成十六進制數,整數部分從低位向高位方向每4位用一個等值的十六進制數來替換,最后不足4位時在高位補0湊滿4位;小數部分從高位向低位方向每4位用一個等值的十六進制數來替換,最后不足4位時在低位補0湊滿4位。
二進制數與八進制數、十六進制數有很簡單、直觀的對應關系。二進制數太長,書寫、閱讀、記憶均不方便;八進制、十六進制卻像十進制數一樣簡練,易寫易記。必須注意,計算機中只使用二進制一種計數制,并不使用其他計數制,但為了開發程序、調試程序、閱讀機器內部代碼時的方便,人們經常使用八進制或十六進制來等價地表示二進制,所以大家也必須熟練地掌握八進制和十六進制。
4.二進制信息的計量單位
二進制的每一位(即“0”或“1”)是組成二進制信息的最小單位,稱為1個“比特”(bit),或稱“位元”,簡稱“位”,一般用小寫的字母“b”表示。比特是計算機中處理、存儲、傳輸信息的最小單位。
另一種稍大些的二進制信息的計量單位是“字節”(Byte),也稱“位組”,一般用大寫字母“B”表示。一個字節等于8個比特。
在信息處理系統中,使用各種不同的存儲器來存儲二進制信息時,使用的度量單位是比字節或字大得多,經常使用的單位有:
“千字節”(KB),1KB=2 10 字節=1024B
“兆字節”(MB),1MB=2 20 字節=1024KB
“吉字節”(GB),1GB=2 30 字節=1024MB(千兆字節)“太字節”(TB),1TB=2 40 字節=1024GB(兆兆字節)
在網絡中傳輸二進制信息時,由于是一位一位串行傳輸的,傳輸速率的度量單位與上述單位有所不同,且使用的是十進制。經常使用的速度單位有:
“比特/秒”(b/s),有時也稱“bps”。如2400bps(2400b/s),9600bps(9600b/s)等。
“千比特/秒”(kb/s),1kb/s=10 3 比特/秒=1000b/s
“兆比特/秒”(Mb/s),1Mb/s=10 6 比特/秒=1000kb/s
“吉比特/秒”(Gb/s),1Gb/s=10 9 比特/秒=1000Mb/s
“太比特/秒”(Tb/s),1Tb/s=10 12 比特/秒=1000Gb/s
在計算機內部對二進制信息進行運算和處理時,使用的單位除了位(比特)和字節之外,還經常使用“字”作為單位。以80x86或Pentium微處理器為例,處理器可直接進行操作處理的數據單位有5種:位(dit)、字節(Byte)、字(Word)、雙字(DoubleWord)和四字(QuadWord)。
(二)數值信息在計算機內的表示1.整數(定點數)的表示
整數不使用小數點,所以它也叫做“定點數”。計算機中的整數分為兩類:不帶符號的整數(Unsigned Integer),帶符號的整數(Signed Integer)。
不帶符號的整數常用于表示地址等正整數,它們可以是8位、16位甚至32位。8個二進位表示的正整數其取值范是0~255(2 8 -1),16個二進位表示的正整數其取值范是0~65535(2 16 -1),32個二進位表示的正整數其取值范是0~2 32 -1。
帶符號的整數必須使用一個二進位作為其符號位,一般總是最高位(最左面的一位),“0”表示“+”(正數),“1”表示“-”(負數),其余各位則用來表示數值的大小。
為了內部運算處理方便,負整數在計算機內不止一種表示方法。上面的表示法稱為“原碼”,另外的兩種方法分別叫做“反碼”和“補碼”。
負數使用反碼表示時,符號位仍為“1”,但絕對值部分卻正好與原碼相反(“0”變為“1”,“1”變為“0”)。
負數使用補碼表示時,符號位也是“1”,但絕對值部分卻是反碼的個位加“1”后所得到的結果。注意:正整數無論采用原碼、反碼還是補碼表示,其編碼都是相同的,并無區別。
還有一種整數也經常在計算機內使用,稱為“二進制編碼的十進制”整數(Binary Coded Decimal,簡稱BCD整數),它使用4個二進位表示1個十進制數字,符號的表示仍與上相同。
2.實數(浮點數)的表示
實數也叫浮點數,因為它的小數點位置不固定。
一個實數總可以表達成一個純小數和一個乘冪之積。
任意一個實數,在計算機內部都可以用“指數”(這是整數)和“尾數”(這是純小數)來表示,這種用指數和尾數表示實數的方法叫做“浮點表示法”。所以,在計算機中實數也叫做“浮點數”,而整數則叫做“定點數”。
由于指數可以選用不同的編碼(原碼、補碼等),尾數的格式和小數點位置也可以有不同規定,因此,浮點數的表示方法不是惟一的。不同計算機可以有不同的規定,這就引起了相互間數據格式的不兼容性。為此,美國電氣與電子工程師協會(IEEE)制訂了有關浮點數表示的工業標準IEEE754,已被當代所有各類處理器采用。
浮點數的長度可以是32位、64位甚至更長,位數越多,可表示的數值的范圍越大,精度也越高。
(三)整數的性質和運算1.整數補碼表示的數學意義
無符號二進制整數的原碼,其編碼與數值之間的關系如下。
設K n Kn-1 …K1 K0是一個無符號二進制整數,S是它相應的十進制數值,則
S=Kn ×2 n +Kn-1 ×2n-1 +…+K1 ×21 +K0 ×2 0
其中的Kj(j=n,n-1,…1,0)只能為0或1,Kn 是最高位,K0 是最低位(個位)。
Kn Kn-1 …K1 K0 用來表示帶符號整數時,Kn 是符號位,Kn-1 …K1 K0 則為數值位。若Kn Kn-1 …K1 K0 表示的是原碼編碼的整數,則十進制數值S與編碼的關系是:
S=Kn-1 ×2n-1 +…+K1×2 1 +K0 ×2 0 (當Kn =0)
S=-(Kn-1 ×2 n-1 +…+K 1 ×2 1 +K0 ×20 )
(當Kn =1)
但是,如果Kn n-1 …K1 K0 表示的是補碼編碼的整數時,不論符號位K n 如何,十進制數值S與編碼的關系可以統一地表示成為:
S=Kn ×(-2n )+Kn-1 ×2n-1 +…+K1 ×21 +K0 ×20 采用補碼表示的n位二進制帶符號整數的有效范圍是: -2n-1 ≤S≤2n-1 -1
計算機在整數運算過程中,若結果超出此允許范圍,則稱為發生“溢出”。
2.整數的算術、邏輯運算
(1)不同長度整數之間的轉換
一般而言,短整數可以轉換成長整數表示,而反過來卻不行。短整數轉換成長整數表示的方法是:把符號位向左擴充至所需要的長度為止。
(2)整數的變號操作
所謂“變號操作”是指將該整數變成絕對值相同但符號相反的另一個整數。變號操作又叫“取負”運算,它的處理方法是:將該整數的每一個二進位變反,然后在最末位(個位)加1,其結果即為所求值。
(3)整數的移位操作
移位操作有多種,按照移位方向來分,移位操作可分成左移、右移兩大類;按照操作性質則又可區分為算術移位、邏輯移位和循環移位等不同類型。它們有些只對整數進行,有些則可以對任何二進制數進行。
(4)邏輯運算
邏輯運算(又叫布爾運算)總是按位進行處理的,即對應位之間進行規定的邏輯運算,不考慮位與位之間的進位。常用的基本邏輯運算有4種:“非”運算(NOT)、“或”運算(OR)、“與”運算(AND)、“按位加”運算(XOR),它們都非常簡單。
(5)整數加法
兩個帶符號整數相加的運算方法很簡單,只需從低位到高位把所有位(包括符號位)相加,逢2進1,最高位產生的進位忽略不計。
(6)整數減法
兩個帶符號整數相減的運算方法也很簡單,只需先把減數變號,然后再與被減數相加即可。
(7)整數乘法
兩個無符號整數的乘法很簡單,它與日常用紙和筆進行乘法幾乎沒有什么不同。
(8)整數除法
對于補碼表示的兩個帶符號整數,其除法運行比乘法還要復雜一些。下面是算法的簡單描述(假設被除數和除數都是n位):
①把除數(補碼)放入寄存器M,把被除數從n位擴展成2n位長的補碼后放入寄存器A和Q,高位部分放入A(全0或全1),低位部分放入Q。②把寄存器A和Q向左移1位。
③如果A和M同號,執行A=A-M,否則執行A=A+M。
④執行上一步操作的前后,若A的符號保持不變,或者A和Q(高位部分)的結果都是0,則操作成功,令Q0 =1;否則操作不成功,恢復A原來的內容,并令Q0 =0。⑤重復上述步驟②~④共n次,結束。
除法結束后,寄存器A中存放的是余數,寄存器Q中是得到的商。若被除數與除數異號,則商為負數,所以應再對Q取補。不論何種情況,被除數、除數、商和余數總滿足下面的公式:被除數=商×除數+余數
(四)實數的性質和運算1.實數(浮點數)的性質
下表所示是Pentium微處理器中32位浮點數和64位浮點數的一些性質。
32位浮點數 64位浮點數
符號 階碼 尾數 數值
符號 階碼
尾數 數值
+0 0 全0 全0 0 0 全0 全0 0
-1 1 全0 全0 0 1 全0 全0 0
+∞ 0 全1 全0 +∞ 0 全1 全0 +∞
-∞ 1 全1 全0 -∞ 1 全1 全0 -∞
規格化的
非0正實數 0 0
(1.f)
規格化的
非0負實數 1 0
非規格化的
非0正實數 0 0 f≠0 2 -126 (0.f) 0 0 f≠0 2 -1022
(0.f)
非規格化的非0負實數 1 0 f≠0 -2 -126 (0.f) 1 0 f≠0 -2 -1022
(1.f)
2.實數(浮點數)的四則運算
浮點數的加、減運算要比定點數(整數)復雜得多。下面只做簡要介紹。
設浮點數 A=As ×2Ea ,B=Bs ×2Eb 則
和數 C=(As ×2Ea-Eb+Bs )×2Eb ,差 D=(As ×2Ea -Eb -Bs )×2Eb(若Ea ≤Eb )
或者:
和數 C=(As ×Bs ×2Eb -Eb )×2Ea ,差 D=(As -Bs ×2Eb -Ea )×2Ea (若Ea >Eb )一般說來,浮點數的加、減運算有如下幾個步驟:
(1)檢測A和B中有無0,若A=0,則C=B,若B=0,則C=A。運算結束。
(2)計算兩數階碼之差,即d=Ea -Eb ,若d>0,則將尾數Bs 向右移d位,若d<0,則將尾數A s 向右移-d位,若d=0,則As 和Bs 均不移位。這個過程叫做“對階”。
(3)兩尾數相加或相減。
(4)把結果進行規格化。對于Pentium微處理器來說,若結果尾數絕對值小于1,則尾數不斷左移且階碼不斷減1,直至尾數絕對值大于或等于1;若結果尾數絕對值大于或等于2,則尾數右移1位且階碼加1。
注意:兩浮點數加/減時,在結果規格化的過程中,可能會發生“上溢”或“下溢”。浮點數的乘/除法比加/減法稍簡單一些,其公式為:
乘積=(As ×Bs )×2Ea +Eb 商=(As /Bs )×2Ea +Eb 處理過程如下:
(1)檢測A和B中有無0,若AS =0,則乘積(商)=0,運算結束;若BS =0,乘法時乘積=0,除法時商為∞,運算結束
(2)計算兩數階碼之和(或差)。(3)兩尾數相乘或相除。
(4)把結果進行規格化。即,若結果尾數絕對值小于1,則尾數不斷左移且階碼不斷減1;若結果尾數絕對值大于或等于2,則尾數右移且階碼加1。
注意:兩浮點數乘/除時,在階碼相加(減)的過程中,或者在結果規格化的過程中,可能會發生“上溢”或“下溢”。
浮點數運算過程中,為了保證浮點數運算的精度,當尾數右移時,對移出的位還需進行“舍入”處理。