歡迎您訪問貴州自考網!  今天是 考生中心 登錄注冊  網站導航

貴州省自考網

微型計算機原理及應用學習筆記 計算機的運算基

來源:貴州自考網 發表時間:2018-06-29   【 【貴州自考網:貴州自考考試第一門戶網】

一、帶符號數的表示法   
計算機在進行算術運算時,必須能夠表示正值和負值兩種數字,習慣的作法是在數值   前加一個正號(+)或負號(一),這樣表示的數稱為帶符號數。   
因為計算機按二僅制規則進行運算,它只能識別“0”和“1” 兩種符號,所以數字的正負號也必須用“0”和“1”來編碼,為此,專門設置了一個稱為“符號位”的附加位并置于數值的最高有效位MSB(Most Significant Bit)之前,以表示該數字的正和負,按常規約定,“0”表示正號,“1”表示負號。   
例如: +9210 = +1011100 2(以 7位二進數表示數值)                   
9210 =  1011100 2   
這里的 十1011100 2 與 一 1011100 2 稱為“真值”,以 X表示。而X在機器中的表
示形式為                           
十1011100 2 =01011100 2
一1011100 2 =11011100 2
這里的01011100 2與11011100 2中包含了數碼化了的符號位“0”和“1”,這種將符號數碼化后的數是計算機能識別的數,稱為“機器數”,以[X]表示。
帶符號數有3種表示方法,筒述如下。
原碼表示法
由前述可知,“真值”是帶“+”“一”號的二進制數,若將真值中的符號“十”用符號位“0”表示,符號“一 ”用符號位“1”表示,這種表示法稱為“原碼表示法”。因此 01011100 2 及11011100 2 都是原碼。   
設機器字長為n,最高位為符號位,則真值X的整數原碼表示為
          
而真值X的小數原碼表示為
        
例如:
    

      
(二)反碼表示法
正數的反碼表示與原碼相同。負數的反碼表示為:原碼除符號位外,數值位按位取反——即“0”變“1”,“1”變“0”。
例如:
則 
設機器字長為n,最高位為符號位,則真值為X的整數反碼表示為
          
而真值X的小數反碼表示為
      
(三)補碼表示法   
上述機器數的原碼表示法中“O”有兩種表示法,即0000000O。和IO000000。;反碼表 示法中“0”也有兩種表示法,即00000000和1111 1111。因此在這二種表示法中8位二 進制數只能表示 255個數,即一 127一 + 127,有一個重碼。    
1. 補碼與“模”    
以鐘表對時為例,設當前標準時間為5點正,對于指示為9點的鐘表,可采用兩種方法校準,一是將時針退9 - 5 = 4格,一是將時針向前拔 12 - 4 = 8格。這兩種方法都能對準到5點。可見在這一命題中減 4和加 8是等價的,稱8是(-4)對 12 的補碼,用數學 公式表示為        - 4 = +8 (mod 12)
mod 12是指 12為模數,這個模”表示自動被被丟掉的值,上式稱為“同余式”。   
上式也說明 - 4 和 +8 是互補的(對模 12而言),從該式也可見負數用補碼表示時, 可以把減法轉化為加法,在計算機中用硬件實現比較方便。
2.  補碼表示式
設機器字長為n位,則對整數而言其模為2 n ,真值X的補碼表示為
     
而對小數而言,其模為2,真值X的補碼表示為
例如   X= -1010011,n=8
則   [X]補=28+[-1010011]=100000000-1010011=10101101
通常可以利用原碼求補碼,正數的補碼表示與原碼相同。負數的補碼表示為:原碼除符號位外,數值位逐位求反后再加1。
在補碼表示中,0具有唯一的編碼00000000(8位),8位二進制補碼能表示的數值范圍為-128~+127。
8位二進制數表示的無符號數,帶符號數(原碼、反碼、補碼)的對照如表1-1所示。
表1-1                    數的表示法

 

二進制數碼表示

無符號二進制數

  

  

  

00000000

0

+0

+0

+0

00000001

1

+1

+1

+1

00000010

2

+2

+2

+2

