CH4. 資料表示法


儲存在電腦中的資料,基本上有兩種型態:一是數值資料,另一種是文字資料。
底下我們將分別討論之:

CH4-1. 數值資料表示法

數值資料可分為 整數浮點數 兩種:

整數:不含小數的數值稱為『整數』(Integer),包括正數、負數與0。

浮點數:含有小數點的數值即為『浮點數』(Floating-Point Number),也就是我們一般所說的實數。


數值資料中最見的就是正、負整數的資料,在電腦內部充滿著 0101010101 的訊號,可以用二進位數來表示。但是這樣的二進位數都只是正整數而已,電腦內部並沒有 "+"、"-" 等符號來表示正負數。為了解決這個問題,便有人提出了幾種不同的負數表示方法。

CH4-1-1. 負數的表示法

負數在電腦內部的表示法,常用的有最高位元表示法2 的補數表示法兩種,我們以一個整數佔8個 Bits為範例,分別介紹如下:

● 最高位元表示法

最高位元表示法,顧名思義是以最高位元來表示正負號,"最高位元為 0 表示正數","最高位元為 1 則表示負數",如下:

正負數比較表(以最高位元表示法表示負數)

十進位正數
二進位正數
十進位負數
二進位負數
0000000
0000000
0000001
-1
0000001
0000010
-2
0000010
127
1111111
-127
1111111



● 2的補數表示法

最高位元表示法有個缺點,就是產生了 2 個 0 ( +0 與 -0 ),使原來總共可以表示 256個數,變成只能表示 255 個數。而 2 的補數法正可以改良最高位表示法的缺點。

使用 2 補數表示法時,"一個數的負數即是將該數的每一位元取其反相(即 1 變 0,0變 1) 再加1"。如下表:

十進位正數
二進位正數→0、1互換,再加1→二進位負數
十進位負數
0
00000000 → 11111111+1 → 00000000
0
1
00000001 → 11111110+1 → 11111111
-1
2
00000010 → 11111101+1 → 11111110
-2
127
01111111 → 10000000+1 → 10000001
-127
128
無    → 無     → 10000000
-128


由上表可知,只有在 0 時,該數的反相加 1 才會使得最高位元進位,此時該進位的位元捨棄,使得該數 (0) 的正負數表示法相同;因此以 2 的補數法來表示負數,就不會有『兩種方式表示 0』的困擾了。結果正數由 1~127 總共有 127 個;負數由 -1~-128 再加上一個 0,所以 8 個位元總共可以表示 256 個數。

將二進位數值0、1互換(即1變 0,0 變 1 )的動作,一般稱為 1 的補數表示法;當求得1的補數後,只要再加 1,即可求得該數的 2 補數。

CH4-2. 文字資料表示法

電腦不但可以幫我們做快速精確的數值運算,還可以做文字資料的處理;要處理文字資料就必須先瞭解文字資料在電腦中的表示方法。

數值資料在電腦內部是以『二進位』的形式來表示,這是因為數位電腦只能處理二進位形式的資料;同樣地我們輸入電腦的文字資料,亦會被轉換成二進位碼的形式儲存。這種將文字資料轉換成二進位碼的系統就稱為『編碼』系統。以英文字母為例,我們可以建一個編碼表:



我們把每一個英文字母編上一個號碼,建成一套編碼表。這個編碼表可以存放在鍵盤內的電路上。當我們按下一個鍵時,鍵盤的電路便依表格的規定,把該鍵對應的二進位碼送往電腦主機 (例如按下"A"鍵,鍵盤便會把其相對應碼 65 的二進位數 01000001 輸入電腦)。同樣地,當我們想將文字資料輸出時,編碼系統亦會將二進位碼轉換成對應的字元符號,再藉由輸出設備顯示或列印出來。

電腦是以數字碼來表示文字資料,例如 65 代表"A"66 代表 "B"。像這種以數值代表字元的方式稱為編碼,不同的系統可能會使用不同的編碼方式。

CH4-2-1. 常用的英文電腦編碼系統

目前在PC上最常用的英文電腦編碼系統有二:一個是 ASCII 碼,另一個是 EBCDIC 碼。

● ASCII碼

是美國標準資料交換碼的縮寫(American Standard Code for Information Interchange);它不但包含英文大、小寫字母,還有阿拉伯數字、控制字元、以及各種符號等。ASCII碼共有128個,每一個碼都對應一個字元,在電腦中中是以1個Byte來儲存。其數值與字元的對應表如下:



由於 1Byte( 8Bits)可表示出 28 = 256 種資料,因此在 PC上又將 ASCII碼擴充,多了 128個擴充符號字元(號碼為 128~255),可用來繪製表格的格線,或印出特殊的字母符號等。

● EBCDIC碼

EBCDIC碼 (Extended Binary Code Decimal Interchange Code)是美國 IBM 公司所制定的編號系女統。EBCDIC碼的每一個字元是由 8 個位元所組成,共有 種組合,可以表示 256 個字元。


CH4-2-2. 常用的中文電腦編碼系統

在英文電腦中 8 個位元( 28 = 256 )就足以表示所有的英文字母、阿拉伯數字、及許多特殊符號;但是,8 個位元卻不足以表示所有的中文字,所以中文字通常是以 2Bytes(16Bits)來編碼。常見的中文碼有 BIG-5 碼、通用碼、公會碼、倚天碼、王安碼...等;由於這些碼都是中文字儲存在電腦內部時的編碼,所以又稱為中文的內碼。

考考你

(1)一台 8GB 的硬碟,約可存於多少個中文字?
 提示:1個中文字佔 2byte。

(2)請描述 1補數 和 2補數 之間的關係。