3.1 數據單位(Data Units)
重點(先記住就夠用)
- bit 是最小資料單位,只能是 0 或 1。
- 1 byte = 8 bits;檔案大小與儲存容量多用 B/KB/MB/GB 表示。
- 儲存容量換算多以 1024 為基礎(例:1 KB = 1024 B)。
- 必須分清 b(bit)與 B(Byte):兩者相差 8 倍。
- 常見題型:單位換算、由網速估算下載速度(例如 Mbps ÷ 8 ≈ MB/s)。
電腦在底層只懂分辨兩種狀態(例如「開/關」),因此以 0 與 1 表示所有資料。 文字、圖片、聲音、影片等最終都會轉換成大量的 0 和 1 來儲存與傳送。
- bit 是最細的資料單位,只能取值 0 或 1。
- 適合表示只有兩種結果的資訊,例如:真/假、是/否。
- 1 byte(B) 一般由 8 個 bit 組成。
- 8 個 bit 一共有 28 = 256 種不同的組合(00000000 至 11111111)。
- 因此 1 byte 能表示較多資訊,例如常見編碼中,一個英文字母往往可用 1 byte 表示。
KB、MB、GB、TB 用來描述「儲存空間大小」,即能容納多少 byte 的資料。 在課程與多數電腦情境中,容量換算常用二進制習慣(以 1024 為基礎)。
| 單位 | 縮寫 | 換算(常用) |
|---|---|---|
| bit | b | 只能是 0 或 1 |
| byte | B | 1 B = 8 b |
| kilobyte | KB | 1 KB = 1024 B |
| megabyte | MB | 1 MB = 1024 KB |
| gigabyte | GB | 1 GB = 1024 MB |
| terabyte | TB | 1 TB = 1024 GB |
補充:在一些產品宣傳或網絡速度中,k/M/G 有時會用十進制 1000。考試題目通常會清楚指出使用 1024 或 1000。
在資訊科技中,小寫 b 代表 bit,而 大寫 B 代表 Byte;兩者相差 8 倍。 讀規格時必須留意大小寫。
| 寫法 | 代表 | 常見出現位置 |
|---|---|---|
| b | bit | 網速(Mbps、Gbps) |
| B | Byte | 檔案大小/容量(MB、GB) |
- 先看清楚題目用的是 b 還是 B,以及是 KB/MB 還是 kbps/Mbps。
- 容量換算常用:×1024 或 ÷1024(由大到小乘;由小到大除)。
- 需要把速度由 Mbps 轉成 MB/s 時:除以 8。
例 1:2048 B = 2048 ÷ 1024 = 2 KB
例 2:3.5 GB = 3.5 × 1024 = 3584 MB
現實世界中,你會見到同一個「K/M/G」有時用 1000,有時用 1024。 關鍵在於:它是在描述儲存容量,還是描述傳輸速度;以及題目有沒有指明用法。
| 情境 | 常見做法 | 例子 |
|---|---|---|
| 儲存容量(課程/電腦常用) | 多以 1024 進位換算 | 1 KB = 1024 B;1 MB = 1024 KB |
| 網速/傳輸速度 | 多以 1000 進位(SI) | 1 Mbps = 1000 kbps = 1,000,000 bps |
| 硬碟/SSD 標示(商業標示常見) | 多以 1000 計(所以「看起來變少」) | 「1 TB」= 1,000,000,000,000 B ≈ 931 GiB |
單位不只是用來計算,亦用來建立「大小感」。以下是粗略估算(不同格式/壓縮會令結果差很多):
- 英文文字:ASCII 多數約 1 byte/字元(不含格式)。
- 中文文字:UTF‑8 常見約 3 bytes/中文字(不含格式)。
- 相片(未壓縮位圖概念):例如 4000×3000、24-bit: 大小 ≈ 4000×3000×24÷8 = 36,000,000 B ≈ 34.4 MB; 但實際 JPEG/HEIC 常會壓縮到幾 MB。
- 聲音(未壓縮 PCM 概念):CD 音質 44.1 kHz、16-bit、雙聲道, 1 分鐘大小 ≈ 44,100×16×2×60÷8 ≈ 10.1 MB; 但 MP3/AAC 常可大幅縮小。
你可以把「未壓縮大小」當作上限:之後學到壓縮(Compression)時,就會明白為何實際檔案可以更細。
1)2 MB 等於多少 KB?(以 1024 換算)
2 MB = 2 × 1024 KB = 2048 KB
2)48 Mb 等於多少 MB?
48 Mb ÷ 8 = 6 MB(留意 b 與 B)
3)1.5 GB 等於多少 MB?(以 1024 換算)
1.5 GB × 1024 = 1536 MB
小遊戲:數據單位轉換
系統會隨機出題,例如「將 2048 bytes 轉換為 KB」,請輸入答案。
3.2 數據傳輸單位(Data Transmission Units)
重點(先掌握計算流程)
- 網速多用 bit:bps/kbps/Mbps/Gbps(小寫 b)。
- 檔案大小多用 Byte:KB/MB/GB(大寫 B)。
- 轉換最常用:MB/s = Mbps ÷ 8。
- 下載時間:時間 = 檔案大小 ÷ 速度(必須先統一單位)。
- 實際下載可能較慢:Wi‑Fi 訊號、多人同用、伺服器限速、協定開銷等。
同學最常混淆的是:檔案大小多用 MB/GB(Byte 系列), 但網速多用 Mbps/Gbps(bit 系列)。 由於 1 B = 8 b,計算下載時間時必須先統一單位。
在網絡速度標示中,k/M/G 多數以十進制 1000 換算:
| 單位 | 意思 | 換算(bit) |
|---|---|---|
| bps | bit per second | 1 bps = 1 b/s |
| kbps | kilobits per second | 1 kbps = 1000 bps |
| Mbps | megabits per second | 1 Mbps = 1000 kbps |
| Gbps | gigabits per second | 1 Gbps = 1000 Mbps |
注意:儲存容量(KB/MB/GB)常用 1024;網速(kbps/Mbps/Gbps)多用 1000。 題目若有指定,應以題目為準。
- 看清檔案大小單位(MB/GB)。
- 看清網速單位(kbps/Mbps/Gbps)。
- 把網速由 Mbps 轉為 MB/s:MB/s = Mbps ÷ 8。
- 如檔案是 GB,先轉成 MB:MB = GB × 1024(常用做法)。
- 套公式:時間(秒)= 檔案大小(MB) ÷ 速度(MB/s),再按需要轉分鐘(÷60)。
題目:500 MB 檔案,以 80 Mbps 下載,估算需要多久?
- 速度:80 Mbps ÷ 8 = 10 MB/s
- 時間:500 MB ÷ 10 MB/s = 50 秒
- 換分鐘:50 ÷ 60 ≈ 0.83 分鐘
題目:2 GB 檔案,以 100 Mbps 下載,估算需要多久?
- 檔案:2 GB × 1024 = 2048 MB
- 速度:100 Mbps ÷ 8 = 12.5 MB/s
- 時間:2048 ÷ 12.5 ≈ 163.84 秒 ≈ 2 分 44 秒
- Wi‑Fi 訊號弱、距離遠、牆身阻隔。
- 同一時間多人/多裝置共用網絡,頻寬被分薄。
- 網站/伺服器本身限速或繁忙。
- 協定開銷(控制、檢查、重傳等)令有效下載速度下降。
在網絡標示中,k、M、G 通常以 1000 為基礎(SI 制),例如:
- 1 kbps = 1000 bps
- 1 Mbps = 1000 kbps = 1,000,000 bps
- 1 Gbps = 1000 Mbps = 1,000,000,000 bps
這與「儲存容量常用 1024」不同,所以傳輸題目最常見的錯誤就是:把 1000 與 1024 混用。
若題目沒有特別指明,一般把傳輸速度按 1000 換算;把檔案大小按 1024 換算(或按題目要求)。
由於 1 byte = 8 bits,所以理想情況下: MB/s ≈ Mbps ÷ 8(忽略協定開銷時的估算)。
| 標示速度 | 約等於 |
|---|---|
| 8 Mbps | ≈ 1 MB/s |
| 40 Mbps | ≈ 5 MB/s |
| 80 Mbps | ≈ 10 MB/s |
| 100 Mbps | ≈ 12.5 MB/s |
| 200 Mbps | ≈ 25 MB/s |
| 1 Gbps | ≈ 125 MB/s |
- 單位大小寫:Mbps(bit)≠ MB/s(Byte)。
- 先統一單位:檔案用 MB 或 GB;速度用 Mbps;時間用秒或分鐘。
- 步驟次序:檔案大小 →(如需要)轉成 bit → 用速度除。
- 1000 vs 1024:速度多用 1000,容量多用 1024(或按題目指明)。
- 最後才換時間:算到秒後再 ÷60 轉分鐘,避免中途亂。
小遊戲 1:傳輸單位轉換
小遊戲 2:下載/上載時間計算
系統會隨機產生檔案大小及傳輸速度,你需要估計下載時間(以秒為單位,四捨五入)。
3.3 二進制數(Binary Numbers)
重點
- 電腦最可靠分辨兩種狀態(高/低電壓),因此以 0/1 表示資料。
- 二進制每一位的位值是 2 的次方(…16、8、4、2、1)。
- 二進制轉十進制:把所有為 1 的位值相加。
- n bit 可表示 2n 種組合(對應到 0 至 2n−1)。
- 十六進制(Hex)常用作「縮寫」二進制:1 個 Hex 位 = 4 個 bit。
電腦核心元件(例如晶體管)最容易、最穩定分辨兩種狀態:高電壓與低電壓。 若要穩定分辨三種或以上狀態(0、1、2…),會更容易受雜訊、溫度、零件誤差影響而出錯, 因此以 0/1 表示資訊最可靠。
十進制(decimal)每位是 10 的次方(1、10、100…); 二進制(binary)每位是 2 的次方(1、2、4、8、16…)。
| 位(右→左) | 位值 |
|---|---|
| 0 | 20 = 1 |
| 1 | 21 = 2 |
| 2 | 22 = 4 |
| 3 | 23 = 8 |
| … | … |
二進制 → 十進制
- 把所有為 1 的位值相加即可。
- 例:
10101100= 128 + 32 + 8 + 4 = 172。
十進制 → 二進制
- 方法 1:除 2 取餘數(由下而上讀)。
- 方法 2:位值表(由大到小試,放得落寫 1,放唔落寫 0)。
- n bit 有 2n 種組合,因此(以無符號整數計)可表示 0 至 2n−1。
- 例:8 bit(1 byte)→ 28 = 256 個值 → 0–255。
若題目問「樣式數量」,答案通常是 2n;若問「最大值」,通常是 2n−1。
- Hex 以 16 為基數:0–9、A–F(代表 10–15)。
- 1 個 Hex 位 = 4 bit,所以 8 bit(1 byte)可寫成 2 個 Hex 位。
- 例:
1101 0110= D6(Hex)。
所以在電腦系統中,Hex 常用作二進制的「精簡寫法」。
二進制數可以有前置零(leading zeros),例如十進制的 5 可以寫成: 101、0101、00000101…… 代表的值都一樣。
另外,4 bit 常稱為 nibble;8 bit 是 1 byte, 這亦是為何十六進制常以 4 bit 為一組表示(更易讀)。
二進制的加法規則很少,只要記住:
- 0 + 0 = 0
- 0 + 1 = 1(1 + 0 亦同)
- 1 + 1 = 10(寫 0,向左進位 1)
- 1 + 1 + 1 = 11(寫 1,向左進位 1)
若題目是「固定 n bit」的無符號加法,最左邊額外的進位會被丟棄,可能造成溢出(overflow)。
- 字符代碼:例如 ASCII/Unicode 最終都以 bits 儲存。
- 顏色:24-bit colour 代表每像素可有 224 種顏色(RGB 各 8 bit)。
- 權限/狀態:例如「讀/寫/執行」可用 3 個 bit 表示不同組合。
- 網絡:IPv4 位址本質上是 32 bit;子網遮罩也是以 bit 方式描述。
即時轉換工具
在其中一格輸入非負整數,其他兩格會即時更新。
小遊戲:二進制轉換練習
3.4 樣式數量(Number of Styles)
重點
- 每個 bit 只有兩種狀態(0 或 1),所以 n 個 bit 能表示 2n 種不同樣式(組合)。
- 每多 1 個 bit,樣式數量便 翻倍。
- 反過來:若需要表示 N 種樣式,要找最小的 n 使 2n ≥ N。
- 常見例子:8 bits = 256 種;24 bits(RGB 每通道 8 bit)= 224 種顏色。
你可以把 bit 想像成一個開關:只有「關/開」兩種情況。 若有 n 個開關,每個開關都有 2 種選擇,總組合數就是: 2 × 2 × … × 2(共 n 次)= 2n。
| bit 數 | 可能代碼(例) | 樣式數量 |
|---|---|---|
| 1 | 0, 1 | 2 |
| 2 | 00, 01, 10, 11 | 4 |
| 3 | 000 … 111(共 8 個) | 8 |
重點:每加 1 bit,組合數量就乘 2。
- 黑白圖像:1 bit → 2 種(黑/白)。
- 灰階圖像:8 bits → 256 級灰階。
- 彩色圖像:24 bits(RGB 各 8 bit)→ 224 = 16,777,216 種顏色。
- 代碼/狀態:若系統要表示 10 種狀態(0–9),至少需要 4 bit(因 23=8 不足,24=16 足夠)。
步驟:找最小 n,使 2n ≥ N。
例 1:需要表示 100 種樣式:
- 26 = 64(不足)
- 27 = 128(足夠)
所以至少需要 7 bit。
例 2:需要表示 10 種樣式(0–9):24 = 16 ≥ 10,所以需要 4 bit。
- 數量(有幾多個值)是 2n;但最大值(以無符號整數表示)是 2n−1。
- 題目若問「最少 bit」,要記得用向上取整(例如 26 不足,就要用 7 bit)。
- 不要把 bit 數與 byte 數混淆:1 byte = 8 bits。
| n(bit 數) | 2n(樣式數量) |
|---|---|
| 1 | 2 |
| 2 | 4 |
| 3 | 8 |
| 4 | 16 |
| 5 | 32 |
| 6 | 64 |
| 7 | 128 |
| 8 | 256 |
| 9 | 512 |
| 10 | 1024 |
| 16 | 65,536 |
看到「要表示 200 種」「要表示 1000 種」這類題目,先對照表,就能迅速判斷最少 bit 數。
題目:若系統要表示 365 種不同狀態(例如一年 365 日),最少需要多少 bit?
- 28 = 256(不足)
- 29 = 512(足夠)
答案:最少需要 9 bit。
「樣式數量」其實是乘法原理:如果每一位有 k 種選擇, 用 n 位來表示,總組合數就是 kn。
- 十進制:每位有 10 種(0–9),所以 n 位數可表示 10n 種組合。
- 十六進制:每位有 16 種(0–F),所以 n 位可表示 16n 種組合。
- 二進制:每位只有 2 種(0/1),所以是 2n。
把 bit 視為「只有 0/1 的一位數」,就能自然理解 2n 的由來。
小遊戲:2 的次方魔法
3.5 無符號整數(Unsigned Integer)
重點
- 無符號(unsigned)表示法 沒有正負號,只能表示 0 及正整數。
- n bit 無符號整數一共有 2n 個數值,範圍是:0 至 2n − 1。
- 二進制轉十進制:把所有為 1 的位值(20, 21, …)相加。
- 超出表示範圍會出現 溢出(overflow)(下一節會講)。
每個 bit 只有 0/1 兩種可能。若有 n 個 bit,總組合數為 2n。 無符號整數由 0 開始計數,所以最大值就是最後一個數:2n − 1。
二進制由右至左的位值依次是:20, 21, 22…
| bit 位置(右→左) | 位值 |
|---|---|
| 0 | 20 = 1 |
| 1 | 21 = 2 |
| 2 | 22 = 4 |
| 3 | 23 = 8 |
| … | … |
某位是 1 就「取用」該位值;是 0 就不取用。把取用的位值相加就是十進制數值。
例:10101100
= 1×128 + 0×64 + 1×32 + 0×16 + 1×8 + 1×4 + 0×2 + 0×1
= 128 + 32 + 8 + 4 = 172
方法 1:除 2 取餘數
不斷把十進制數除以 2,記下餘數(0 或 1),由下而上讀就是二進制。
方法 2:位值表(由大到小試)
先寫出位值(…128,64,32,16,8,4,2,1),由最大位值開始, 看能否「放得落」,放得落就寫 1 並扣減,放唔落就寫 0。
| bit 數(n) | 數量(2n) | 範圍(0 至 2n−1) |
|---|---|---|
| 8 | 256 | 0–255 |
| 16 | 65,536 | 0–65,535 |
| 32 | 4,294,967,296 | 0–4,294,967,295 |
- 無符號整數:全部 bit 用來表示大小,所以範圍由 0 起。
- 有符號整數(two’s complement):最高位用作符號判斷,範圍大約「一半負數、一半正數」。
- 計數/數量:例如學生人數、物件數量、檔案長度、像素值等,本質上不會是負數。
- 地址/索引:記憶體地址、陣列索引通常不需要負數(或不會用負數表示)。
- 節省一個 bit:若你確定不需要負數,使用無符號整數可以把所有 bit 都用來表示大小。
除了「太大」會溢出,無符號整數在做減法時亦可能出現「太小」的情況(下溢)。 由於只有 0–(2n−1) 的範圍,結果可能會回捲到最大值附近。
這就是為何程式設計常要先檢查範圍,或使用足夠大的資料型別。
只要題目提到「n bit 無符號整數」,建議你第一步先在旁邊寫: 範圍:0 至 2n−1。
之後不論是加、減、或問「會否溢出」,都只要把結果與範圍比較,就能快速判斷。
小遊戲:最大值是多少?(隨機 bit 數)
3.6 有符號整數(Signed Integer)
重點
- 有符號整數可以表示正數、0、負數。
- 最常用表示法是 二進制補碼(Two’s Complement)。
- n bit 的補碼範圍是:−2n−1 至 2n−1 − 1。
- 可用「反轉 + 1」快速求負數的補碼表示。
- 最高位(MSB)是 1 時代表負數;MSB 是 0 時代表非負數。
Two’s Complement(補碼)設計的重點是:同一套加法電路就能同時處理正數與負數, 而且 0 只有一個表示(避免「+0 / −0」的問題)。
- 最小值:−2n−1(二進制為 1000…000)
- 最大值:2n−1 − 1(二進制為 0111…111)
在 Two’s Complement 中,正數(以及 0)的二進制表示法與無符號整數相同,只是要注意 bit 數固定。
例如在 8 bit 中,5 = 00000101。
步驟:
- 先把正數的二進制寫成固定 n bit。
- 把每一位反轉(0→1,1→0)。
- 再加 1。
例:在 8 bit 中表示 −5:
+5 = 00000101 → 反轉 = 11111010 → +1 = 11111011
- 若 MSB = 0:直接當作正數(用位值法計)。
- 若 MSB = 1:代表負數,可用「反轉 + 1」求出其正值,再加負號。
例:11111011(8 bit)
反轉:00000100 → +1:00000101 = 5,所以原數為 −5。
- 忘記 bit 數固定:同一個二進制在 4 bit / 8 bit 的解讀可能不同。
- 把「樣式數 2^n」誤當成「最大值」;補碼最大值是 2n−1−1。
- 超出範圍的運算會導致溢出(下一節)。
n bit 補碼一共有 2n 種組合,其中最高位(MSB)為 0 的一半代表非負數, MSB 為 1 的一半代表負數。
- 非負數:0 到 2n−1−1(共有 2n−1 個值)
- 負數:−2n−1 到 −1(亦有 2n−1 個值)
因此整體範圍是:−2n−1 至 2n−1−1。 「負數多 1 個」正是因為 0 佔了一個組合。
若你已經懂無符號二進制,可用一個更快的方法讀回補碼的十進制:
若 MSB = 0:直接當無符號讀。 若 MSB = 1:值 =(當無符號的值) − 2^n。
例:8 bit:11111011(當無符號是 251)
251 − 256 = −5
這個方法等價於「反轉 + 1」,但在筆算時通常更快。
在補碼系統中,a − b 可以改寫成 a + (−b), 而 −b 就是 b 的補碼表示。這正是補碼設計的核心:用同一個加法器完成減法。
當把補碼由較短位元(例如 8 bit)轉成較長位元(例如 16 bit)儲存時, 不能單純在左邊補 0;必須做符號延伸:把最左位(符號位)複製到新增的高位。
若把負數錯誤地左補 0,會把它變成正數,數值就會改變。
小遊戲 1:8 bit 補碼 ↔ 十進制 練習
小遊戲 2:二補碼範圍練習(隨機 bit 數)
3.7 溢出誤差(Overflow Error)
重點
- 電腦用固定 bit 數儲存整數,因此可表示的範圍有限。
- 當運算結果超出可表示範圍,就會出現溢出(overflow),結果可能「回捲(wrap around)」而變允許範圍內的另一個值。
- 無符號:範圍 0 至 2n−1。
- 補碼(有符號):範圍 −2n−1 至 2n−1−1(例:8 bit 為 −128 至 +127)。
例如用 8 bit 儲存無符號整數,只能表示 0–255。 若計算得到 300,就無法用 8 bit 直接表示;系統可能只保留低位而導致錯誤數值。
8 bit 無符號範圍:0–255
例:250 + 20 = 270(超出 255)
若只保留 8 bit,270 會「回捲」成 270 − 256 = 14(示意:超過最大值就從 0 重新開始計)。
無符號加法常用判斷:若有「第 9 位進位」或結果小於其中一個加數,可能發生溢出。
8 bit 補碼範圍:−128 至 +127
- 同號相加得到異號結果 → 溢出。
- 例如「正 + 正」卻變成負,或「負 + 負」卻變成正。
例:100 + 50 = 150(超出 +127)
在 8 bit 補碼中可能出現負數結果(回捲)。因此判斷溢出比只看二進制更重要。
- 有些語言/環境會直接回捲(wrap around)。
- 有些會觸發錯誤/例外(error/exception)。
- 也可用更大位元數的資料型別(例如 16 bit → 32 bit)避免溢出。
- 題目給定 bit 數,問某運算是否會溢出 → 先寫出可表示範圍,再比較結果。
- 題目要求「指出溢出誤差」→ 解釋原因:結果超出範圍,會被截斷/回捲。
例:8 bit 無符號:250 + 20
因為只可保留 8 bit,所以最左邊的第 9 位會被丟棄,剩下: 00001110 = 14。 這就是「回捲(wrap around)」的典型現象。
在 two’s complement 中,常見判斷溢出的方法之一是看符號位的進位:
- 若「進入符號位的進位」與「離開符號位的進位」不相同 → 溢出。
- 直觀理解:同號相加卻變成異號,通常就是因為超出範圍。
考試最常用的仍是「同號相加得異號」的判斷法;Carry 法可作補充說明。
- 溢出:因為 bit 數固定,結果超出可表示範圍,導致回捲/截斷。
- 四捨五入誤差:因為表示精度有限(例如小數位不足),需要取近似值而產生誤差。
兩者都會造成「計算結果不準確」,但成因完全不同;題目若問原因,必須對應正確概念。
小遊戲:哪些加法會溢出?(8 bit 補碼)
3.8 字符編碼(Character Encoding)
重點
- 電腦儲存文字,其實是儲存每個字元對應的數字代碼(code)。
- ASCII 主要涵蓋英文、數字及符號(最初 7 bit)。
- 中文字符數量龐大,因此出現了 Big5(大五碼)、GB(國標碼) 等中文編碼。
- Unicode 旨在統一世界文字;UTF‑8 是常見的儲存方式(可變長度)。
- 編碼不一致會出現亂碼(同一組 bytes 以錯誤規則解讀)。
字符編碼(Character Encoding)是一套規則,用來把「字元」對應到「數值代碼」,
再把代碼以二進制形式儲存在檔案中。
簡單說:文字 → 代碼(數字) → bits。
- 最初 ASCII 使用 7 bit,可表示 128 個符號(0–127)。
- 內容包括:英文字母(A–Z, a–z)、數字(0–9)、常用標點符號等。
- 後來出現 8-bit 的「延伸 ASCII」(0–255),但不同地區有不同表(不完全統一)。
考試常問:ASCII 不足以表示中文,因為字符數量遠超 128。
- Big5 是繁體中文常見的傳統編碼之一(香港、台灣曾廣泛使用)。
- 多數中文字以 2 bytes 表示(並非固定 1 byte)。
- 優點:在繁體中文環境下比 ASCII 容納更多中文字;缺點:字符集合有限,與其他編碼互通容易出錯。
延伸:香港曾有 Big5 的擴充字集(如 HKSCS),用來補足本地常用字。
- GB 是中國國家標準(Guobiao)的中文編碼系列,常見包括:GB2312、GBK、GB18030。
- 用途:主要覆蓋簡體中文及常用符號;後續標準逐步擴充更多漢字。
- 在不同 GB 系列之間或與 Big5/Unicode 混用時,若解讀規則不一致,就可能出現亂碼。
- Unicode 是一套「字元編號」的國際標準,目標是涵蓋世界各地文字及 emoji。
- UTF‑8 是 Unicode 的其中一種儲存方式:可變長度(1–4 bytes)。
- UTF‑8 兼容 ASCII:英文常用字元通常佔 1 byte;中文常見為 3 bytes;部分 emoji 可能為 4 bytes。
因此:同一段文字,用不同編碼儲存,檔案大小可能不同。
- 同一串 bytes 用錯誤編碼解讀:例如把 UTF‑8 當成 Big5/GB 來讀。
- 檔案本身沒有清楚標示編碼,軟件「猜錯」編碼。
- 資料在傳輸/複製時被轉碼(encoding conversion)但轉換不完整。
很多同學會把 Unicode、UTF‑8、UTF‑16 混為一談。其實它們屬於不同層次:
- Unicode:為每個字元分配一個「字元編號」(code point),例如 U+0041 代表 'A'。
- UTF‑8 / UTF‑16:是把 code point 變成「實際要儲存的 bytes」的編碼方式。
簡單比喻:Unicode 像「字典編號」;UTF‑8/UTF‑16 像「把編號寫入檔案的格式」。
- 兼容 ASCII:0–127 的字符(基本英文)仍然是 1 byte,與 ASCII 完全一致。
- 變長編碼:每個字元可用 1–4 bytes;英文通常 1 byte,中文常見 3 bytes,部分 emoji 可能 4 bytes。
- 跨平台:網頁與多數系統普遍使用 UTF‑8,較少出現亂碼。
粗略估算:
- 純英文(ASCII 範圍):字元數 ≈ bytes 數(每字元 1 byte)。
- 中文(UTF‑8 常見):中文字數 × 3 ≈ bytes 數(再加上標點/換行)。
例:若有 1000 個英文字元,約 1000 B(≈ 1 KB)。
例:若有 1000 個中文字元(UTF‑8),約 3000 B(≈ 2.93 KB)。
這只是概算:實際大小會受標點、換行、檔案格式(TXT/DOCX/PDF)與壓縮影響。
- 先確認檔案原本的編碼(例如 Big5 / GB / UTF‑8)。
- 用支援多編碼的軟件(文字編輯器/IDE)選擇「以正確編碼開啟」。
- 再把檔案「另存為 UTF‑8」(盡量統一)。
- 網頁要確保加入
<meta charset="utf-8">,並以 UTF‑8 儲存檔案。
部分 Unicode 編碼會在檔案開首加入 BOM,用來提示字節順序或編碼類型。
例如某些 UTF‑8 檔案可能以 EF BB BF 開頭。
BOM 有時會令檔案開首出現奇怪符號(尤其在舊系統/舊軟件)。課程層面通常只需知道它是「編碼提示」即可。
互動編碼工具
請輸入一段文字(可以混合英文字、數字及中文):
提示:ASCII 只支援基本英文及數字符號;中文通常只會出現在 Unicode 編碼中。
3.9 條碼編碼與 QR Code
重點
- 條碼/QR Code 都是把資料編成「可由機器掃描」的圖案。
- 一維條碼(1D Barcode)以線條為主,資料量較少,常用作貨品編號(需配合數據庫查詢)。
- 二維條碼(QR Code)以方格矩陣表示,資料量較多,並具錯誤更正能力。
- 掃描後得到的可以是編號、文字、網址等,視乎編碼內容。
條碼本質上是一套編碼規則(symbology), 把數字/字元轉換成黑白線條(或黑白方格)的排列。 掃描器量度黑白區域的寬度/間距,便可還原出原始代碼。
- 資料量較少,常見只存放「貨品編號」或短代碼。
- 需要橫向掃描(線性掃描器)。
- 常見制式:EAN‑13、UPC、Code 128 等。
超市掃描到的多是編號,然後到數據庫查價錢與貨品資料。
許多條碼制式會加上檢查碼(例如 EAN‑13 的第 13 位),用於偵測輸入/掃描錯誤。 若掃描到的編號不符合檢查規則,系統便可提示錯誤。
- 資料量較多,可存放文字、網址、聯絡資料等。
- 具有錯誤更正(Error Correction):即使部分損毀仍可能掃描成功。
- 可從不同角度掃描(有定位圖案協助辨識方向)。
- 若主要需要「短代碼 + 查數據庫」:多用 1D 條碼(成本低、掃描快)。
- 若希望「直接攜帶較多資訊」或要用手機相機掃描:多用 QR Code。
以 EAN‑13 為例:第 13 位是檢查碼,用於偵測輸入/掃描錯誤。 若題目要求你解釋或計算,可按以下步驟:
- 先取前 12 位數字。
- 把「偶數位置」的數字相加後乘 3(或按題目規則分奇偶)。
- 把「奇數位置」的數字相加。
- 把兩部分相加得到總和 S。
- 檢查碼 = (10 − (S mod 10)) mod 10。
QR Code 內含冗餘資料作錯誤更正,讓它即使被刮花、遮擋一部分,仍有機會成功還原內容。 這就是為何很多 QR Code 仍可在損毀或反光下被掃到。
| 等級(常見) | 概念 | 取捨 |
|---|---|---|
| L | 較低錯誤更正 | 可存更多資料 |
| M | 中等(常見) | 容量/穩定性平衡 |
| Q / H | 較高錯誤更正 | 更耐損,但可存資料較少 |
課程重點通常是「有錯誤更正」這個概念,不需記住演算法細節。
- 1D 條碼:通常只放短代碼(例如貨品編號),再到數據庫查詳情;掃描快、成本低。
- QR Code:可直接放網址/文字/付款資料等;手機相機易掃;亦可加入錯誤更正。
小遊戲 1:生成真正可掃描的 EAN‑13 條碼
請輸入 12 或 13 位數字(例如貨品編號,香港常見前綴為 489):
若輸入 12 位數字,系統會自動根據 EAN‑13 規格計算檢查碼(第 13 位),並產生可以由超市掃瞄器讀取的條碼。
小遊戲 2:生成真正可掃描的 QR Code(URL)
請輸入一個網址或短句(建議輸入網址,例如:https://www.edb.gov.hk):
產生後可以使用手機相機或掃碼應用程式實際掃描,體驗「黑白小格 = bit 的集合」如何儲存網址等資料。
小遊戲 3:判斷條碼與二維碼
4.1 模擬數據與數碼數據(Analog vs Digital)
重點
- 模擬(Analog):數值連續,在範圍內可取無限多個可能值(例如溫度、聲波)。
- 數碼(Digital):數值離散,只取有限個級別(電腦以 0/1 表示)。
- 把模擬訊號變成數碼資料,需要數碼化(digitisation):取樣 + 量化。
- 數碼資料較容易儲存、複製、傳輸與處理,但可能因取樣/量化而失真。
模擬數據的特點是連續:例如溫度可以是 20°C、20.1°C、20.12°C…… 理論上在範圍內可以有無限多個可能值。
例子:聲波、光強度、電壓、速度、壓力等。
數碼數據的特點是離散:只會落在某些固定級別。 電腦最基本只懂 0/1,因此所有數碼資料最終都會變成 0/1 的組合來表示。
例子:二進制數、數碼相片像素值、MP3 音訊資料、影片幀等。
- 易於儲存與備份;複製多次仍可保持一致(理想情況下不會「越複製越差」)。
- 易於傳輸與加密;亦可透過壓縮減少檔案大小。
- 容易用電腦進行處理(剪接、分析、搜尋、AI 等)。
- 由模擬轉數碼要取樣與量化,若參數不足(取樣率太低、位深太低)可能失真。
- 需要轉換器(ADC / DAC)及一定硬件支援。
- 檔案可非常大(例如高解像影片),需要壓縮與儲存管理。
| 項目 | 模擬(Analog) | 數碼(Digital) |
|---|---|---|
| 數值變化 | 連續(理論上無限多個可能值) | 離散(只落在某些級別) |
| 受噪音影響 | 容易累積失真,越傳越差 | 可再生/還原(在一定範圍內可判斷 0/1) |
| 複製多次 | 可能逐次變差 | 理想情況下可保持一致 |
| 電腦處理 | 需先轉成數碼 | 容易儲存、搜尋、分析、壓縮 |
在傳輸過程中,訊號會混入雜訊(noise)。 模擬訊號的值是連續的,一旦被雜訊拉高或拉低,就會直接變成另一個數值,並且失真會累積。
數碼訊號則可利用「閾值判斷」: 只要訊號仍明顯高於/低於門檻,就可以判斷為 1 或 0,從而把訊號「再生」成較乾淨的 1/0。 這亦是數碼傳輸可配合錯誤偵測/更正的原因。
「數碼」不等於「一定精準」。因為數碼化必須把連續值分成有限級別:
- 級別太少(位深太低)→ 量化誤差大,可能出現明顯失真。
- 級別愈多(位深愈高)→ 更接近原本的連續訊號,但檔案更大。
例:數碼溫度計顯示 20.1°C,代表它以 0.1°C 為一級;若只顯示整數度數,精細程度就較低。
- 時間:指針鐘(模擬) vs 電子鐘顯示 12:30(數碼)
- 聲音:黑膠唱片/卡式帶(模擬) vs MP3/AAC(數碼)
- 照片:菲林相(模擬) vs 數碼相片像素(數碼)
考試若要你判斷,重點看它是「連續」還是「離散/以數字表示」。
小遊戲:判斷屬於模擬數據還是數碼數據
4.2 數碼化(Digitisation)
重點
- 數碼化是把模擬資料或實體資訊轉成可由電腦處理的數碼資料。
- 常見兩步:取樣(sampling)+量化(quantisation)。
- 取樣率/解析度愈高,能保留更多細節,但檔案通常更大。
- 量化會產生量化誤差(quantisation error);位深愈高,誤差通常愈小。
數碼化(Digitisation)指把資料轉成「數碼格式」以便儲存、傳輸與處理。 例如:把聲波錄成音訊檔、把照片掃描成圖像檔、把紙本文件 OCR 成文字等。
- 把連續訊號(例如聲波)在固定時間間隔「量度一次」。
- 取樣率(Hz):每秒取樣次數;取樣率愈高,可保留更高頻率的變化。
概念提示:取樣率不足可能造成失真/走樣(aliasing)。
- 把取樣得到的連續數值四捨五入到有限級別。
- 位深(bit depth)決定每個樣本可有多少級別:例如 8 bit 有 256 級。
- 位深愈高,表示愈精細,量化誤差通常愈小。
- 取樣:把連續影像「分格」成像素(resolution)。
- 量化:每個像素用固定 bit depth 表示顏色(colour depth)。
- 解析度、顏色深度愈高 → 更清晰/更細緻,但檔案更大。
OCR 把圖片中的文字「辨識」成可編輯的文字資料。它常用於把紙本文件數碼化,方便搜尋與編輯。
OCR 結果受影像清晰度、字體、光線與背景影響。
取樣率(sampling rate)決定你每秒「量度」多少次。若取樣率太低,高頻變化會被誤判成低頻, 產生走樣(aliasing)。
實務上亦會先做「抗走樣濾波(anti‑aliasing filter)」把過高頻率濾走。
量化(quantisation)是把連續數值四捨五入到有限級別。 若位深太低,級別太少,誤差會更明顯(可理解為『階梯狀』近似)。
例:若只用 2 bit 量化,一個樣本只有 4 個級別(0–3),很多原本不同的數值都會被逼到同一級別。
- ADC(Analog‑to‑Digital Converter):把模擬訊號 → 數碼數據(取樣 + 量化 + 編碼)。
- DAC(Digital‑to‑Analog Converter):把數碼數據 → 模擬訊號(播放聲音/顯示波形等)。
例如:麥克風收錄聲波(模擬)→ ADC 轉成數碼音訊 → 儲存/處理 → 播放時再由 DAC 還原成模擬訊號推動喇叭。
數碼化後的資料量通常與「取樣密度 × 每次取樣所需 bit × 時間/面積」成正比:
- 音頻:取樣率 × 位深 × 聲道數 × 時間
- 圖像:解析度(像素數)× 色深
- 影片:每幀大小 × 幀率(fps)× 時間
之後學到音頻/圖像/影片計算題,基本都離不開這個思路。
聲音數碼化:取樣與量化
麥克風把聲波轉換為電訊號,再經取樣(每秒量度多次)及量化(四捨五入到有限級數)後,轉為數碼數據。
錄製約 5 秒聲音(需要 HTTPS 及容許使用麥克風)
綠色曲線代表「原始波形」,程式會以固定時間間距進行取樣(sampling)。可以想像每個取樣值再被「量化」成有限的幾個級別。
圖像數碼化:離散化與量化 + OCR 示範
請上載一張相片(如有清晰文字更佳):
解析度愈低,單一像素覆蓋的範圍愈大,影像會變得較「格仔」;bit 數愈少,每個通道的顏色級數愈少,色帶現象會更明顯。 理論上,取樣解析度最高可以細至原圖每一個像素(即與原圖解像度相同),而本示範將滑桿限制在 8 × 8 至 64 × 64 之間,方便觀察效果。
OCR 示範:從影像中識別文字
示範使用 Tesseract.js(需要網絡連線),實際速度及準確度會視乎相片質素而定。
4.3 壓縮(Compression)
重點
- 壓縮目的是減少檔案大小,方便儲存與傳輸。
- 無損壓縮(Lossless):解壓後完全還原原始資料。
- 有損壓縮(Lossy):解壓後不能完全還原,但可大幅減少大小。
- 常見題型:判斷格式屬有損/無損、計算壓縮比/減少百分比。
- 減少儲存空間需求(硬碟/雲端)。
- 減少傳輸時間與頻寬消耗(上載/下載/串流)。
- 在不影響用途的前提下,提高效率。
無損壓縮的解壓結果與原始資料完全相同,適用於不能接受任何資料改動的情境: 例如文字文件、程式碼、數據庫、部分醫療/工程圖像等。
常見無損格式:PNG、GIF(索引色)、FLAC、ZIP。
有損壓縮會丟棄人眼/人耳較不敏感的資訊,以換取更小檔案。 適合相片、音樂、影片等多媒體內容;但壓縮過度會出現失真(artifact)。
常見有損格式:JPEG、MP3、AAC、MP4(H.264/H.265)。
- 壓縮比(Compression Ratio)常見定義:原始大小 : 壓縮後大小。
- 或用倍數表示:原始大小 ÷ 壓縮後大小。
- 節省百分比= (原始 − 壓縮後) ÷ 原始 × 100%
例:原始 50 MB,壓縮後 10 MB:
- 倍數:50 ÷ 10 = 5(即變成原來的 1/5)
- 節省: (50−10)/50 = 80%
- 去除重複:例如把重複出現的資料用較短代碼表示(字典/編碼)。
- Run‑Length Encoding(RLE):連續重複的值記錄為「值 + 次數」。
- Huffman Coding:高頻資料用短碼、低頻資料用長碼。
考試通常只需理解「不改資料、但更有效表示」的概念。
- 丟棄人眼不敏感的細節(相片:高頻細節/顏色差異)。
- 丟棄人耳不易察覺的聲音成分(音訊:遮蔽效應)。
- 影片同時利用「畫面內」及「相鄰幀」的重複(時間冗餘)。
- 需要反覆編輯(例如剪片、修圖、錄音後混音):盡量保留較高質素,常用無損或較低壓縮的格式作「母檔」。
- 只作播放/分享(例如上載社交平台、串流):可用有損壓縮,換取更小檔案與更快傳輸。
壓縮的核心是:找出資料中的重複/可預測部分(冗餘),用更有效的方式表示。
- 空間冗餘(Spatial):相鄰像素顏色相近(相片/影片畫面內)。
- 時間冗餘(Temporal):相鄰幀差異很小(影片)。
- 統計冗餘(Statistical):某些字元/模式出現得特別頻密(文字、資料)。
無損壓縮主要是「更有效表示」;有損壓縮則會「丟棄不重要資訊」。
JPEG、MP3、MP4 這些格式本身已經是壓縮後的資料,很多冗餘已被移除(甚至已丟棄部分資訊), 因此再用 ZIP 這類無損壓縮,通常再縮小的空間有限,有時甚至可能略為變大(加上壓縮表頭/數據結構)。
有損壓縮每次都可能丟棄細節。若你反覆「解壓 → 再壓縮 → 再儲存」,質素會逐次下降, 這稱為世代損失。
所以編輯多媒體時,應避免反覆用 JPEG/低 bitrate MP3 作中間檔;應保留母檔再輸出。
互動示範:上載圖片/聲音 → 生成 ZIP(無損壓縮)
上載一個圖片檔(例如 JPG/PNG)或聲音檔(例如 MP3/WAV)。系統會即時把它打包成 ZIP 檔(無損壓縮), 並顯示壓縮前後大小,讓你計算「壓縮量」、「壓縮比」及「節省百分比」。
教學提醒:ZIP 對「已經壓縮過」的格式(例如 JPEG、MP3、MP4)通常再壓縮效果有限;對純文字、BMP、WAV 這類未壓縮或可重複模式多的檔案,效果會更明顯。
- 壓縮前大小(Original size):上載檔案的原始大小,例如 8.0 MB。
- 壓縮後大小(Compressed size):系統壓縮後輸出的 ZIP 檔大小,例如 2.0 MB。
- 壓縮量(Size reduced):代表「省咗幾多」,即 Original − Compressed。
小提醒:有時壓縮後可能不變甚至變大(例如格式本身已壓縮,或 ZIP 有表頭/索引開銷)。這時 Size reduced 會變成負數。
計法:壓縮前大小 − 壓縮後大小
例:8.0 MB − 2.0 MB = 6.0 MB(即省咗 6.0 MB)
建議寫清楚單位,並保持兩邊同一單位(例如都用 MB)。
同一題目,老師/書本可能用不同定義,所以最好兩種都識:
- 壓縮後 / 壓縮前:2.0 / 8.0 = 0.25(即剩下 25%)
- 壓縮前 / 壓縮後:8.0 / 2.0 = 4(即 4:1)
計法:(1 − 壓縮後/壓縮前) × 100%
例:(1 − 0.25) × 100% = 75%(即節省 75% 空間)
如果壓縮後反而更大,壓縮率就會變成負數(代表冇節省,反而增加)。
ZIP 屬於無損壓縮。對某些格式(例如 JPEG、MP3、MP4)來說,它們本身已經做過壓縮,冗餘唔多,所以 ZIP 再壓縮效果通常有限。
- 再壓縮效果通常有限:JPEG、MP3、MP4、部分 PNG
- 壓縮效果通常明顯:TXT/CSV、BMP、WAV、程式碼
所以同樣用 ZIP,壓縮比會因「內容」而差好多。
互動示範:長文章 → Base64(原文)→ 壓縮(有損/無損)→ 還原
壓縮後的資料以二進制表示。 這個示範會先把你輸入的文章編碼成 Base64, 再使用你選擇的方法做「壓縮/減少資料」,最後同樣用 Base64 顯示壓縮結果,並示範還原。
提示:Base64 只是「把二進制轉成可顯示文字」的方法,通常會令字串變長;所以比較壓縮效果應主要睇 bytes(原文 UTF‑8 bytes vs 壓縮後 payload bytes)。 另外,有損壓縮會丟棄資料,所以即使「還原」都只可以還原到被保留的版本。
小遊戲:判斷有損或無損壓縮
5.1 文本(Text)
重點
- 文字在電腦中以字符編碼儲存:每個字元對應一個或多個位元組。
- 純文字(Plain Text)只存內容,不包含字體、顏色、粗體等格式。
- 格式化文本會連同格式資訊一併儲存,因此檔案通常較大。
- 同一段文字,使用不同編碼(ASCII/UTF‑8 等)檔案大小可能不同。
電腦不會直接儲存「字形」,而是儲存「字元代碼」。 例如英文在 ASCII 中可用 1 byte 表示;中文在 UTF‑8 常見需要 3 bytes。
- 只保存字元內容:例如 TXT、CSV、原始程式碼。
- 優點:結構簡單、跨平台容易、方便搜尋與處理。
- 限制:不能直接保存粗體、顏色、版面等格式。
格式化文本在內容以外,還會記錄字體、大小、粗體、顏色、段落、圖片等版面資訊, 因此需要額外儲存「格式描述」,檔案體積通常較大。
例子:DOCX、RTF、部分 PDF(同時含字與版面)。
- HTML/XML/Markdown 用文字加上標記(tag/symbol)描述結構。
- 它仍然是文字檔,但透過標記告訴系統:哪裡是標題、段落、粗體等。
- 大致與「字元數」×「每字元 bytes」成正比。
- ASCII(英文字)多為 1 byte;UTF‑8 中文常見 3 bytes。
- 格式化文本會加入額外資料(樣式、字體、物件等),所以同樣字數也可能更大。
一般文本檔案存的是「字元代碼」(例如 Unicode code point),而不是字的外形。 字體(font)負責提供『A』或『我』的具體字形(glyph)。
因此同一段文字可以在不同電腦顯示成不同字體;只要兩邊都有相應字體,內容仍是同一串字元代碼。
- TXT:純文字,最輕巧,最易跨平台。
- CSV:純文字 + 逗號分隔,適合表格數據交換。
- HTML / XML:用標記描述結構,方便網頁/資料交換。
- DOCX:富文本(樣式、版面、圖片等),方便排版,但體積較大。
- PDF:以「呈現版面一致」為主,常用於列印/派發;內容可能是文字或圖片。
題目若問「哪個最易編輯/最小/最易搜尋」,通常 TXT/HTML 這類純文字較有優勢。
即使文字內容相同,DOCX 仍可能較大,因為它同時要儲存:
- 字體、大小、粗體、顏色、段落等格式描述
- 頁面設定、標題樣式、目錄等版面結構
- 插入的圖片、表格、圖表等物件資料
TXT 幾乎只存字元本身;DOCX 除了字元,還要存「怎樣顯示」與「有甚麼物件」。
- 可搜尋:純文字可快速找字詞,亦便於建立索引。
- 可壓縮:文字有大量統計冗餘(重複字詞/模式),無損壓縮通常效果不錯。
- 可分析:電腦可做斷詞、統計、自然語言處理(NLP)等。
純文字(Plain Text)
純文字檔案只儲存字元本身,不包含粗體、顏色等格式資訊。
以上大小假設每個字元以 1 byte 儲存(例如 ASCII)。若含有大量中文字符,使用 Unicode/UTF‑8 時會佔用較多位元組。
格式化文本(Formatted Text)
格式化文本除了字元本身,還會儲存字型、大小、顏色、位置等格式指令。
Word、Google 文件等軟件,會在檔案中加入額外標記,用以記錄你設定過的各種格式。
常見文本檔案格式與比較
- TXT:純文字,只有字元數據;體積最小、幾乎任何裝置都可開啟,但不支援粗體、圖片等格式。
- RTF:Rich Text Format,可儲存基本格式(粗體、字型、段落);結構公開,方便不同文字處理器互通,但檔案較 TXT 大。
- DOC / DOCX:Microsoft Word 文件,可加入圖片、表格、頁首頁尾、批註等複雜排版,適合作為可編輯工作檔;但格式較複雜,舊版軟件兼容性要留意。
- PDF:Portable Document Format,版面在不同裝置上看起來幾乎完全一致,不容易被直接修改,適合作為發佈或列印用檔案。
- HTML / HTM:網頁檔案,以標籤(<h1>、<p> 等)描述結構,可內嵌圖片、影片和超連結,需要瀏覽器解讀。
- Markdown(.md):以 #、*、[]() 等符號表示標題、列表、粗體和連結,易於閱讀與版本控制,常見於 GitHub README。
粗略而言:TXT/MD → 側重內容、DOCX/RTF → 側重可編輯格式、PDF → 側重發佈與列印。
文本檔案格式小遊戲
5.2 圖像(Image)
重點
- 數碼圖像(Raster)由大量像素(pixel)組成。
- 解析度(resolution)= 寬 × 高(像素數);像素愈多通常愈清晰,但檔案更大。
- 色深(colour depth)= 每像素用多少 bit;可表示顏色數量 = 2b。
- 未壓縮大小(bytes)≈ 寬 × 高 × 色深 ÷ 8。
- 格式選擇:JPEG(相片,有損)、PNG(圖示/透明,無損)、GIF(少色/動畫)、BMP(未壓縮)。
- Raster(位圖):由像素組成(相片常見);放大會「起格」。
- Vector(向量圖):用數學圖形(線、曲線、形狀)描述;放大不易失真。
例:Logo/圖標適合向量;相片適合位圖。
解析度通常指像素數(例如 1920×1080)。同一張圖片在不同尺寸顯示時, 若被強行放大,像素不夠就會變得模糊/起格。
PPI/DPI 涉及「每吋多少像素/點」的密度概念,題目若有提及需按題意回答。
- 每像素用 b bit 表示顏色 → 可表示 2b 種顏色。
- 24-bit colour:224 = 16,777,216 色(RGB 各 8 bit)。
- 32-bit colour 通常額外多 8 bit 作透明度(Alpha)。
公式:大小(bytes)= 寬 × 高 × 色深(bits) ÷ 8
例:800×600,24-bit:
= 800 × 600 × 24 ÷ 8 = 800 × 600 × 3 = 1,440,000 bytes(約 1.37 MB)
若題目問壓縮後大小,必須再按壓縮比/格式性質處理。
- JPEG:有損,適合相片;壓縮過度會有方塊/模糊(artifact)。
- PNG:無損,適合圖示、文字、需要透明背景。
- GIF:索引色(最多 256 色)+ 可做簡單動畫;不適合相片。
- BMP:多為未壓縮位圖,檔案大但結構簡單。
解析度是像素數(例如 1920×1080),而 PPI/DPI 是「每吋多少像素/點」的密度概念, 必須配合實際顯示/列印尺寸理解。
- 同一張 1920×1080 的圖片:若顯示得很大,像素密度下降,就會較易起格。
- 同一張圖片:若只顯示得較小,像素密度高,就會較清晰。
- 要保留清晰邊緣/文字/透明:PNG(無損)或 SVG(向量)通常較合適。
- 相片分享:JPEG/HEIC(有損)可大幅縮小檔案,但壓縮過度會失真。
- 反覆修圖:建議保存無損或高質母檔(例如 PNG/TIFF),輸出時再轉 JPEG。
選格式的核心是「用途」:清晰度、可否透明、是否需要再編輯、以及檔案大小限制。
已知:寬 1920、 高 1080、色深 24-bit(每像素 24 bit = 3 bytes)。
大小(bytes)= 1920 × 1080 × 24 ÷ 8 = 1920 × 1080 × 3 = 6,220,800 bytes ≈ 5.93 MB(以 1024 換算)。
解析度、色深與檔案大小(示意)
請在上方「示意畫布」中拖曳滑鼠繪畫。不同色深會限制可用顏色:
黑白/4 色/16 色與索引色彩會使用固定色板;當你用色盤揀選其他顏色時,
系統會自動把它「就近取代」為色板內最接近的顏色(顏色量化),並彈出非阻擋提示。
進入 256 色(8-bit) 時,你可以切換灰階與索引色彩兩種概念作比較(灰階是亮度 0–255;索引色彩是 0–255 對應色板顏色)。
你可以嘗試更改寬高(例如由 640×480 改為 640×640),觀察畫布被拉長或壓扁,體會長寬比不一致時圖像會被扭曲。
當圖像色深很低時,每個像素能用的 bit 很少,能表示的「狀態」亦會很少。 所以不是你不想加色,而是像素根本冇位記錄更多顏色。
- 黑白(1-bit):每個像素只有 2 種狀態(0/1)→ 只能是黑 / 白。
- 4 色(2-bit):每個像素只有 2 個 bit → 只有 0–3 共 4 個「索引值」→ 只能對應色板內 4 種顏色。
- 16 色(4-bit):每個像素只有 4 個 bit → 只有 0–15 共 16 個索引值 → 只能用 16 色色板。
同樣都係 8-bit(每像素 8 個 bit),但可以用兩種方式理解:
1) 256 灰階(8-bit grayscale)
- 每個像素用 0–255 表示亮度(0=最黑、255=最白)。
- 適合:黑白相、掃描文件、陰影層次多但不需要顏色的圖。
2) 256 索引色彩(8-bit indexed color)
- 像素仍然係 0–255,但代表「色板中的第幾號顏色」。
- 另有一張色板表(palette)存 256 個顏色(每個顏色通常係 RGB)。
- 適合:卡通風、圖示、像素風、顏色數量可控的圖。
比較關鍵:
- 灰階:像素直接表示亮度 → 不需要色板。
- 索引色:像素只記「第幾號顏色」→ 顏色內容由色板決定。
當原本顏色好多野,但目標模式只能用有限色板(例如 4 色、16 色、或 256 索引色彩)時, 系統就必須做顏色量化:把所有顏色「逼近」到色板內的顏色。
量化做法(概念層面)
- 先決定色板:固定 16 色,或由演算法生成 256 色(palette)。
- 對每個像素/你選擇的顏色,找出與其最接近的色板顏色(可理解為 RGB 差距最小)。
- 用該色板顏色取代原顏色。
你應觀察到的現象
- 顏色會「被迫變成」某幾隻常用色。
- 漸層區域容易出現色帶(banding)。
- 如果有抖動(dithering),會用點狀分佈去「視覺上混色」。
可以把索引色理解為:像素並唔存「顏色」,而係存「號碼」; 顏色本身放喺一張表(palette)入面。要改顏色,可以改 palette 表,而唔使改每個像素。
當色板顏色數量有限(例如 16 色 或 256 索引色)時,漸層位置容易出現 banding(色帶)。
開啟抖動(dithering)可以用點狀分佈去「視覺混色」,減輕色帶;但畫面會變得較粒狀。
圖像檔案大小計算練習(隨機出題)
常見圖像檔案格式與比較
- JPEG(.jpg):有損壓縮,對真實相片非常有效,可大幅減少容量;不支援透明背景,多次重覆儲存會累積壓縮雜訊。
- PNG:無損壓縮,可支援透明度;適合 logo、界面 截圖、含大量文字的畫面;用於照片時檔案通常較大。
- GIF:最多 256 色,支援簡單逐格動畫及 1-bit 透明;適合小型動畫表情,不適合高品質照片。
- SVG:向量圖(Vector),透過路徑與形狀描述圖像,可任意放大不失真;非常適合 icon、logo、簡單圖表。
- BMP:早期點陣圖格式,一般不壓縮;檔案極大,多用於系統內部或臨時圖像,不適合網上分享。
建議:相片 → JPEG、界面 截圖/文字 → PNG、logo/icon → SVG、 簡單動畫 → GIF。
圖像檔案格式判斷遊戲
常見格式:JPEGPNGGIFSVGBMPTIFFHEICAI
5.3 音頻(Audio)
重點
- 數碼音頻來自取樣(sampling)與量化(quantisation)。
- 未壓縮音頻大小取決於:取樣頻率、位元深度、聲道數、時長。
- 常用公式:大小(bytes)= 取樣率 × 位深 × 聲道 × 秒數 ÷ 8。
- WAV/FLAC 多屬無損;MP3/AAC 多屬有損(靠位元率控制大小與音質)。
- MIDI、MusicXML 屬「符號式音樂資料」:記錄音符/演奏事件或樂譜,不等同錄音波形。
- 取樣(Sampling):把連續的聲波,在固定時間間距量度一次振幅。
- 取樣頻率(Sample Rate):每秒取樣次數(Hz),愈高可重現的最高頻率愈高。
- 量化(Quantisation):把取樣到的連續數值,四捨五入到有限級數。
- 位元深度(Bit Depth):每個樣本用多少 bit 儲存;bit 愈多,音量分級愈細緻。
一般概念:取樣率影響「頻率上限」,位深影響「音量精細度」。
- 單聲道(Mono):1 聲道。
- 立體聲(Stereo):2 聲道(左、右)。
- 在其他條件相同下,聲道數翻倍,檔案大小亦大約翻倍。
公式:大小(bytes)= 取樣率(Hz)× 位深(bits)× 聲道 × 時長(s)÷ 8
例:44,100 Hz、16-bit、2 聲道、10 秒:
= 44,100 × 16 × 2 × 10 ÷ 8
= 44,100 × 4 × 10 = 1,764,000 bytes(約 1.68 MB)
- 位元率(bitrate):每秒用多少 bit 來表示壓縮後音訊(例如 128 kbps)。
- 在同一時長下:位元率愈高 → 檔案愈大,通常音質愈好。
- 有些格式支援 VBR(可變位元率),在複雜片段用較高 bitrate、簡單片段用較低 bitrate,以兼顧音質與體積。
- WAV:常見為未壓縮 PCM,音質高但體積大。
- FLAC:無損壓縮,解壓後可還原原始波形。
- MP3:有損壓縮,支援度高;高壓縮可能失真。
- AAC:常見於串流/影片音軌,在相同位元率下通常比 MP3 更有效率。
MIDI(Musical Instrument Digital Interface)並非錄音波形,而是記錄「演奏事件」: 例如音符高低、按鍵時間、力度、樂器音色等。播放時需要音源(synthesizer)把事件「合成」成聲音。
- 優點:檔案極小、易於改音高/節奏/樂器、適合編曲。
- 限制:不包含人聲與真實音色細節;不同音源播放效果可不同。
MusicXML 是以 XML 表示的樂譜資料格式,主要用於不同作曲/打譜軟件之間交換樂譜。 它更接近「寫在譜上的資訊」(音符、拍號、和弦、指法等),而不是聲音波形。
- 適合:樂譜編輯、教學、分析、不同軟件互通。
- 不等同音頻:要聽到聲音,仍需由軟件把樂譜轉為 MIDI/音源播放或輸出音頻。
若取樣率不足,原本的高頻成分可能被「誤判」成較低頻,造成走樣(aliasing)。 這種失真不是簡單的『變細聲』,而是頻率成分被扭曲。
實務上會先用抗走樣濾波把過高頻率濾走,再進行取樣。
位深決定每個樣本可用多少級別表示振幅:例如 8 bit 有 256 級,16 bit 有 65,536 級。 級別愈多,振幅表示愈細緻,量化誤差通常愈小。
- 位深太低:可能出現明顯底噪、細節不足(尤其在細聲部分)。
- 位深較高:更能保留動態範圍(細聲與大聲的差距),但檔案變大。
課程層面理解「位深↑ → 質素↑(通常)→ 檔案↑」即可。
- 取樣率(Hz):每秒取樣次數(未壓縮 PCM 的關鍵參數之一)。
- 位深(bit):每個樣本用多少 bit 表示(未壓縮 PCM 的關鍵參數之一)。
- 位元率(kbps):壓縮後音訊每秒用多少 bit 傳送/儲存(例如 MP3 128 kbps)。
- WAV:多為未壓縮 PCM,音質好但檔案很大,適合錄音原檔/處理中間檔。
- FLAC:無損壓縮,音質與原檔相同但較細,適合保存高音質母檔。
- MP3:有損壓縮,普及度高,適合日常播放/分享,但壓縮過度會失真。
- AAC(常見於 M4A/MP4):有損壓縮,常見於串流與影片音軌,效率通常較佳。
若需要反覆剪接/混音,避免用低 bitrate 的有損格式作工作檔。
聲音參數與檔案大小(計算示範)
位元深度愈大,每個樣本可以記錄更細緻的音量變化;取樣頻率愈高,可以重現的最高音頻愈高。
音頻檔案大小計算練習(隨機出題)
常見音頻檔案格式與比較
- WAV:未壓縮或輕度壓縮的音訊格式,音質最佳,常見於錄音室與系統音效;但檔案體積最大。
- MP3:有損壓縮,支援度極高;適合一般音樂串流及下載,在高壓縮率下會聽到明顯失真。
- AAC:新一代有損壓縮,比 MP3 在相同位元率下通常有更好音質;常見於 YouTube、Apple Music、MP4 影片音軌。
- FLAC:無損壓縮,解壓後與原始錄音完全相同;適合高音質收藏或備份,體積比 WAV 小但仍較 MP3/AAC 大。
- MIDI:事件式音樂資料(非波形錄音),適合編曲與改編;需音源合成播放。
- MusicXML:樂譜資料交換格式,主要用於打譜/教學/分析,並非聲音波形。
WAV/FLAC 適合作母帶與長期收藏,MP3/AAC 則適合日常串流與攜帶。
音頻格式辨識遊戲
常見格式:WAVMP3AACFLAC
5.4 影片(Video)
重點
- 影片可視為「連續多張圖像(幀 / frame)」加上音訊。
- 幀率(fps)愈高畫面更流暢,但資料量通常更大。
- 解析度、色深、時長都會影響影片大小。
- 未壓縮影片非常巨大,因此實務上幾乎一定需要壓縮(codec)。
- 常見容器/格式:MP4(常配 H.264/H.265 + AAC 音訊)。
- 解析度:每幀的像素數(例如 1920×1080)。
- 色深:每像素 bit 數(例如 24-bit)。
- 幀率(fps):每秒幾多幀(例如 30 fps)。
- 時長:影片播放時間。
每幀大小(bytes)≈ 寬 × 高 × 色深 ÷ 8
影片大小(bytes)≈ 每幀大小 × fps × 秒數(再加音訊部分)
因此影片幾乎必須壓縮,否則儲存與傳輸成本非常高。
- 同一幀內有大量相似像素(空間冗餘)。
- 相鄰幀通常差異不大(時間冗餘)。
- 影片壓縮會使用「關鍵幀(I-frame)」+「預測幀」等方式,只記錄變化部分。
- 容器(例如 MP4、MKV):像一個盒子,裝住影片、音訊、字幕、metadata。
- Codec(例如 H.264、H.265):負責如何壓縮與解壓影片資料。
所以同一個 MP4 檔可以用不同 codec;題目要看清楚問的是「容器」定「壓縮方式」。
在壓縮影片中,檔案大小常與位元率成正比: 大小(bits)≈ bitrate(bps)× 秒數。 位元率高通常畫質較好,但檔案較大。
可以把影片理解為「很多張圖像(幀)」:
- 每幀大小(bytes)= 寬 × 高 × 色深(bits) ÷ 8
- 影片大小 ≈ 每幀大小 × 幀率(fps)× 時間(秒)
因此影片若不壓縮,檔案會極大,幾乎不可實用。
- 幀內壓縮(Intra-frame):在同一幀內找重複/可預測部分(像壓縮一張相片)。
- 幀間壓縮(Inter-frame):利用相鄰幀很相似的特性,只記錄「改變了甚麼」。
因此影片壓縮常會有關鍵幀(Key frame / I-frame)與「預測幀」等概念: 大部分幀只存差異,檔案就能大幅縮小。
幀率愈高,動作看起來愈流暢,但資料量亦會增加(未壓縮情況下大致與 fps 成正比)。
- 一般影片/網上影片常見 24/25/30 fps。
- 運動/遊戲畫面可能用更高 fps(例如 60 fps)以提升流暢感。
在壓縮影片中,fps 亦會影響需要多少 bit 才能保持畫質。
對壓縮影片而言,檔案大小常可用: 大小 ≈ 位元率 × 時間(再加少量容器開銷)。
- 位元率高:畫質通常較好,但檔案較大。
- 位元率低:檔案較細,但可能出現方塊/模糊/拖影等失真。
- VBR(可變位元率):複雜畫面用多些 bit,簡單畫面用少些 bit,平均效率較好。
- 容器:例如 MP4、MKV、MOV,是『包裝』,可裝影片、音訊、字幕等。
- 編碼(Codec):例如 H.264/H.265/AV1(影片)、AAC/Opus(音訊),是『壓縮方法』。
所以「同樣是 MP4」也可能畫質/大小差很多,因為裡面的 codec 與 bitrate 不同。
影片 = 多張圖像:幀擷取示範
以下示例影片預設為 demovideo.mp4(1280 × 720)。請先播放到某個位置,
然後按下「擷取多張畫面縮圖」,觀察短時間內擷取到的多張畫面。
系統會由目前播放位置開始,每隔少許時間擷取一幀,合共數張縮圖, 幫助學生理解「影片其實是由很多張連續的圖片(畫面幀)組成」。
未壓縮影片大小計算
實際影片通常會配合 Codec(例如 H.264、H.265)進行壓縮,大幅減少檔案大小。
容器格式(Container)與 Codec 的分別
容器格式(Container) 負責「裝起」影片、音訊、字幕等不同資料;常見副檔名有 .mp4、.mov、.mkv。
- MP4:最常見的通用容器,支援度最高,適合網上串流與手機錄影。
- MOV:由 Apple 推出,與 QuickTime 關係密切,常見於 iPhone/Mac 錄製影片。
- MKV:Matroska 容器,可同時儲存多音軌、多字幕,常用作收藏電影/動畫。
Codec(編解碼器) 決定「如何壓縮」每一幀畫面及音訊。
- H.264/AVC:現今最普及的視訊 Codec,畫質與壓縮率平衡,硬件支援成熟。
- H.265/HEVC:比 H.264 有更高壓縮率,適合 4K/8K 影片,但舊裝置可能不支援。
- VP9:Google 推出的開源 Codec,常用於 YouTube 高畫質串流。
- AV1:更新一代開源 Codec,壓縮效率更高,Netflix、YouTube 等串流平台正逐漸採用。
一個影片檔(例如 .mp4) = 容器格式 + 視訊 Codec + 音訊 Codec + 字幕等內容。
Container(容器格式)好似「包裝盒/文件夾」:負責把多條資料流放入同一個檔案,並記錄它們點樣排列、點樣同步。
Codec(編解碼器)好似「壓縮方法/翻譯方法」:負責把影片或聲音資料壓縮(encode)同解壓/還原(decode)。
一個影片檔通常唔止得「影片畫面」,仲可能包含:
- 視訊流(Video stream):例如 H.264 / H.265 / AV1
- 音訊流(Audio stream):例如 AAC / MP3 / Opus
- 字幕(Subtitles):可以有多種語言
- 章節(Chapters):例如「第 1 章 / 第 2 章」
- 封面(Cover art):例如音樂影片/動畫封面
- Metadata:標題、作者、拍攝日期、旋轉資訊(手機直拍)等
- 時間碼/索引(Index):方便快進、回帶、跳章節
所以 container 最重要係:同步(畫面同聲音要對得準)同 管理(多音軌/字幕/資訊)。
Codec 會利用人眼/人耳特性與資料冗餘,把資料變細。以影片為例:
- 幀內壓縮:同一張畫面入面,有好多相似像素(例如一大片天空),可以用更少資料表示。
- 幀間壓縮:相鄰畫面通常差唔多,只需要記錄「變化」部分。
以聲音為例(有損):會移除人耳較難察覺的細節,換取更細檔案。
重點:同一個 codec,因為參數(bitrate、profile、解析度、fps)不同,檔案大小同畫質都可以差好遠。
好多人會講「呢條片係 MP4」,但 MP4 多數只講緊容器。 影片真正用咩壓縮方式,要睇裡面係 H.264、H.265、AV1……(呢啲先係 codec)。
實務上你可以用 MediaInfo、播放器的詳細資訊,或檔案屬性查看「Codec」。
- 同一 container 裝唔同 codec:例如 MP4 可以裝 H.264 + AAC;亦可能裝 H.265 + AAC。
- 同一 codec 放入唔同 container:例如 H.264 既可以放入 MP4,亦可以放入 MKV(視乎支援)。
但要留意:支援度取決於「播放器/裝置」+「container 支援」+「codec 支援」。 有時檔案副檔名一樣(例如都係 .mp4),但某部舊裝置可能播唔到,原因係 codec 不支援。
壓縮影片大小常近似: 大小(bits)≈ Bitrate(bps)× 時間(s)(再加少量容器開銷)。
- 所以「同樣係 MP4」都可以:一個 20MB,一個 200MB。
- 差別多數係:codec + bitrate + 解析度 + fps + 編碼設定。
教學上可以提醒學生:副檔名只係外殼;真正影響畫質/大小的是裡面點編碼。
影片檔案大小計算練習
容器格式與 Codec 小遊戲
常見容器格式:MP4MOVMKV
常見視訊 Codec:H.264 / AVCH.265 / HEVCVP9AV1