01111100

124

+124

+124

+124

01111101

125

+125

+125

+125

01111110

126

+126

+126

+126

01111111

127

+127

+127

+127

10000000

128

-0

-128

-127

10000001

129

-1

-127

-126

10000010

130

-2

-126

-125

11111100

252

-124

-4

-3

11111101

253

-125

-3

-2

11111110

254

-126

-2

-1

11111111

255

-127

-1

-0

 

二、數的定點和浮點表示方法
計算機中常用的數據表示格式有兩種:一種是定點數,即事先均約定機器所有數據的小數點位置是固定不變的,且通常將數據表示為純整數或純小數,上一小節所述都為定點
數表示;另一種是浮點數。二者的格式如圖1-2所示。
 
                           
                圖1-2 定點數與浮點數
(一)   二進制的定點表示法
小數點固定的數稱為“定點數”。
一個字長為 n 位的定點數,其中最高位表示符號,稱為“符號位”,其余(n—1)位 用來表示數值,稱為“數值位”。   
對定點整數,n位二進制數(包括符號位)所表示的整數X范圍是

0  |X|  2 n-1 -1  

對定點小數,n位二進制數(包括符號位)所表示的小數X范圍是

 0  |X|  1 - 2 n-1  

 

(二)   二進制數的浮點表示法
對于一些絕對值很大的數,或要求表示的數值范圍很廣的數,經常采用浮點表示法。     一個二進制數N可用如下形式表示                                   
  N=M·RE
   這里M稱為浮點數的尾效,E稱為階碼,M為定點小數、E為定點整數,R為階碼的基教,在二進制數中R=2。  
 在計算機中浮點數通常表示為如圖1-3格式。

       

   浮點數格式
 
一般階碼用補碼表示,便于指數加減運算。尾數可以取補碼或原碼,但常用原碼表示, 因為原碼便于乘除運算,而進行加減運算時,轉換成補碼也方便。。
若一個浮點數的階碼有m位(不包括階符),尾數有K位(不包括尾符),則可表示的數的最大絕對值為:階符為正、階碼和尾數全為“1”時,即                       

|N| max =12 –K  × 22 n-1 -1     

 

而可表示的數的最小絕對值為:階符為負,階碼為全“1”,尾數最低位為“1”,其余為“0’時,即
                 
用浮點數進行運算,
則在運算前首先要“對階”,且按大的階對階,否則可能丟失數字的有效位而引起誤差。
一般浮點數都以“規格化”形式表示,若是原碼尾數,最高尾數為“l”是規格化形式;若是補碼尾數,則正數的最高尾數位為“1”,負數的最高尾數位為“0”才是規格化數,即尾數的最高位與符號位必須相反。
采用“規格化”形式表示浮點數可以保留最多的有效數字,提高運算精度。

例如  數 0.000101×2 5 的規格化表示為 0.101×2 2 

 

在浮點數表示中,當一個數的階碼大于機器所能表示的最大階碼時,產生“上溢”,轉入“溢出中斷”處理;當一個數的階碼小于機器所能表示的最小階碼或尾數為 0 時,則產生“下溢”,下溢時機器一般將此當作“機器零’來處理。
最后需說明的是,浮點數格式除圖 1-3 所表示的格式外,還可如圖 l-4 所示。

 

                              圖1-4  浮點數的另一格式表示


三、算術運算的基礎——定點數的加減運算
計算機通常采用二進制來表示數,因為采用二進制計數在電路上易于實現,且穩定可靠,另外,二進制的運算規則簡單。
二進制的運算規則為
              
帶符號數在機器中有多種表示方法,最常用的有三種,即原碼、反碼和補碼。同一種算術運算,對于不同的數碼表示法有不同的規則。由于補碼表示法在同一個電路既可用于元符號數相加,又可用于有符號數相加,同時利用補碼運算能使減法轉換為加法,因此目前絕大多數計算機都采用補碼表示法來進行加減運算。
(一)補碼的加減運算規則
設   
     
