1 / 57

第 2 章 數字系統與電腦資料表示法

第 2 章 數字系統與電腦資料表示法. 2-1 數字系統簡介 2-2 數字系統轉換方式 2-3 數字系統的運算 2-4 整數的正負數表示法 2-5 小數表示法 2-6 電腦與編碼系統 2-7 資料偵錯碼. 十進位數字系統. 2-1 數字系統簡介. 在十進位數字系統中,共使用 0~9 十個符號的組合來表示所有可能的數字,並且以 10 為基底。 每一個符號的位置代表數字 10 的乘冪,由右至左數字位置的乘冪分別為 10 0 、 10 1 、 10 2 … ,其餘以此類推,所以可知十進位數字 5210 10 可以看成:. 二進位數字系統.

chanda-kim
Download Presentation

第 2 章 數字系統與電腦資料表示法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第2章 數字系統與電腦資料表示法 2-1 數字系統簡介 2-2 數字系統轉換方式 2-3 數字系統的運算 2-4 整數的正負數表示法 2-5 小數表示法 2-6 電腦與編碼系統 2-7 資料偵錯碼

  2. 十進位數字系統 2-1 數字系統簡介 • 在十進位數字系統中,共使用0~9十個符號的組合來表示所有可能的數字,並且以10為基底。 • 每一個符號的位置代表數字10的乘冪,由右至左數字位置的乘冪分別為100、101、102…,其餘以此類推,所以可知十進位數字521010可以看成:

  3. 二進位數字系統 2-1 數字系統簡介 • 在電腦中只有0與1兩個符號,用0與1的符號組合來表示任何一個數字、字元、符號及資料,以2為基底,每一個符號的位置代表數字2的乘冪,由右至左數字位置的乘冪分別為20、21、22…,因此可得知二進位數字10101可以看成:

  4. 四進位數字系統 2-1 數字系統簡介 • 四進位數字系統以4為基底,共使用0~3四個符號的組合來表示所有可能的數字,每一個符號的位置代表數字4的乘冪,由右至左數字位置的乘冪分別為40、41、42…,例如4進位數字3214可以看成:

  5. 八進位數字系統 2-1 數字系統簡介 • 八進位數字系統以8為基底,共使用0~7八個符號的組合來表示所有可能的數字,每一個符號的位置代表數字8的乘冪,由右至左數字位置的乘冪分別為80、81、82…,例如8進位數字2108可以看成:

  6. 十六進位數字系統(1) 2-1 數字系統簡介 • 十六進位數字系統以16為基底,共使用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F等十六個符號的組合來表示所有可能的數字,其中A代表10、B代表11…、F代表15。 • 每一個符號的位置代表數字16的乘冪,由右至左數字位置的乘冪分別為160、161、162…,例如16進位數字3F816可以看成:

  7. 十六進位數字系統(2) 2-1 數字系統簡介

  8. 非十進位轉成十進位(1) 2-2 數字系統轉換方式 • 「非十進位轉成十進位」的轉換方式最為簡單,首先是將整數與小數部份分開處理。 • 例如八進位轉換成十進位,可將整數部份以8進位數值乘上相對的8正次方值,例如8進位整數右邊第一位的值乘以80,往左算起第二位的值乘以81,依此類推,最後再將其加總。 • 至於小數的部份,則以8進位數值乘上相對的8負次方值,依此類推,最後再加總起來。

  9. 非十進位轉成十進位(2) 2-2 數字系統轉換方式 • 二進位、十六進位轉換成十進位的方法都相當類似。如下例所示: 1.112=1*20+1*2-1+1*2-2=0.5+0.25=1.7510 11.1012=1*21+1*20+1*2-1+0*2-2+1*2-3=3.62510 328=3*81+2*80=2610 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 5AC.216 =5*162+A*161 + C * 16 0 + 2 * 16 - 1 =10*16+12+0.125 =1452.12510

  10. 十進位轉換成非十進位(1) 2-2 數字系統轉換方式 • (1). 十進位轉換成二進位

  11. 2-2 數字系統轉換方式

  12. 十進位轉換成非十進位(2) 2-2 數字系統轉換方式 • (2) 十進位轉換成八進位

  13. 十進位轉換成非十進位(3) 2-2 數字系統轉換方式 • (3)十進位轉換成十六進位

  14. 2-2 數字系統轉換方式

  15. 非十進位轉換成非十進位(1) 2-2 數字系統轉換方式 • 二進位→八進位 • 首先請將二進位的數字,以小數點為基準,小數點左側的整數部份由右向左,每三位打一逗點,不足三位則請在其左側補足0。 • 小數右側的小數部份由左向右,每三位打一逗點,不足三位則請在其右側補足0,接著將每三位二進數字換成八進位數字,即成八進制。

  16. 2-2 數字系統轉換方式 • 例如將1011111.011012換算成八進位:

  17. 非十進位轉換成非十進位(2) 2-2 數字系統轉換方式 • 二進位→十六進位 • 將二進位的數字,以小數點為基準,小數點左側的整數部分由右向左,每四位打上一個逗點,不足四位則請在其左側補足0。 • 小數點右側的小數部分由左向右,每四位打一個逗點,不足四位則請在其右側補足0。 • 接著把每四位二進數字,換成十六進位數字,即成十六進制。

  18. 2-2 數字系統轉換方式 • 例如將1011111.01101換算成十六進位:

  19. 加法運算(1) 2-3 數字系統的運算 • 在任何的數字系統中要進行相加的動作,首要工作就是將相加的兩數轉換成相同的基底,至於其加法過程則和數學運算中的十進位加法運算類似,其作法如下: • 首先將要相加的兩數最右邊的位數靠右對齊,接著從最右邊的位數開始進行相加的動作,如果相加之後的結果小於基底值,則此相加的和即為該位數的相加結果,但是如果相加之後的結果大於或等於基底值,則必須將此結果值先除以基底值,其餘數為該位數的相加結果,但商數則為進位,和數學的加法一樣,必須和下一個位數相加,最右邊的數位相加完畢後,再進行右邊算起第二位的加法運算,其作法和上述一致。

  20. 加法運算(2) 2-3 數字系統的運算 • 範例: • (C2D)16+(45A)16=( )16 • 因此,本例最後的相加結果為 • (C2D)16+(45A)16=(1087)16 解答: 1.先進行最右邊位數的相加,D16+A16=2310 接著將23除以基底16,得到餘數為7,商數為1,請將商數進位到下一個位數,而餘數7則為此位數的相加結果。 2.將右邊算起第二位數相加,請記得要一併加入剛才的進位,其結果為116+216+516=816 由於8小於基底16,故此數為此位數的相加結果 3.進行第三位數的相加,C16+416=1610 接著將16除以基底16,得到餘數為0,商數為1,請將商數進位到下一個位數,而餘數0則為此位數的相加結果。

  21. 減法運算(1) 2-3 數字系統的運算 • 在任何的數字系統中要進行減法的動作,首要工作就是將相減的兩數轉換成相同的基底,至於其加法過程則和數學運算中的十進位減法運算類似,其作法如下: • 首先將要相減的兩數最右邊的位數靠右對齊,接著從最右邊的位數開始進行減法的動作,如果被減數大於或等於基底值,則直接相減,所得的結果為該位數的運算結果,但如果被減數小於減數,則必須將左邊的位數借位。

  22. 減法運算(2) 2-3 數字系統的運算 • 範例: • (C2D)16-(45A)16=( )16 • 1.先進行最右邊位數的相減,D16-A16=310 • 為此位數的相減的結果。 • 2.將右邊算起第二位數相減,由於216<516,必須向左邊借位,因為基底為16,一次借位的值為16,計算結果為16+2-5=1310=D16 • 3.C被借了一位後,只剩B,再將B16-416=1110-410=710=716 • 因此,本例最後的相減結果為 • (C2D)16-(45A)16=(7D3)16

  23. 乘法運算(1) 2-3 數字系統的運算 • 在任何的數字系統中要進行乘法的動作,首要工作就是將乘法的兩數轉換成相同的基底,如果為了方便計算,建議可以先將被乘數與乘數先行轉換成十進位,再依十進位的基底下進行相乘的動作,完後相乘的結果值,再依本節所討論的十進位轉換成非十進位的作法,轉換成原來的基底,不過,如果所進行乘法的基底為2,則建議無需轉換成十進位,直接進行乘法計算即可,底下我們將以一個八進位的兩位數進行乘法的範例來加以說明,其作法如下:

  24. 乘法運算(2) 2-3 數字系統的運算 • 範例: • 請計算528*738=()8 解答: 其計算過程如下: 528*738=4210*5910=247810=46568

  25. 除法運算(1) 2-3 數字系統的運算 • 在任何的數字系統中要進行除法的動作,首要工作就是將要進行除法的兩數轉換成相同的基底,如果為了方便計算,建議可以先將被除數與除數先行轉換成十進位,再依十進位的基底下進行相除的動作,完後相除的結果值,再依本節所討論的十進位轉換成非十進位的作法,分別將相除之後的商數與餘數分別轉換成原來的基底,不過,如果所進行除法的基底為2,則建議無需轉換成十進位,直接進行除法計算即可,底下我們將以一個八進位的兩位數進行乘法的範例來加以說明,其作法如下:

  26. 除法運算(2) 2-3 數字系統的運算 • 範例: • 請計算3258/78=()8 解答: 其計算過程如下: 3258/78 =(3*82+2*8+5)10 / 710 =(192+16+5)10 /710 =21310/710=3010餘310 分別將商數及餘數轉換成8進位,得到的結果是 商數為3010=368 餘數為310=38

  27. 整數的正負數表示法(1) 2-4 整數的正負數表示法 • 不帶號整數 • 不帶號整數通常以一個位元組(byte),也就是8個位元(bit)表示,而且沒有符號位元,不帶號整數在電腦記憶體中的儲存格式如下: • 例如:使用8位元的不帶號整數的資料表示法,數字1510在記憶體的表示方式如下: • 1510=11112

  28. 2-4 整數的正負數表示法 • 同理,換一個角度,如果記憶體內有一個不帶號整數的表示方式如下,請試著將其轉換10進位的數字: • 根據上圖可以得到此數為: • 1*27+1*26+1*25+1*24+1+21+10=128+64+32+16+2+1=243 • 以8位元為例,不帶號整數的數值範圍為0~28-1,即0~255 • 同理,如果資料是以n位元表示,則不帶號整數的數值範圍為0~2n-1

  29. 整數的正負數表示法(2) 2-4 整數的正負數表示法 • 帶號整數 • 所謂帶號整數是指有正負號的數值,通常帶號整數以2位元組(即16Bits)表示,並使用1個位元來作為符號位元,符號位元為0代表數值為正,符號位元為1代表數值為負,其餘位元則用來表示數值,帶號整數在電腦記憶體中的儲存格式如下:

  30. 2-4 整數的正負數表示法 • 例如:使用16位元的帶號整數的資料表示法,數字1510在記憶體的表示方式如下: • 1510=11112 • 至於負整數的表示方式除了帶號大小值法(Sign Magnitude)外,還有1’s補數(1’s Complement)及2’s補數(2’s Complement)兩種,總共三種表示方式。

  31. 補數的計算(1) 2-4 整數的正負數表示法 • N-1的補數 • 某數值其(N-1)的補數的計算法式,是將(N-1)分別減去該數值所有的位數,所計算而得的結果即為該數值(N-1)的補數。 • 範例: • 當N=8時,試求36548之7的補數為何? 解答: 請以N-1=8-1=7,分別減去該數值所有的位數,得到的結果值為41238,此值即為36548之7的補數。

  32. 補數的計算(2) 2-4 整數的正負數表示法 • N的補數 • 某數值其N的補數的計算法式,是將該數值(N-1)的補數再加1,所計算而得的結果即為該數值N的補數。 • 範例 • 當N=8時,試求36548之8的補數為何? 解答: 首先求取36548之7的補數,請以N-1=8-1=7,分別減去該數值所有的位數,得到的結果值為41238,此值即為36548之7的補數。 得到36548之7的補數後,再將該7的補數的最小位元再加1,就是該數值之8的補數,此例就是41238+18=41248

  33. 補數的計算(3) 2-4 整數的正負數表示法 • 帶號大小值法 • 帶號大小值法(Sign Magnitude)就是以最左邊的位元來表示正負號,例如以N位元表示一個整數,最左邊一位元代表正負號,其餘N-1位元表示該數值,則此數的變化範圍在-2N-1-1~ +2N-1-1。例如±3的表示法:

  34. 補數的計算(4) 2-4 整數的正負數表示法 • 1’s補數法 • 「1’s補數系統」是指如果兩數之和為1,則此兩數互為1的補數,亦即0和1互為1的補數。而1 's 補數法(1's Complement)仍是以最左邊的位元來表示正負號,當表示負數時,由0變成1,而1則變成0即可。例如我們使用8個位元來表示正負整數,那麼127=(01111111)2,則其「1 's補數」即為(10000000)2=-127。不過這種表示法對於0的表示法還是有兩種,即+0=(00000000)2,-0=(11111111)2,,因此如帶號大小值法一樣,並無法在電腦中實際使用。

  35. 補數的計算(5) 2-4 整數的正負數表示法 • 2’s補數法 • 這就是目前電腦所採用的表示法,而且0的正負數表示法只有一種。「2’s補數系統」的作法則是必須事先求出該數的1’s補數,再加1即為該數的負數。例如127=(01111111)2的「1´s補數」為(10000000)2=-127,其「2’s補數」則為(10000001)2:

  36. 2-4 整數的正負數表示法 • 範例 • 求取1100110112之1的補數及2的補數分別為何? 解答: 要求1100110112之1的補數只要將1變成0,0變成1即可,所以其1的補數為0011001002,而1100110112之2的補數則為其1的補數再加1即可,所以其1100110112之2的補數為0011001002再加1,即0011001012。

  37. 利用補數進行減法運算(1) 2-4 整數的正負數表示法 • 1的補數 • 1.如果有進位,表示結果為正,這個時候就必須將計算的結果(不含進位的位元)再加上1,即最小的位元再加上1。 • 2.但如果沒有進位,表示計算的結果為負,這個時候就必須先求取該計算的結果之1的補數,並將該值的前面加上一個負號,就是兩數相減的結果。

  38. 2-4 整數的正負數表示法 • 範例 • 請分別將十進制中的3210及1310分別轉換成二進位制,再以1的補數的方式,來進行3210-1310的執行結果。 解答: 首先請將3210及1310分別轉換成二進位制,得到的值分別為1000002及11012,這裡由於被減數與減數位數不一致,所以在計算其1的補數前必須先行調整成相同的位數,即1310請用0011012表示。 接著求取減數0011012之1的補數,即1100102 將1000002+1100102=10100102

  39. 2-4 整數的正負數表示法 • 範例 • 請分別將十進制中的1310及3210分別轉換成二進位制,再以1的補數的方式,來進行1310-3210的執行結果。 解答: 首先請將1310及3210分別轉換成二進位制,得到的值分別為11012及1000002,這裡由於被減數與減數位數不一致,所以在計算其1的補數前必須先行調整成相同的位數,所以請將此例中的被減數1310用0011012表示。 接著求取減數1000002之1的補數,即0111112 將0011012+0111112=1011002

  40. 利用補數進行減法運算(2) 2-4 整數的正負數表示法 • 2的補數 • 首先求取減數之2的補數,接著將被減數加上減數之2的補數,所得到的結果值再依是否有進位,執行以下的修正: • 1.如果有進位,表示結果為正,而這個結果值(不含進位的位元)就是兩數相減的結果。 • 2.但如果沒有進位,表示計算的結果為負,這個時候就必須先求取該計算的結果之2的補數,並將該值的前面加上一個負號,就是兩數相減的結果。

  41. 2-4 整數的正負數表示法 • 範例 • 請分別將十進制中的3210及1310分別轉換成二進位制,再以2的補數的方式,來進行3210-1310的執行結果。 解答: 首先請將3210及1310分別轉換成二進位制,得到的值分別為1000002及11012,這裡由於被減數與減數位數不一致,所以在計算其2的補數前必須先行調整成相同的位數,即1310請用0011012表示。 接著求取減數0011012之2的補數,即其1的補數再加1,即1100102+1=1100112 將1000002+1100112=10100112

  42. 2-4 整數的正負數表示法 • 範例 • 請分別將十進制中的1310及3210分別轉換成二進位制,再以2的補數的方式,來進行1310-3210的執行結果。 解答: 首先請將1310及3210分別轉換成二進位制,得到的值分別為11012及1000002,這裡由於被減數與減數位數不一致,所以在計算其2的補數前必須先行調整成相同的位數,所以請將此例中的被減數1310用0011012表示。 接著求取減數1000002之2的補數,即其1的補數再加1,即0111112+1=1000002 將0011012+1000002=1011012

  43. 浮點數表示法(1) 2-5 小數表示法 • 浮點數表示法就是數學常見的科學符號表示法,浮點數表示法的小數點位置則取決於精確度及數值而定,另外不同電腦型態的浮點數表示法也有所不同。想要表示電腦內部的浮點數必須先以正規化(Normalized Form)為其優先步驟。假設一數N能化成以下格式: N=S*L.F*be ,其中 S:符號位元,0代表正數,1代表負數 F:假數或稱小數(mantissa或fraction)部份 L: 起始位元(leading bit),十進位為0,二進位為1 e:指數(exponent)部份 b:基底(base)部份

  44. 浮點數表示法(2) 2-5 小數表示法 • 根據國際電機電子工程師協會(Institute of Electrical and Electronics Engineers IEEE)754標準制定浮點數在電腦內部的浮點數表示式(以單精度浮點表示法32位元為例),可用下圖來表示: • 其在計算機內部浮點數表示法如下:

  45. 倍精密度浮點表示法 2-5 小數表示法 • 至於倍精密度浮點表示法則需要兩個字組,即64位元來表示浮點數,可用下圖來表示: • 其在計算機內部浮點數表示法如下:

  46. 位元與位元組 2-6 電腦與編碼系統 • 當談論到電腦化的資料時,無論是開或是關,由每個開關狀態所表示的值稱為一個位元(bit),一個位元就可以表示兩種資料:0與1。而兩個位元則可以表達四種資料,即00、01、10、11,越多的位元則表示可以處理更多的資料,不過因為電腦所處理的資料相當龐大,所以又將八個位元組合成一個「位元組」(byte)。 • 當電腦操作者利用鍵盤輸入資料時,無論是數字或字元資料,電腦都會將其轉換成二進位形式,並以二進位碼來儲存,也就是將想儲存在電腦系統的符號一一編號,以位元組為單位儲存在電腦中,這就是編碼(Encoding) 系統的緣起。

  47. 2-6 電腦與編碼系統 • 下表為單位和位元組之間的轉換關係對應表: • 由上表可以得知各單位間的關係式如下: 1 TB = 210 GB 1 GB = 210 MB 1 MB = 210 KB 1 KB = 210 B

  48. 編碼系統簡介(1) 2-6 電腦與編碼系統 • ASCII碼 • 因為當時一個位元組的大小只需7 個位元即可包含所有所需的資訊,總共可容納128個符號,到目前為止是所有類型的電腦中最為普遍。例如大寫字母「A」是由數值65表示,「B」是由數值66來表示,小寫字母「b」是由數值98來表示,「@」符號是由數值64來表示,「$」符號是由數值36來表示,「?」符號是由數值63來表示等。

  49. 編碼系統簡介(2) 2-6 電腦與編碼系統 • EBCDIC碼 • 後來有些電腦系統為了能夠處理更多的字元,如由IBM所發展的「擴展式BCD碼」(Extended Binary Coded Decimal Interchange Code, EBCDIC),原理乃採用8個位元來表示不同之字元,因此EBCDIC碼最多可表示256個不同字元,比ASCII碼多表示128個字元。例如EBCDIC編碼的'A'編碼11000001,'a'編碼為10000001。

  50. 編碼系統簡介(3) 2-6 電腦與編碼系統 • ISO8859碼 • 不過對於歐洲語系而言,7 個位元的編碼空間不符合所需,因為它們的語言中多了許多特殊字母與標示,因此將原來只有7個位元的編碼系統改為8個位元,這就是ISO8859編碼標準,為了與原先的編碼系統相容,0~127的編碼與ASCII相同,而之後則依不同的國家語系而有所不同。

More Related