390 likes | 541 Vues
資料儲存與運算. 李明山 編撰. 目錄. 1 資料儲存 1-1 數字系統 1-2 資料儲存單位 1-3 數值資料表示法 1-4 文字資料表示法 2 資料運算 2-1 數值運算 2-2 數位邏輯. 序言. 數位化為現代生活與工作帶來許多的衝擊,從電腦的儲存與運算,到網路的傳輸、資訊的流通,都受到數位技術的影響而在近二、三十年間突飛猛進,因此,在學習使用電腦的同時,我們必須對資料的儲存與運算具備基本的認識與概念。. 1 資料儲存. 1-1 數字系統 1-2 資料儲存單位 1-3 數值資料表示法 1-4 文字資料表示法.
E N D
資料儲存與運算 李明山 編撰
目錄 1 資料儲存 1-1 數字系統 1-2 資料儲存單位 1-3 數值資料表示法 1-4 文字資料表示法 2 資料運算 2-1 數值運算 2-2 數位邏輯
序言 數位化為現代生活與工作帶來許多的衝擊,從電腦的儲存與運算,到網路的傳輸、資訊的流通,都受到數位技術的影響而在近二、三十年間突飛猛進,因此,在學習使用電腦的同時,我們必須對資料的儲存與運算具備基本的認識與概念。
1資料儲存 • 1-1 數字系統 • 1-2 資料儲存單位 • 1-3 數值資料表示法 • 1-4 文字資料表示法
1-1 數字系統 • 常見的數字系統(Number system)共有四種: • 二進位制(Binary system) • 八進位制(Octal system) • 十進位制(Decimal system) • 十六進位制(Hexadecimal system) • 所謂二進位制,就是計算數值時,大到等於2即進位,亦即「逢2進位」 ;八進位制就是「逢8進位」 ;十進位制就是「逢10進位」 ;十六進位制就是「逢16進位」 。
數字系統表示式 • 在無特別標註的情況下,一般的數字是十進位制。 • 各種數字系統採用基底或下標的方式表示,如: • (0100 1011)2 為二進位制 • (573)8 為八進位制 • (B3)16 為十六進位制
二進位制 • 構成的基本符號為0與1 • 二進位制換算為十進位制: • 由右而左,每一位數值乘以2n(n=0,1,2,…,由右而左依序)的總和。 • 例:(0100 1011)2 = 0*27+ 1*26+ 0*25+ 0*24+ 1*23+ 0*22+ 1*21+ 1*20 = 0+64+0+0+8+0+2+1 = 75
二進位制 • 含小數位數的二進位制換算為十進位制: • 整數部分由右而左,每一位數值乘以2n(n=0,1,2,…) ,加上小數部分由左而右,每一位數值乘以2-n(n=1,2,…)的總和。 • 例: (0100.1011)2 = 0*23+ 1*22+ 0*21+ 0*20 +1*2-1+ 0*2-2+1*2-3 +1*2-4 = 0+4+0+0+0.5+0+0.125+0.0625 = 4.6875
八進位制 • 構成的基本符號為0, 1, 2, 3, 4, 5, 6, 7 • 八進位制換算為十進位制: • 由右而左,每一位數值乘以8n(n=0,1,2,…,由右而左依序)的總和。 • 例: (573 )8 = 5*82+ 7*81+ 3*80 = 5*64+7*8+3*1 = 320+56+3 = 379
八進位制 二進位制 (573 )8 (101 111 011)2
十進位制 • 構成的基本符號為0, 1, 2, 3, 4, 5, 6, 7, 8, 9
十進位制換算為二進位制 • (75)10(0100 1011)2 • 75÷2=37餘1 • 37÷2=18餘1 • 18÷2=9餘0 • 9÷2=4餘1 • 4÷2=2餘0 • 2÷2=1餘0 • 1÷2=0餘1 0100 1011
十六進位制 • 構成的基本符號為0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F • A, B, C, D, E, F相當於十進制之10, 11, 12, 13, 14, 15(由於人們習用的文數字符號並沒有象徵10~15的字符,因此,使用A~F代表)
十六進位制 • 十六進位制換算為十進位制: • 由右而左,每一位數值乘以16n(n=0,1,2,…,由右而左依序)的總和。 • 例: (B3)16 = 11*161+ 3*160 = 11*16+ 3*1 = 176+3 = 179
十進位制換算為十六進位制 • (179)10(B3)16 • 179÷16=11餘3 • 11÷16=0餘11 B 3
十六進位制 二進位制 (B 3 )16 (1011 0011)2
1-2 資料儲存單位 • 今日我們所熟知的電腦,其儲存資料的方法是建立在位元(BIT:Binary digIT)觀念的基礎上。 • 位元是電腦記憶體上的最小儲存單位。 • 能夠變換兩種狀態的裝置或物質,即可用以儲存位元資料。由早期的電容器,到今天的IC 。 • 一個位元可以表達兩種狀態: • “1”或“0” • “是”與“否”(true/false) • “開”或“關”(on/off) • “正”與“反”(positive/negative) • “陰”或“陽” • …
1-2 資料儲存單位 • 由於位元的單位太小,一個位元只能代表兩種狀態。因此,利用一連串的位元來代表一個數值或符號較為實用。 • 早期的電腦有組合6個位元或7個位元成為一個單位,稱cell或word;終於,以 8 個位元稱為一個位元組的基本資料單位已成為國際性的標準,稱為「位元組」(BYTE:BinarYTErm)。 • 「位元組」成為資料存放在主記憶體中的最小基本計算單位。
1-2 資料儲存單位 • 一般所謂電子計算機的大小是以主儲存體容量的大小而定, 為了計數上的便利,儲存容量常以K(Kilo)表示,1K表示1024(是210趨近於1,000),單位則是位元組。更大量的資料則使用M(Mega是220趨近於1,000,000)或是使用G(Giga是230趨近於1,000,000,000)。 1 Kilo =210 =1,024 ≒1,000 =103 1 Mega =220=1,048,576 ≒1,000,000 =106 1 Giga =230=1,073,741,824 ≒1,000,000,000 =109 • 240又該怎麼稱呼呢?
1-3 數值資料表示法 • 基本觀念 • 所謂資料表示法,乃是將有限資料之各種可能的組合與排列方式設定其象徵意義的規則。 • 電腦儲存資料的方法是建立在位元觀念的基礎上,因此,數值的大小是以電腦內部儲存資料之位元組合對應其設定之表示法所象徵之數值。 • 一個位元可以表示兩種狀態,用作數值表示僅能有0與1。一個位元組有八個位元,可以表示256種狀態,用作數值表示可以是0~255, 1~256, -128~+127,端看我們如何設定它的象徵意義,也必須訂定一套對應之換算法則作為位元組狀態與數值的轉換關係。
1-3 數值資料表示法 • 運用電腦作數值資料的運算或處理,基本上有整數與實數兩種數值的資料型態是必須的。 • 一個位元組有八個位元,可以表示256種狀態,用作數值表示僅能有0~255,若再平分正負值,便是-128~+127,一般的整數運算上,這是無法滿足的,因此,兩個位元組是整數值儲存的最小單位。 • 兩個位元組可以表示65536(216)種狀態,用作正值表示可以是0~65535,若再平分正負值,便是-32768~+32767 。
1-3 數值資料表示法--整數 • 兩個位元組可以表示65536(216)種狀態,用作正值表示可以是0~65535(二進位制換算十進制直接可以引用) 。 • 若再平分正負值,便是-32768~+32767。以第一個位元(0號)代表正、負符號,其餘十五個位元代表絕對值。如果將1~15號位元直接引用二進位制換算十進制,則數值表示範圍如下頁所示… 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
數值資料表示法--整數平分正負值 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 32767 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -32767
1-3 數值資料表示法--整數 • 上述對應換算法則有兩項缺失: • 兩個組合狀態對應同一數值0。 • 算術運算很難處理。 • 補數表示法可以彌補缺失。 • 1的補數(1’s complement) • 2的補數(2’s complement)
補數 • 補數是一種表示負數的方式 • 對每一 k 進位制的數字系統而言,其補數有兩種: • “k”的補數(又稱基數補數radix complement) • “k-1”的補數(又稱基數減一補數radix minus one complement)
“k”的補數 • 定義: k 進位制的數值v,若最大位數為n,則其“k”的補數= kn – v(0010)2之2的補數= 24 – (0010)2 = (10000)2 – (0010)2 = (1110)2 • 亦即,每一位數以其最大值減去的結果再加1。(0010)2之2的補數= (1111)2 – (0010)2+ (0001)2 = (1101)2 + (0001)2 = (1110)2
“k”的補數 • (315)8之8的補數= 83 – (315)8 = (1000)8 – (315)8 = (463)8 • (A35D)16之16的補數= (FFFF) 16 – (A35D)16+(0001) 16 = (5CA2) 16 +(0001) 16 = (5CA3) 16
“k-1”的補數 • 定義: k 進位制的數值v,若最大位數為n,則其“k-1”的補數= (kn – 1) – v(0010)2之1的補數= (24 –1) – (0010)2 = (1111)2 – (0010)2 = (1101)2 • 意即,每一位數以其最大值減去的結果。
“k-1”的補數 = (kn – 1) – v • (315)8之7的補數= (83 – 1) – (315)8 = (777)8 – (315)8 = (462)8 • (A35D)16之15的補數= (164 – 1) – (A35D)16= (FFFF) 16 – (A35D)16= (5CA2) 16
1-3 數值資料表示法--實數 • 實數是帶有小數點的數值,實數的表示法又稱浮點表示法(Floating point notation)。 • 一般的實數值儲存單位為四個位元組,區分為三個部分:正負符號(Sign bit)、指數部分(Exponent)、小數部份(Mantissa)。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 指數部分(Exponent) 小數部份(Mantissa) 正負符號(Sign bit)
1-3 數值資料表示法--實數 • 正負符號:一個位元,0表正數,1表負數。 • 指數部分:8個位元,因平分正負指數值,因此以128為分界,即換算為十進位值後需減去128,方為實際指數值。指數值範圍為-128 ~ +127。 • 小數部份:23個位元,是經過二進位正規化(normalization)後的小數。 • 所謂二進位正規化係將實數轉換成二進位制後,將小數點移至自左端算起第一個“1”的右側,指數大小為小數點移動的位數,指數的正負值取決於向左移(正值)或向右移(負值) ,移動後小數點以右部分即為「小數部份」之內容(由左向右填入,個位數之“1”省去)。
1-3 數值資料表示法--實數 • 例: (18.375)10 • 正值,Sign bit = 0 • (18.375)10= (00010010.011)200010010.011 = 1.0010011× 24小數部份 = • (4)10 + (128)10 = (132) 10 = (1000 0100) 2指數部份 = 10000100 00100110000000000000000 10000100 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 指數部分(Exponent) 小數部份(Mantissa) 正負符號(Sign bit)
1-4 文字資料表示法 文字資料在電子計算機中是設定有順序的代碼對應各種字符作為儲存。 譬如一個位元組是由八個位元所組成,即可表示256個代碼,一般的文字資料是由26個英文字母分大、小寫,加上數字符號、運算符號及一些特殊符號所組成, 為了資料交流的便利,美國國家標準局(American National Standards Institute)乃制定了一套標準化的資訊交換碼-『美國國家標準資訊交換碼(American Standard Code for Information Interchange,簡稱ASCII碼)』。ASCII碼是由七個位元所組成,共計128個字碼,涵蓋了一般的常用字符。在IBM PC個人電腦的安排中,因為一個位元組可表示256個代碼,所以採用了『擴充型ASCII碼』─除包含標準ASCII碼128個字碼外,還加編了128個圖形碼。
2 資料運算 • 2-1 數值運算 • 2-2 數位邏輯
0010 (+2)+ 0101 (+5) 0111 (+7) 0110 (+6)+ 0101 (+5) 1011 (**) 0010 (+2)+ 1101 (–3) 1111 (–1) 0110 (+6)+ 1101 (–3) 10011 (+3) 1010 (–6)+ 0100 (+4) 1110 (–2) 1100 (–4)+ 0110 (+6) 10010 (+2) 1110 (–2)+ 1101 (–3) 11011 (–5) 1010 (–6)+ 1101 (–3) 10111 (**) 2-1 數值運算 • 二進位數值的加法運算(使用2的補數): • 正負數一視同仁,由右而左逐位相加,超位(carry)則刪除。 • 兩正數相加,其和若為負值,則屬溢位(overflow)。 • 兩負數相加,其和若為“10…”,則屬溢位。 超位刪除 溢位 超位刪除 超位刪除 溢位
2-1 數值運算 • 二進位數值的減法運算(使用2的補數): • 將被減數改用負值取代後以加法運算。 • 例: • (0010)2– (0011)2 = (0010)2+ (1101)2 = (1111)2[ 2 – 3 = 2 + (-3) = -1 ] • (1010)2– (1100)2 = (1010)2+ (0100)2 = (1110)2[ (-6) – (-4) = (-6) + 4 = -2 ]
2-2 數位邏輯 • 真值表 說明: T 代表 True(真),F 代表 False(假)not p - 非 p ( p 的相反值)p and q – p且 q (兩者都是真,結果才是真)p or q – p 或 q (兩者只要有一者是真,結果就是真)p xor q – p 互斥或(exclusive or) q (兩者只能有一者是真,結果才是真)p eqv q – p 等值(equivalence) q(兩者同為真或同為假,結果才是真)p imp q – p 隱喻(imply) q (若p則q,心訣:若是把不可能的事當成可能,則所有事都是可能的,因此,若 p 是假,無論 q 是真是假,”若p則q”一定是真!)
0010 ( 2)and 0101 ( 5) 0000 ( 0) 0110 ( 6)and 0101 ( 5) 0100 ( 4) 0010 ( 2)or 1101 (13) 1111 (15) 0110 ( 6)or 1100 (12) 1110 (14) 1010 (10)xor 0100 ( 4) 1110 (14) 1100 (12)xor 0110 ( 6) 1010 (10) 1010 (10)eqv 1100 (12) 1001 ( 9) 1010 (10)imp 1100 (12) 1101 (13) 2-2 數位邏輯 • 二進位數值的邏輯運算(四位元,全正值):