為兩個n位補碼表示的二進制小數,XsYs為兩數的符號位,在加減運算中同數據位一起參與運算。
則補碼數的加減運算規則為

 [X+Y]=[X]+[Y]

 [X-Y]=[X]+[-Y]

可見,補碼的加法運算只要把兩個補碼數直接相加(包括符號位在內)就能得到和數的補碼表示。而減法運算可以通過加法運算來實現,只是在運算之前,必須對[Y]進行一次求補運算,求得[-Y]。即將減數的補碼表示[Y]補變成其負數的補碼表示[-Y],其轉換過程為:將[T]補的各位(包括符號位的代碼)取反加“1”。
(二)加減運算中溢出的判別
兩個定點數經過加減運算后,其結果(和數或差數)超過了定點數的表示范圍,就會發生溢出,從而導致運算結果出錯,因此在加減運算后必須判別是否發生溢出。
判別溢出的常用方法有三種:
1.符號比較法
兩個同符號數相加,若“和數”符號與原數符號不同,則表示發生溢出;兩個異符號數相減,若“差數”符號與減數符號相同,則也表示發生溢出。而兩異符號數相加或兩同符號數相減是不會發生溢出的。

例1    [X]補=1.0011,[Y]補=1.0101
則     [X+Y]補=[X]補+[Y]補=1.0011+1.0101=10.1000=0.1000
(符號位前的“1”自動丟棄)
本例中,“和數”的符號位(“0”)與原數的符號位(“1”)相異,發生溢出。
例2      [X]補=0.1010,[Y]補=1.1001
則       [-Y]補=0.0111
    [X-Y]補=[X]補+[-Y]補=0.1010+0.0111=1.0001
本例中,“差數”的符號位(“1”)與“減數”的符號位(“l”)相同,發生溢出。
采用這種判別法必須保留加法運算中“加數”和減法運算中“減數”的符號,這是可以實現的,因為在加減法運算中“加數”及“減數”一般是保持不變的。
2. 雙進位法
加減運算后“和數”及“差數”中的符號位的進位輸入Cin(即數值位的最高位向符號位的進位)與進位輸出Cout(即符號位在運算中向高一位的進位)相異,則有溢出,表示為
           
以上述兩例說明之:
例1   運算過程中
則             ,有溢出
 
例2   運算過程中
則                ,有溢出。
3. 雙符號位法
對參加運算的數在運算過程中采用兩個符號位,若運算結果“和數”或“差數”的兩個符號位不相同,表示結果有溢出,而運算最后結果仍取一個符號位。
仍以上兩例說明之:
例1   [X]補=1.0011,[Y]補=1.0101
則  [X+Y]補=[X]補+[Y]補=11.0011+11.0101=10.1000=0.1000
兩個符號位為10,相異,有溢出
例2   [X]補=0.1010,[Y]補=1.1001
則    [-Y]補=0.0111
[X-Y]補=[X]補+[-Y]補=00.1010+00.01111=01.0001=1.0001
兩個符號位為01,相異,有溢出。
再舉兩例:
例3   [X]補=0.0100,[Y]補=0.1010
則  [X+Y]補=00.0100+00.1010=00.1110=0.1110
兩個符號位為00,相同,無溢出
例4   [X]補=1.0111,[Y]補=0.0001
則   [-Y]補=1.1111
     [X-Y]補=[X]補+[-Y]補=11.0111+11.1111
兩個符號位為11,相同,無溢出
在例1中,結果的雙符號位為10,表示兩個負數之和小于計算機所能表示的最小負數,稱為“下溢”(“10”也表示負數被正數相減后所得結果小于計算機所能表示的最小負數);例2中,結果的雙符號位為01,表示正數被負數相減后所得結果大于計算機所能表示的最大正數,稱為“上溢”(“01”也表示兩個正數之和大于計算機所能表示的最大正數)。
四、二進制信息編碼
所謂二進制信息編碼是指用二進制代碼來表示計算機所要處理的信息——數值、數字、字母和符號等,一般表示為若干位二進制碼的組合。
(一)BCD碼(二——十進制碼)

