380 likes | 531 Views
第二章 電腦資料表示法與數字系統. 2-1 資料表示法簡介 2-2 數值表示法 2-3 數字系統介紹 2-4 數字系統轉換方式. 我們知道電腦與一般的電器用品一樣,都是由許多電子電路所組成,並且也透過這些連接的電子電路來傳遞訊息。 電腦僅能辯識電路上電流的「通」( ON )與「不通」( OFF )兩種訊號,因此使用 ” 0” 或 “ 1” 表示電流的脈衝,” 0” 代表 OFF ,” 1” 代表 ON 。. 2-1 資料表示法簡介.
E N D
第二章 電腦資料表示法與數字系統 2-1 資料表示法簡介 2-2 數值表示法 2-3 數字系統介紹 2-4 數字系統轉換方式
我們知道電腦與一般的電器用品一樣,都是由許多電子電路所組成,並且也透過這些連接的電子電路來傳遞訊息。 • 電腦僅能辯識電路上電流的「通」(ON)與「不通」(OFF)兩種訊號,因此使用 ”0” 或 “1” 表示電流的脈衝,”0” 代表 OFF,”1” 代表 ON。
2-1 資料表示法簡介 • 不過因為電腦所處理的資料相當龐大,一個位元不夠使用,所以又將八個位元組合成一個「位元組」(byte),因為一個位元有 ”0” 與 “1” 兩種狀態,一個位元組便有 28=256 種狀態。
由於中文字的字數眾多,所以無法使用一個位元組來代表一個中文字碼,而必須至少使用兩個位元組來表示(如BIG5中文編碼),因為可表示 216=65536 個字型。 • 為了計量方便起見,我們定義了更大的儲存單位。常用的儲存單位有KB(Kilo Byte)、MB(Mega Bytes)、GB(Giga Bytes)等等,這些單位的換算關係如下: • 1KB(Kilo Bytes)=210 Bytes=1024Bytes • 1MB(Mega Bytes)=220 Bytes=1024KB • 1GB(Giga Bytes)=230 Bytes=1024MB • 1TB(Tera Bytes)=240 Bytes=1024GB
編碼系統簡介 • 由於電腦中的符號、字元或文字是以「位元組」(byte)為單位儲存,因此必須逐一轉換成相對應的內碼,然後電腦才能夠明瞭使用者所下達的指令,這就是編碼系統(Encoding System)的由來。在此種情形下,美國標準協會(ASA)提出了一組以7個位元(Bit)為基礎的「美國標準資訊交換碼」(American Standard Code for Information Interchange, ASCII)碼,來做為電腦中處理文字的統一編碼方式,是目前最普遍的編碼系統。
ASCII採用8 位元表示不同的字元,不過最左邊為核對位元,故實際上僅用到7個位元表示。也就是說ASCII碼最多可以表示27=128個不同的字元,可以表示大小英文字母、數字、符號及各種控制字元。例如ASCII碼的字母 ”A” 編碼為1000001,字母 ”a” 編碼為1100001:
後來有些電腦系統為了能夠處理更多的字元,將編碼系統擴充到8個位元,與原有的ASCII碼字元集比較之下,新的字元集有更多的圖形字元。例如由IBM所發展的「擴展式BCD碼」(Extended Binary Coded Decimal Interchange Code, EBCDIC),原理乃採用8個位元來表示不同之字元,因此EBCDIC碼最多可表示256個不同字元,比ASCII碼多表示128個字元。例如EBCDIC編碼的'A'編碼11000001,'a'編碼為10000001。如下圖所示:
Unicode碼 • (Unicode Technology Consortium:UTC)所制定做為支援各種國際性文字的16位元編碼系統- Unicode碼(或稱萬國碼)。在Unicode碼尚未出現前,並沒有一個編碼系統可以包含所有的字元,例如單單歐州共同體涵蓋的國家,就需要好幾種不同的編碼系統來包括歐洲語系的所有語言。Unicode跟其它編碼系統不同的地方,在於字表容納的總字數。例如國內有許多人取了「電腦打不出來」的名字,好比知名歌手陶吉吉、總統府秘書長游錫方方土,原因就是BIG5碼只能表示13000個左右的中文字,如果能夠支援Unicode碼,就不會有這樣的問題了。
2-2 數值表示法 • 一般在電腦中的資料,大致可以區分為文字資料與數值資料兩種。文字資料的表示法在上節中已經說明,接下來要來介紹數值資料:
整數表示法 • 對於電腦中的數值資料,使用二進位系統雖然可以正確地表示整數與小數部分,但是僅僅限於正數部分,而無法表示負數,畢竟電腦內部並無法直接使用 ”+”或 ”-” 來表示正、負數。由於負數的表示法會影響電腦運算速度,通常電腦中的負數表示法,多半是利用「補數」的概念。 • 所謂整數,就是不帶小數點的數,範圍包括0、正整數、負整數。在電腦系統中只能以固定位數表示數字,所用的位元組(bytes)越大,儲存位數越大。通常可區分為「不帶號整數」及「帶號整數」兩種:
不帶號整數 • 就是正整數,並且再儲存時不帶任何符號位元。例如一個正整數是以一個位元組(8 bits)來儲存,則共能表示28=256個數字,且數字範圍為0 ~ 255。總結來說,如果某電腦系統是以n位元來表示正整數,則可能表示的有效範圍為 0 ~ 2n-1 • 帶號整數 • 可以表示正負整數,必須利用額外的1bit來表示符號位元,符號位元為0表示為正數,如果是1則代表為負數,其他剩下的位元則表示此整數的數值。對於利用n個位元來表示帶號整數的正數範圍為(0 ~ 2n-1)
至於負整數的表示,則必須從先從「補數」談起。所謂「補數」,是指兩個數字加起來等於某特定數(如十進位制即為10)時,則稱該二數互為該特定數的補數。例如3的10補數為7,同理7的10補數為3。對二進位系統而言,則有1補數系統和2補數系統兩種,敘述如下: • 1補數系統(1´s Complement) • 「1補數系統」是指如果兩數之和為1,則此兩數互為1的補數,亦即0和1互為1的補數。也就是說,打算求得二進位數的補數,只需將0變成1,1變成0即可;例如011010102的1補數為100101012。
至於談到電腦內部的常用負數表示法,主要有「帶號大小值法」、「1的補數法」及「2的補數法」三種。分別介紹如下:至於談到電腦內部的常用負數表示法,主要有「帶號大小值法」、「1的補數法」及「2的補數法」三種。分別介紹如下: • 帶號大小值法 (Sign Magnitude) 若用N位元表示一個整數,最左邊一位元代表正負號,其餘N-1位元表示該數值,則此數的變化範圍在 -2N-1-1~ +2N-1-1。如果是以8個位元來表示一個整數,則最大的整數為(01111111)2=127,而最小的負數(11111111)2= -127。
1 ‘s 補數法(1’s Complement) 最左邊的位元同樣是表示正負號,它的正數的表示法和帶號大小值法完全相同,當表示負數時,由0變成1,而1則變成0,並得到一個二進位字串。例如我們使用8個位元來表示正負整數,那麼9=(00001001)2,則其「1 's補數」即為11110110:
2’s 補數法(2’s Complement) 最左邊的位元還是符號表示位元,正數的表示法則與帶號大小值法相同,但負數的表示法是用1補數法求得,並在最後一位元上加1。基本上,「2´s補數法」的做法就是把「1´s補數法」加1即可。例如 9=(00001001)2的「1´s補數」為(11110110)2,其「2’s補數」則為(11110111)2:
定點數表示法 • 在電腦中的小數表示法可分為定點數與浮點數表示法兩種。兩者的差別在於小數點的位置,對於正負整數而言,定點數表示法小數點位置固定在右邊,而且不會因為電腦種類的不同而有差別,例如 16.8、0.2387等
浮點數表示法 • 浮點數就是包含小數點的指數型數值表示法,或稱為「科學符號表示法」。而浮點數表示法的小數點位置則取決於精確度及數值而定,另外不同電腦型態的浮點數表示法也有所不同。想要表示電腦內部的浮點數必須先以正規化(Normalized Form)為其優先步驟。 假設一數N能化成以下格式: • N=0.F*be,其中 • F:小數部份 • e:指數部份 • b:基底
至於在電腦內部的浮點數表示式,可用下圖來表示:至於在電腦內部的浮點數表示式,可用下圖來表示: • 例如(13.25)=(0.110101)×24 ,存入電腦的儲存格式如下:
2-3 數字系統介紹 • 人類慣用的數字觀念,就是以逢十進位的10進位來計量。也就是使用0、1、2、…9十個數字做為計量的符號,不過在電腦系統中,卻是以0、1所代表的二進位系統為主,但是如果這個2進位數很大時,閱讀及書寫上都相當困難。因此為了更方便起見,又提出了八進位及十六進位系統,請看以下的圖表說明:
二進位系統 • 所謂「二進位系統」,就是在這個系統下只有0與1兩種符號,以2為基數,並且逢2 進位,在此系統中,任何數字都必須以0或1來表示。例如十進位系統的3,在二進位系統則表示為112。 310=1*21+1*20=112
十進位系統 • 「十進位系統」是人類最常使用的數字系統,以10為基數且逢十進位,其基本符號有0、1、2、3、4…8、9共10種,例如9876、12345、534都是10進位系統的表示法。
八進位系統 • 八進位系統是以8為基數,基本符號為0,1,2,3,4,5,6,7,並且逢8進位的數字系統。例如十進位系統的87,在八進位系統中可以表示為1278。 1278=1*82+2*81+7=64+16+7=8710
十六進位系統 • 十六進位系統是一套以16為基數,而且逢十六進位的數字系統,其基本組成符號為0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共十六種。其中A代表十進位的10,B代表11,C代表12,D代表13,E代表14,F代表15: A1816=10*162+1*161+8*160=258410
2-4 數字系統轉換方式 • 由於電腦內部是以二進位系統方式來處理資料,而人類則是以十進位系統來處理日常運算,當然有些資料也會利用八進位或十進位系統表示。因此當各位認識了以上數字系統後,也要了解它們彼此間的轉換方式
非十進位轉成十進位 • 「非十進位轉成十進位」的基本原則是將整數與小數分開處理。例如二進位轉換成十進位,可將整數部份以2進位數值乘上相對的2正次方值,例如二進位整數右邊第一位的值乘以20,往左算起第二位的值乘以21,依此類推,最後再加總起來。 • 至於小數的部份,則以2進位數值乘上相對的2 負次方值,例如小數點右邊第一位的值乘以2-1,往右算起第二位的值乘以2-2,依此類推,最後再加總起來。至於八進位、十六進位轉換成十進位的方法都相當類似。
0.112=1*2-1+1*2-2=0.5+0.25=0.7510 11.1012=1*21+1*20+1*2-1+0*2-2+1*2-3=3.87510 128=1*81+2*80=10 163.78=1*82+6*81+3*80+7*8-1=115.87510 A1D16=A*162+1*161+D*160 =10*162+1*16+13 =258910 AC.216 =A*161 + C * 16 0 + 2 * 16 - 1 =10*161+12+0.125 =172.12510
十進位轉換成非十進位 • 轉換的方式可以分為整數與小數兩部份來處理,我們利用以下範例來為各位說明: • (1). 十進位轉換成二進位 6310=1111112
(12.75)10=(12) 10+(0.75) 10 其中(12)10=11002 (0.75)10=(0.11)2 所以(12.75)10=(12) 10+(0.75) 10 =11002+0.11 =1100.112
(2). 十進位轉換成八進位 6310=(77)8 (0.75)10=(0.6)8
(3). 十進位轉換成十六進位 (63)10=(3F)16 (0.62890625)10=(0.A1)16
120.510=(120) 10+(0.5) 10 其中 (120) 10=(78)16 (0.5) 10=(0.8)16
非十進位轉換成非十進位 • 如果打算從非十進位轉換另一種非十進位的方式,也相當容易,方法有兩種。第一種方法是只要先行將其中一個非十進位轉換為十進位制,再依照前述兩節方式轉換即可,例如我們將 (156)8轉換成2進位與16進位:
(1). 二進位→八進位 首先請將二進位的數字,以小數點為基準,小數點左側的整數部份由右向左,每三位打一逗點,不足三位則請在其左側補足0。小數右側的小數部份由左向右,每三位打一逗點,不足三位則請在其右側補足0,接著將每三位二進數字換成八進位數字,即成八進制。例如將10101110111011.01010112換算成八進位: 10,101,110,111,011.010,101,1 依上述原則補0,3個3個一組 分別轉換或8進位 25673.254
(2). 二進位→十六進位 將二進位的數字,以小數點為基準,小數點左側的整數部分由右向左,每四位打上一個逗點,不足四位則請在其左側補足0。小數點右側的小數部分由左向右,每四位打一個逗點,不足四位則請在其右側補足0。接著把每四位二進數字,換成十六進位數字,即成十六進制。例如將10101110111011.01010112換算成十六進位: 10,1011,1011,1011,0101,011 依上述原則補0,每4個一組 2BBB.5616