簡介:歡迎來到資訊編碼世界!

你有沒有想過,電腦是怎樣分辨什麼時候 **1** 代表數字「一」,而什麼時候 **1** 又只是你在電郵中打出來的一個字元?又或者,電腦是怎樣確保訊息傳送到世界各地時,不會變得亂七八糟的呢?

在這章中,我們將會深入探討資訊編碼系統 (Information Coding Systems)。這就是電腦用來將人類符號轉換成 1 和 0 的「秘密語言」。我們會研究文字是如何表示的,以及電腦如何在資料傳輸過程中找出錯誤。別擔心內容看起來很多——我們會一點一點地為你拆解!


4.5.5.1 十進制數字的字元形式

我們很容易會假設數字 5 對電腦來說永遠只是「5」。然而,電腦會根據使用方式的不同,以不同的方式處理數字。

二進制代碼與字元代碼的區別

  • 純二進制表示 (Pure Binary Representation): 當電腦需要進行數學運算時使用。如果你想計算 \(5 + 2\),電腦會將 5 的數值視為 \(101_2\)。
  • 字元代碼表示 (Character Code Representation): 當電腦將數字視為文字時使用。如果你在 Word 文件中輸入數字「5」,電腦並不在意它的數學數值,它只需要一個「標籤」或「代碼」來決定要在螢幕上顯示哪種字體。

常見錯誤: 學生經常誤以為字元「5」在記憶體中儲存為二進制 \(101_2\)。事實上,在 ASCII 系統中,字元「5」實際上儲存為代碼 53(二進制 \(00110101_2\))!

重點總結: 計算時使用純二進制,而在螢幕上顯示文字時則使用字元代碼


4.5.5.2 ASCII 與 Unicode

為了確保所有電腦都能理解相同的字元,我們使用標準化系統。你可以把它們想像成一本萬用字典,每個字母都有一個特定的頁碼。

1. ASCII (美國資訊交換標準代碼)

ASCII 是最早期的主要系統之一。它最初使用 7 個位元 (bits),允許表示 \(2^7 = 128\) 種不同的字元。這已經足夠表示:

  • 英文字母(大小寫)
  • 數字 0-9
  • 標點符號
  • 控制字元(如「Enter」或「Delete」)

2. Unicode

隨著網際網路的發展,128 個字元已經不夠用了。我們需要中文、阿拉伯文、表情符號 (Emojis) 以及數學符號。

Unicode 的出現就是為了解決這個問題。它使用更多位元(通常為 16 或 32 個位元)。由於它有更多的位元,它可以表示數百萬種不同的字元,幾乎涵蓋了地球上所有的語言。

比喻:ASCII 就像是一個只有 128 個信箱的小型地方郵局;而 Unicode 就像是一個巨大的全球物流中心,擁有數百萬個信箱,服務全世界的人。

快速回顧:為什麼要引入 Unicode?
因為 ASCII 沒有足夠空間容納非英語字元或特殊符號。Unicode 為每個字元提供唯一的代碼,無論使用什麼語言或平台,都能夠準確顯示。


4.5.5.3 錯誤檢查與更正

當資料從一個地方傳送到另一個地方(例如下載檔案)時,干擾或「雜訊」可能會導致 1 變成 0。我們需要一些方法來抓出這些錯誤!

1. 同位元檢查 (Parity Bits)

在二進制字串中加入一個額外的位元(同位元),使 1 的總數變為偶數奇數

  • 偶同位 (Even Parity): 1 的總數(包含同位元)必須是偶數。
  • 奇同位 (Odd Parity): 1 的總數必須是奇數。

範例(偶同位): 你想傳送 \(1101101\)。這裡有五個 1。為了讓總數變成偶數,同位元必須設為 1。最終的代碼是 \(1101101\mathbf{1}\)。

2. 多數表決 (Majority Voting)

這是一種聰明但「昂貴」的錯誤修正方法。電腦會將每個位元傳送三次。如果其中一個位元變了,電腦會查看另外兩個位元,並以「多數」的結果為準。

範例: 你想傳送一個 1。你傳送 1 1 1。如果接收端收到 1 0 1,它會認定 0 是錯誤,並將其更正回 1。

3. 檢查總和 (Checksums)

電腦會對傳送中的資料執行一個數學公式,並產生一個總數(檢查總和)。這個總數會隨資料一起傳送。接收端會執行相同的公式,如果算出的結果與收到的檢查總和不符,就代表發生了錯誤。

4. 檢查位元 (Check Digits)

你在日常生活中每天都會看到這些,例如條碼和書本上的 ISBN 號碼。檢查位元是長識別號碼末尾的一個數字,它是根據其他數字計算出來的。如果你輸入錯誤,計算結果將與檢查位元不符,系統就會跳出錯誤提醒。

你知道嗎? 檢查位元是專門為了捕捉人為錯誤而設計的,例如打字時將兩個數字前後顛倒(例如將 54 打成了 45)。

錯誤檢查總結表:

  • 同位元 (Parity Bits): 簡單,但無法修正錯誤(只能偵測)。
  • 多數表決 (Majority Voting): 可以修正錯誤,但會多消耗 3 倍數據量。
  • 檢查總和 (Checksums): 非常適合大型資料塊。
  • 檢查位元 (Check Digits): 用於數據輸入檢查(條碼/ID)。

如果剛開始覺得二進制數學有點棘手,別擔心!只要記住我們的目標:我們需要將人類的字元表示為數字,並確保這些數字在透過電腦傳輸時不會改變。

考試重點總結:

  • ASCII = 7 或 8 個位元(僅限英語)。
  • Unicode = 16 或 32 個位元(全球語言)。
  • 數字可以是純二進制(數值)或字元代碼(標籤)。
  • 錯誤發生在位元翻轉時;我們使用同位元、多數表決、檢查總和及檢查位元來偵測或修正它們。