第02章 數字系統與資料表示法
電腦的基本單位 電腦,顧名思義,它必須是有電才有腦的,它是由許多電子電路所組合而成,它以1代表開,而以0代表關。 對於任一條電路,它只能有導電1或不導電0兩種狀況,這也構成了電腦的基本單位,我們稱它為位元(Bit),而這種只有0或1兩種狀態的系統就叫二進位系統(binary system)。
21=2 22=4 23=8 24=16 25=32 26=64 電腦的基本單位 在日常生活中,我們習慣於使用十進位 (由0、1、2至9所組成,逢10就進位)。 舉例而言,若班上有52位同學,使用十進位只要二位數就夠了,因為十進位的二位數可代表0到99,共有100種狀況。 而在電腦中呢? 因為它使用二進位(由0至1所組成,逢2就進位),故一位數只能代表兩種狀況,二位數只能代表四種狀況,請看右表: 所以,班上有52位同學,若要用二進位來編座號,那至少得要有六位數才夠。
電腦的基本單位 現在請看看您的鍵盤,鍵盤上的A~Z共有二十六個字元,小寫的a~z又有二十六個字元,0~9有十個字元,再加上特殊符號(! @ # % & *…等)就超過九十三個字元了。而您在鍵盤所按下的每個字元都得是不同的代碼,電腦才能得以識別。 例如以ASCII碼來說,您按下”A”,它將傳送01000001的訊息至主記憶體中,而後在螢幕上顯示”A”。 如果是”B”呢? 它傳達的訊息是01000010。 所以,電腦的基本單位是位元(Bit),但一個位元只能代表兩種狀況根本不敷使用,所以它將8個位元,組成一個位元組(byte)。 8位元(bit)=1位元組(byte) 因為一個位元組(8 bit)共有28=256 種狀況,已足以代表鍵盤上的任一按鍵及功能鍵了。
電腦的基本單位 對於使用英文的國家而言,都是由大小寫的A~Z所組成的。但對於中文呢? 教育部編地的常用字有4800字,次常用字有7652字,再加上不常用字共有13053字,區區的一個位元組怎夠用呢?如果使用兩個位元組呢? 兩個位元組共有65536種狀況,已足以代表任一中文字了,故一個中文字是由兩個位元組所組成的。 所以,電腦的基本單位是位元(Bit)﹔而一個位元組(8 bit)能代表任一字元(character),亦即字元、數字或特殊符號;而對於中文字則須以兩個位元組來儲存。
電腦的基本單位 時至今日,電腦的儲存容量是相當大的,因為一個Byte只能代表一個小量的資訊,所以電腦記憶體和儲存媒體的容量通常以千位元組(1,024 byte),百萬位元組(1,048,576 byte),或十億位元組(1,073,741,824 byte)來表示。故byte的縮寫為大寫的B,若為小寫的b則是bit的意思。一個中文字需2 bytes來表示,若以60G的硬碟而言,約可容納30億個中文字,60億個英文字,因此要放入整個圖書館的資料是輕而易舉的事。
數字系統 在日常生活中,我們最常用的數字系統是十進位的,也就是以0、1、2~9共十個數字來作為計數的基底(base),逢10就進位了。但也有使用其他進制的,例如ㄧ斤有16兩,ㄧ兩有16錢,這就使用16進位系統。 而時間呢? 一小時有60分鐘,ㄧ分有60秒,這就是60進位系統了。 對於電腦呢? 它的基本單位是位元(Bit),只能代表0或1兩種符號,所以它使用的是二進位系統,也就是說它只能有0與1二個數字,逢2就進位了。
數字系統 請看底下的十進制吧! 其中的5是千位數,故得乘上10的3次方﹔而2為十位數,故乘上10的1次方﹔8為個位數,於是乘上10的0次方,小數點以後的呢?它即由左而右依次為10的-1次方、10的-2次方… 方才說過,日常生活中我們最常使用十進制,這也就有如以下的問題:
數字系統 3斤11兩,要怎麼算出共有幾兩呢? 它的計算方法如下: 它一共有59兩
數字系統 又如3小時24分12秒,要怎麼算出一共有幾秒呢? 請看如下的計算方法: 答案是12252秒
數字系統 接下來的問題,二進位的101011是十進位的多少呢? 答案是十進位的 43 2 答案是十進位的 43 現在您已了解如何將二進位轉換成十進位了吧! 而為什麼您要了解如何將二進位轉換為十進位呢?因為電腦只懂得二進位,而我們習慣看的是十進位,故電腦得將最終的答案由二進位轉換成十進位於螢幕上秀出給您看,它的原理就是如此!
數字系統 反過來,您要如何將十進制轉換為二進制呢? 當您要將十進位的數字轉換乘二進位時,只要將該十進制的值一直除以2,求出它的餘數,直至商小於除數即可。 例如本例即除至商為1(已小於除數的2)最後,您只要寫下商值,再將餘數由下至上,一次寫下即得如下的二進位數值
八進位系統 請看底下的二進位數值 : 有問題了吧! 您只看到一堆0與1,但還要解讀共有幾個0幾個1、以及前後順序為何,這根本是個難題! 所以,為了方便閱讀或記憶,人們想出了各種不同的速記法,來取代二進制系統,這其中以八進位系統(octal system)與十六進位系統(hexade cimal system)最為普遍,也最方便轉換。 八進位以0、1、2~7,共八個數字來做為基底,逢8就進位,所以在八進位系統中,您只能看到0~7的八個數字。 為何二進位與八進位容易轉換呢?因為二進位的3位數正好等於八進位的1位數(23=8),故只要將二進位的值由右至左,每3位取成一單位就可直接轉換成八近位了。 請看下表:
八進位系統 二進位的000至111轉換成八進位正好是0~7。 故: 您看! 二進位的1000111101轉換成八進位是1075。 故: 您看! 二進位的1000111101轉換成八進位是1075。 這又是個問題了,如果您先寫出1075,又如何判別這是十進位或八進位呢? 在數字的表示法中,我們將基底至於數字的右下角,以示出它是哪種進位系統! 例如10758代表是八進位制的,而107510或1075 (未標示基底)則代表為十進位制的,通常我們習慣使用十進位制,故未標示基底時,就表示為十進位制。
十六進位系統 就像一斤共有16兩一樣,十六進位系統是逢16才進位,所以它需要有能代表0、1、2~15的值,這十六個值必須是一位數的,阿拉伯數字的0、1~9一共才十個值,還少了六個,所以十六進位制就以A、B、C、D、E、F來代表10、11、12、13、14、15。
各種進位之間的轉換 前面曾經說過二進位與十進位之間的轉換,其實八進位、十六進位與十進位之間的轉換也是相同的做法,只是其基底不同而已。 底下即示範將十進位的125轉換成八進位: 當您需要將十進位的數字轉換成八進位時,只要將該十進制的值,一再除以8求出它的餘數,直至商小於除數為止。 例如本例即除至商為1(已小於除數的8),最後,您只要寫下商值,再將餘數 由下至上一次寫下,即得該八進位數值:
各種進位之間的轉換 如何在二進位、八進位與十六進位之間進行轉換呢? 先前曾談到,二進位由右至左依序取3位可轉換成八進位,依序取4位可轉換成十六進位。故反過來,若要將八進位轉換成二進位,只要將八進位的每一位數轉換成3位數的二進位。 如果是十六進位呢?那只要將它每一位數轉換成4位數的二進位即可。 底下即示範將175的八進位轉換成二進位: 由上述可知1758為二進位的11111012,前置0是可以省略的。 例如十進位的069就等於69。
各種進位之間的轉換 底下再示範將十六進位的23D 轉換為二進位: 由上述可知23D8為二進位的10001111012。 同樣的,前置0是可以省略的。
各種進位之間的轉換 上面所談的都是整數之間的轉換,如果有小數呢? 底下即示範將含小數的二進位制轉換成十進制: 由上表得知
各種進位之間的轉換 反過來,若您要將十進位的45.625轉換成二進位呢? 它的處理步驟如下: 1.首先請將十進制的值分開成整數部分與小數部分。例如45.625的整數部分為45,而小數部分為0.625。 2.將整數部分轉換成二進制。 這在前面已談過了,45轉換成二進制為101101。 3.將小數部分轉換成二進制。 整數部分要轉換成二進制要一直除以2,直至商小於2為止。 反過來呢?小數部分要一直乘以2,取乘績的整數部分,直至小數部分為0或出現循環為止。 請看以下示範:
各種進位之間的轉換 故本例的小數部位為.101 4. 將整數部分與小數部分合併 本例的整數部分為101101 小數部分為.101 本例的整數部分為101101 小數部分為.101 故合併後為101101.101
各種進位之間的轉換 什麼時候小數的部份會造成循環呢? 底下即示範將十進位的21.6 轉換八進位。 它與轉換成二進位的做法完全相同,只是基底不同而已。 1. 將十進制的數字分成整數與小數二部分 21.6的整數部分為21,而小數部分為0.6。 2. 將整數部分換成八進制。故2110轉換成八進制為258 3. 將小數部分轉換成八進制 整數部分需一直除以8,直至商小於8為止,反過來說呢? 小數部分需一直乘以8,直至乘績的小數部分為0或造成循環為止。
各種進位之間的轉換 —— 故本例的小數部份為 4631 4. 將整數部分與小數部份合併 本例的整數部分為25 小數部分為.4631 本例的整數部分為25 小數部分為.4631 故轉換後的八進位值為25.46318 ——