通常用4位二進制數來表示1位十進制數,表示的方法很多,最常用的是采用標準8421位權制的二進制代碼,稱為“8421BCD碼”, BCD即Binary Coded Decimal——二進制編碼的十進制數。凡是用若干位(一般是4位)二進制數碼來給l位十進制數編碼的都稱為 BCD碼(二一十進制碼),“842lBCD碼”是 BCD碼的一種。 842lBCD碼同十進制數、二進制數的關系如表1-2所示。
表1-2             十進制數、二進制數和BCD碼對照表

 

十進制

二進制

8421BCD

十進制

二進制

8421BCD

0

1

2

3

4

5

6

7

0000

0001

0010

0011

0100

0101

0110

0111

0000

0001

0010

0011

0100

0101

0100

0111

8

9

10

11

12

13

14

15

1000

1001

1010

1011

1100

1101

1110

1111

         1000

         1001

  0001   0000

  0001   0001

  0001   0010

  0001   0011

  0001   0100

0001   0101

 

BCD碼比較直觀,看到一個用BCD碼表示的數,可以立即寫出該數的十進制表示。例如1000 1001 0011. 0111 0110 0100BCD=893.76410
 
    (二)ASCⅡ碼
 目前在計算機中應用最廣泛的字符編碼系統是ASCⅡ碼(American standard Code for Information Interchange,美國信息交換標準碼),標準的ASCⅡ碼由7位二進制代碼組成,可表示 27=128種不同的字符,包括十進制數字0~9,英文26個字母大寫與小寫,標點符號,數據控制的其他專用字符。ASCⅡ字符編碼表見表1-3。
在計算機系統中,數據傳送的基本單位是字節一一8位,因此在一個字節中存放ASCⅡ代碼時,最高位b7常用作奇偶校驗位,用以判別數碼傳送是否正確,b7這一位的數值由奇偶校驗的類型決定。
偶校驗:是指包括奇偶校驗位在內,所有“1”的位數之和是一個偶數。例如,數字“3”的ASCⅡ代碼為“0110011”,因為代碼中有4個“1”,是偶數,所以奇偶校驗位B7=“0”,則數字“3”的帶偶校驗的ASCⅡ代碼為“00110011”。
奇校驗:是指包括奇偶校驗位在內,所有“1”的個數為奇數。顯然,此時數字“3”的帶奇校驗的ASCⅡ代碼為“10110011”。
(三)漢字編碼
在我國要推廣普及計算機,必須解決在計算機上輸入、處理和顯示漢字的問題,其關鍵是漢字編碼問題。
1. 漢字的輸入編碼
目前較常用的輸入碼有①數字編碼(常用的是國標區位碼,優點是無重碼,且輸入碼與內部碼的轉換較方便,缺點是代碼難記);②拼音碼(以漢語拼音為基礎的輸入方法,優點是熟悉漢語拼音者即能使用,缺點是重碼率高,需過去時行同意字選擇,影響輸入速度);③字形碼(按漢字的字形進行編碼,最常用的是五筆字型碼)。另外還有詞組輸入、聯想輸入等多種快速輸入方法。
2. 國標碼與漢字機內碼
國標碼是國家標準漢字編碼的簡稱,該編碼集的全稱是信息交換用漢字編碼字符集——基本集,國家標準編號為GB2312—80,又稱為 GB2312—80編碼
國標碼規定:一個漢字用兩個字節表示,每個字節只用前7位,最高位都未作定義,為書寫方便,常用4位十六進制數來表示一個漢字。
國標碼是一種漢字交換碼,其主要作用是:用于統一不同的系統之間所用的不同編碼。
漢字機內碼是漢字在計算機部存儲、運算、處理的代碼,一般采用兩個字節表示,兩個字節的最高位均規定為“1”,例如在國標碼的兩個七位編碼的最高位之前各加一個“1”,即形成了兩個字節的漢字機內碼,簡稱“內碼”。
3. 漢字字模碼
字模碼是用點陣表示的漢字字形代碼,是漢字的輸出形式,又稱“字形碼”。

 

TAG標簽:

貴州自考便捷服務

貴州自學考試專題

更多>>
混合过关规则