歡迎來到資料表示法 (Data Representation)!

你有沒有想過,電腦是怎麼分辨自拍照片、音樂檔案和文字訊息的呢?電腦的核心其實是一組極小的開關,它們不是處於 關 (OFF) 就是 開 (ON)。我們用 01 來表示這些狀態,這就是所謂的 二進制 (Binary)

在本章中,我們將學習電腦如何僅用這兩個數字來「溝通」,從簡單的整數到複雜的字元都能表示。如果一開始覺得有很多數學運算,別擔心——我們會一步步為你拆解!

1. 二進制量級與字首 (Binary Magnitudes and Prefixes)

在日常生活中,我們使用 十進制字首(以 10 為底)。例如,1 公里等於 1,000 公尺。然而,電腦是以 二進制(以 2 為底)運作的,因此它們使用 二進制字首

十進制字首 (以 10 為底)

這是你在科學課上常用的單位,它們以 10 的冪次(\(10^3\))遞增。

  • kilo (k): \(10^3 = 1,000\)
  • mega (M): \(10^6 = 1,000,000\)
  • giga (G): \(10^9 = 1,000,000,000\)
  • tera (T): \(10^{12} = 1,000,000,000,000\)

二進制字首 (以 2 為底)

這對電腦來說更精確,因為它們以 2 的冪次(\(2^{10}\))遞增。

  • kibi (Ki): \(2^{10} = 1,024\)
  • mebi (Mi): \(2^{20} = 1,048,576\)
  • gibi (Gi): \(2^{30} = 1,073,741,824\)
  • tebi (Ti): \(2^{40} = 1,099,511,627,776\)

快速小複習: 如果你買了一個「1 Terabyte」的硬碟,你實際上得到的是 \(10^{12}\) 位元組。但電腦可能會顯示稍微少一點的容量,因為它採用的是「Tebibytes」(\(2^{40}\)) 的計算方式。

重點總結: 十進制字首是以 1,000 為基準;二進制字首則是以 1,024 為基準。


2. 數字系統 (Number Systems)

我們需要學會如何在三種主要系統之間進行轉換:十進制 (Denary)(我們常用的數字)、二進制 (Binary)(電腦的數字),以及 十六進制 (Hexadecimal)(二進制的簡寫)。

十進制 (Base 10)

使用 0-9 的數字。位值(place values)分別為個位、十位、百位等。

二進制 (Base 2)

僅使用 0 和 1。位值分別為 128, 64, 32, 16, 8, 4, 2, 1。

範例:二進制的 1010 等於 (1 × 8) + (0 × 4) + (1 × 2) + (0 × 1) = 十進制的 10。

十六進制 (Base 16)

使用 0-9 的數字以及 A-F 的字母。
A = 10, B = 11, C = 12, D = 13, E = 14, F = 15。
使用十六進制是因為它比二進制短得多,且人類閱讀時較不易出錯。

十六進制的實際應用: 你會在 HTML 顏色代碼(例如 #FFFFFF 代表白色)和網路裝置的 MAC 位址 中看到十六進制的身影。

二進制編碼十進制 (BCD)

BCD 是一種表示十進制數字的特殊方式。每個十進制位數都會轉換成自己的 4 位元二進制半位元組 (nibble)

範例:將 12 轉換為 BCD:
1 = 0001
2 = 0010
所以,12 的 BCD 表示法為 0001 0010

BCD 的實際應用: 用於數位時鐘和計算機,這些裝置需要將個別位數顯示在螢幕上。

重點總結: 二進制是給電腦看的,十六進制是方便人類閱讀二進制,而 BCD 則是用於顯示單個位數。


3. 有符號整數(負數) (Signed Integers)

我們要如何告訴電腦一個數字是負數呢?我們主要使用兩種方法:一補數 (One's Complement)二補數 (Two's Complement)

一補數 (One's Complement)

要取得一個二進制數字的一補數,只需 翻轉所有位元(將 0 變為 1,1 變為 0)。

二補數 (Two's Complement)(業界標準)

這是表示負數最常見的方式。
第一步: 從該數字的正二進制版本開始。
第二步: 翻轉所有位元(一補數)。
第三步: 將結果加 1。

記憶口訣: 「翻轉後加一!」

你知道嗎? 在二補數中,最左邊的位元(最高有效位元,Most Significant Bit)具有負值。在一個 8 位元的數字中,位值分別為:-128, 64, 32, 16, 8, 4, 2, 1。

重點總結: 使用二補數是因為它允許電腦使用與加法相同的硬體來執行減法。


4. 二進制算術與溢位 (Binary Arithmetic and Overflow)

二進制加法就像十進制加法一樣,只是你需要更早進行「進位」!

二進制加法規則:

  • \(0 + 0 = 0\)
  • \(0 + 1 = 1\)
  • \(1 + 1 = 0\)(進位 1)
  • \(1 + 1 + 1 = 1\)(進位 1)

什麼是溢位 (Overflow)?

想像你有一個 8 位元的暫存器(一個可以容納 8 個位元的「儲存盒」)。如果你將兩個數字相加,而結果需要 9 個位元,那麼多出來的那個位元就無處可去。這就稱為 溢位 (Overflow)

比喻: 這就像汽車的里程表跑到 999,999 英里後又歸零變成 000,000 一樣。電腦可能會給出完全錯誤的答案,因為它「丟失」了那個溢位位元。

重點總結: 當運算結果過大,無法裝入分配的位元數時,就會發生溢位。


5. 字元表示法 (Representing Characters)

電腦不知道字母「A」是什麼,它們只認識數字。字元集 (Character Set) 是一張對照表,告訴電腦哪個數字代表哪個字元。

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

  • 標準 ASCII: 使用 7 個位元,可表示 128 個字元(英文大小寫字母、數字和基本符號)。
  • 擴展 ASCII: 使用 8 個位元,可表示 256 個字元(包含特殊符號和一些帶有重音的字元)。

Unicode

ASCII 很棒,但它無法表示中文、阿拉伯文甚至表情符號!因此創造了 Unicode 來解決這個問題。
- 它使用更多的位元數(通常是 16 或 32 位元)。
- 它可以表示世界上每一種語言。
- Unicode 的前 128 個編碼與 ASCII 完全相同,以保持相容性。

常見誤區: 學生常以為 ASCII 和 Unicode 是「檔案」本身。其實不是!它們只是用來將位元轉換為字母的 編碼系統

重點總結: ASCII 體積小且僅限於英文;Unicode 則非常龐大,包含了所有你能想像到的字元和表情符號。


最終快速複習框

1. 二進制字首: kibi, mebi, gibi, tebi(1,024 的倍數)。
2. 十六進制: 16 進制 (0-9, A-F)。用於顏色代碼和 MAC 位址。
3. BCD: 每個數字佔 4 個位元(例如 5 = 0101)。用於數位顯示器。
4. 二補數: 翻轉位元並加 1。用於表示負數。
5. 溢位: 當結果對於 CPU 暫存器來說太大時發生。
6. Unicode: 全球字元標準,取代了受限的 ASCII。

你已經完成了資料表示法的筆記!如果轉換運算需要練習幾次才能掌握,請別擔心——熟能生巧。你做得很好!