💡 歡迎來到數據儲存與壓縮的世界!

各位 IGCSE 電腦科學的同學好!本章節將帶你深入了解數據如何佔用空間,以及我們如何將數碼檔案「瘦身」,在不損害品質(或者在可接受的品質損耗下)的情況下,節省龐大的儲存空間。

理解數據儲存是電腦科學的基礎。無論你是要處理超大圖片、長錄音檔案,還是進行網絡規劃,你都需要掌握如何測量及管理這些數碼容量。

1. 數據儲存的測量(數碼層級)

在計算檔案大小之前,我們需要一套共同的語言。這就像測量液體(毫升、公升)或距離(米、公里)一樣,數碼數據也有它專屬的單位!

1.1 基本單位

位元 (Bit, b)

數據的最小單位。單個二進位數字:即一個 01

半字節 (Nibble)

4 個位元 (bits) 組成的集合。(你知道嗎?因為它是 byte 的一半,所以被命名為 nibble!

字節 (Byte, B)

8 個位元 (bits) 組成的集合。這是測量大多數字符(如 'A'、'?' 或 '5')的基本單位。

1.2 大容量儲存單位(1024 規則)

在電腦科學中,這些大型儲存單位是以 1024 為進位倍數,而不是 1000。為什麼是 1024?因為 1024 是 \(2^{10}\),它是 2 的冪次方,這與電腦處理二進位的方式完美契合。

警告:常見錯誤提醒!
課程大綱要求你在所有涉及大型單位的計算中必須使用 1024,而不是 1000。

單位縮寫大小(基於下方單位)
ByteB8 bits
KibibyteKiB1024 Bytes
MebibyteMiB1024 KiB
GibibyteGiB1024 MiB
TebibyteTiB1024 GiB
PebibytePiB1024 TiB
ExbibyteEiB1024 PiB

*記住:在考試中,試題會使用基於 1024 的二進位前綴(KiB, MiB, GiB)。

重點總結(第一節)

數據儲存從 位元 (bit) 開始計算。較大的單位以 1024 (2 的冪次方) 為進位倍數。計算時務必使用 1024!

2. 計算檔案大小

檔案的大小完全取決於需要多少二進位數據來呈現它。我們將看看如何計算未壓縮圖片和音訊檔案的大小。

2.1 圖片檔案大小計算

要確定未壓縮圖片的大小,我們需要兩個主要因素:解像度 (Resolution)色彩深度 (Colour Depth)

解像度

這是圖片中 像素 (pixels) 的總數(闊度 x 高度)。

色彩深度

這是指 用於表示每個像素顏色的位元數量

  • 如果圖片的色彩深度為 1 bit,它只能儲存兩種顏色 (\(2^1\)),通常是黑與白。
  • 如果圖片的色彩深度為 8 bits,它可以儲存 256 種顏色 (\(2^8\))。
  • 如果圖片的色彩深度為 24 bits,它可以儲存超過 1600 萬種顏色 (\(2^{24}\))。

類比:將色彩深度想像成你擁有的蠟筆數量。位元(蠟筆)越多,你能畫出的細節和變化就越多,但圖片就需要更大的空間來存放這些蠟筆資訊。

公式(圖片檔案大小)

$$ \text{檔案大小 (bits)} = \text{圖片闊度 (pixels)} \times \text{圖片高度 (pixels)} \times \text{色彩深度 (bits)} $$

逐步計算範例:
一張圖片解像度為 100 x 50 像素,色彩深度為 8 bits。請計算以 Bytes 為單位的檔案大小。

  1. 計算總像素: \(100 \times 50 = 5000\) 像素
  2. 計算總位元: \(5000 \times 8 \text{ bits/pixel} = 40,000\) bits
  3. 轉換為 Bytes (除以 8): \(40,000 / 8 = 5000\) Bytes

2.2 音訊檔案大小計算

錄音是透過對聲波進行「快照」來完成的,這個過程稱為 取樣 (sampling)。音質的好壞取決於取樣的頻率和解析度。

取樣率 (Sample Rate)

每秒取樣的次數,以赫茲 (Hz) 為單位。
影響:較高的取樣率(每秒更多的快照)意味著錄製的聲波越接近原始聲音,提高了錄音的 準確度,同時也會增加 檔案大小

取樣解析度 (Sample Resolution / Bit Depth)

每個樣本中 用於儲存振幅(音量)的位元數量
影響:較高的取樣解析度意味著可以儲存更寬廣的振幅範圍,提高了錄音的 準確度,同時也會增加 檔案大小

注意:你還必須考慮 曲目長度(以秒為單位),以及聲音是 單聲道 (Mono)(1 軌)還是 立體聲 (Stereo)(2 軌)。除非題目特別說明,否則預設為單聲道。

公式(音訊檔案大小)

$$ \text{檔案大小 (bits)} = \text{取樣率 (Hz)} \times \text{取樣解析度 (bits)} \times \text{時長 (秒)} $$

逐步計算範例:
一段 30 秒的單聲道音軌,以 44,100 Hz (取樣率) 錄製,取樣解析度為 16 bits。請計算以 Mebibytes (MiB) 為單位的檔案大小。

  1. 計算總位元: \(44,100 \times 16 \times 30 = 21,168,000\) bits
  2. 轉換為 Bytes (除以 8): \(21,168,000 / 8 = 2,646,000\) Bytes
  3. 轉換為 KiB (除以 1024): \(2,646,000 / 1024 \approx 2584\) KiB
  4. 轉換為 MiB (除以 1024): \(2584 / 1024 \approx 2.52\) MiB

重點總結(第二節)

影像與聲音的品質(以及檔案大小)會隨著 解像度/取樣率色彩/取樣深度 的提升而增加。請務必記得將 bits 轉換為 Bytes(除以 8),並在轉換較大單位時使用 1024。

3. 數據壓縮

數碼檔案通常包含大量重複或不必要的資訊。壓縮 (Compression) 的目的是為了減少檔案大小,使儲存和傳輸更有效率。

3.1 壓縮的目的與必要性 (1.3.3)

為什麼我們要壓縮數據?

  • 減少儲存空間需求: 大型檔案在硬碟或雲端佔用的空間更少。
  • 減少頻寬需求: 數據流變小,這對於網上串流影片或下載檔案至關重要。
  • 縮短傳輸時間: 較小的檔案傳輸速度更快,提升發送電郵或上傳時的效能。

3.2 有損壓縮 (Lossy Compression) (1.3.4)

定義

有損壓縮 會透過 永久刪除 對人類感知較不重要的數據(例如高頻聲音或細微的顏色變化)來減少檔案大小。

檔案大小的減幅通常很大,但原始數據 無法 被完全還原。

數據刪除範例:
  • 圖片 (JPEG): 降低 色彩深度解像度
  • 聲音 (MP3): 降低 取樣率取樣解析度
  • 移除人耳/人眼幾乎無法察覺的極高頻或極低頻資訊。

類比:有損壓縮就像閱讀小說的摘要。你保留了主要情節(重要數據),但你失去了精確的遣詞用字和細節(不那麼重要的數據)。你無法僅憑摘要就還原出整本小說。

3.3 無損壓縮 (Lossless Compression) (1.3.4)

定義

無損壓縮 會透過尋找規律並以更有效率的方式對數據進行編碼來減少檔案大小,但 不會永久刪除任何數據

原始檔案可以在壓縮後被精確還原。檔案大小的減幅通常比有損壓縮要小。

主要方法:遊程編碼 (Run Length Encoding, RLE)

RLE 是一種簡單的無損壓縮形式,常用於包含大量重複內容的檔案(如簡單的位圖影像,其中會出現長排相同的顏色)。

RLE 的運作方式(逐步說明):

  1. RLE 不會儲存一長串相同的數據值,而是記錄數據值及其重複出現的次數(即「遊程長度」)。
  2. 原始數據序列被較短的數對取代:(次數, 數值)

RLE 範例:
想像一列像素如下:

B B B B B W W W R R R R R R R

未壓縮時,這是 15 個數據單位。

使用 RLE,我們將其編碼為:
(5, B) (3, W) (7, R)

這僅需 6 個數據單位(三對數值),達到了顯著的壓縮效果!

無損範例:
  • 文字檔案 (ZIP, RAR): 文字必須被完美還原,因此必須使用無損方法。
  • 圖片 (PNG, GIF): 用於需要確保圖像品質完整性的場合。
快速複習:有損 vs 無損

有損 (Lossy):你會 丟失 (lose) 數據。用於圖片 (JPEG) 和聲音 (MP3)。適合追求最大程度縮減檔案大小。

無損 (Lossless):你 丟失得較少 (lose less)(不會永久丟失數據)。用於歸檔 (ZIP) 和高畫質圖像 (PNG)。使用如 RLE 等方法。