歡迎來到數據表示(Data Representation)!
你有沒有想過,一部電腦明明只能理解「1」和「0」,卻能為你播放高清電影或你最愛的歌曲?在本章中,我們將探討現實世界中的數據(如圖像和聲音)是如何轉換成電腦可以處理的二進制模式(bit patterns)。別擔心,即使起初有些數學計算看起來很棘手——我們會帶你一步步拆解!
1. 模擬(Analogue)與數碼(Digital)
在儲存數據之前,我們需要了解它是哪種類型。在現實世界中,大多數事物都是模擬(Analogue)的。這意味著它們是連續(continuous)的,具有無限的可能數值。想像一下傳統的旋轉調光開關,你可以將其滑動到任何亮度等級。而數碼(Digital)數據則是離散(discrete)的,意味著它只有特定、分隔的數值(就像開/關按鈕一樣)。
模擬轉數碼轉換(ADC)
由於電腦無法儲存無限的「模擬」波形,它們使用模擬轉數碼轉換器(Analogue to Digital Converter, ADC)。該裝置會定期對模擬訊號進行「採樣」(sampling),並將其轉換為二進制數值。你可以在模擬感應器(如溫度計)和麥克風中找到 ADC 的身影。
為了將聲音播放出來,我們使用數碼轉模擬轉換器(Digital to Analogue Converter, DAC)。它將二進制位元模式轉回連續訊號,讓喇叭可以藉此推動空氣產生聲音。
快速回顧:
• 模擬(Analogue): 連續的(現實世界)。
• 數碼(Digital): 離散/二進制的(電腦)。
• ADC: 模擬輸入 → 二進制輸出。
• DAC: 二進制輸入 → 模擬輸出。
2. 圖像表示
電腦表示圖像主要有兩種方式:點陣圖(Bitmaps)和向量圖(Vectors)。
點陣圖(Bitmapped Graphics)
點陣圖就像一張方格紙,每一個小方格(稱為像素 Pixel)都填滿了特定的顏色。
點陣圖關鍵術語:
• 解像度(Resolution): 每英吋的像素數量(通常稱為每英吋點數 DPI)。解像度越高,圖像就越清晰。
• 像素尺寸(Size in Pixels): 計算方式為 \( \text{width} \times \text{height} \)。
• 色深(Colour Depth): 用來表示單個像素顏色的位元(bits)數。如果使用 1 bit,就只能有 2 種顏色(黑和白)。如果使用 8 bits,則可以有 \( 2^8 = 256 \) 種顏色。
計算儲存需求:
要找出點陣圖檔案的大小(不計算中繼資料 Metadata),請使用以下公式:
\( \text{Storage Requirement} = \text{Width in pixels} \times \text{Height in pixels} \times \text{Colour Depth} \)
例子:一張 100x100 像素、色深為 8 bits 的圖像。
\( 100 \times 100 \times 8 = 80,000 \text{ bits} \)。要換算成位元組(bytes),請除以 8:\( 10,000 \text{ bytes} \)。
向量圖(Vector Graphics)
與其儲存每個像素,向量圖儲存的是一系列物件列表(list of objects)。每個物件(例如圓形、直線或矩形)都有各自的屬性(properties),如位置、線條粗細和顏色。
類比:點陣圖就像一張蛋糕的照片;而向量圖則是烘焙該蛋糕的食譜。
點陣圖 vs 向量圖:
• 點陣圖最適合照片,因為照片中的每個像素顏色可能都不同。當你放大時,它們會出現「鋸齒」(模糊)。
• 向量圖最適合標誌(logos)、字型和圖示。它們可以無限放大到摩天大樓般大小也不會失真,而且檔案大小通常小得多!
你知道嗎? 點陣圖檔案還包含中繼資料(Metadata)。這是「關於數據的數據」——即額外的資訊,如圖像寬度、高度、色深以及拍攝日期。
3. 聲音表示
要將聲波轉換為數字,我們會在特定的時間點對其振幅(高度)進行「採樣」。
採樣原則
• 採樣率(Sampling Rate): 每秒採樣的次數,以赫茲(Hz)為單位。
• 採樣解像度(Sample Resolution): 用來儲存每個採樣數值的位元數。位元數越多,記錄波形「高度」的準確度就越高。
奈奎斯特定理(Nyquist Theorem): 為了準確記錄聲音,採樣率必須至少是聲音中最高頻率的兩倍。
\( \text{Sampling Rate} \ge 2 \times \text{Highest Frequency} \)
計算音訊檔案大小:
\( \text{Size in bits} = \text{Sampling Rate} \times \text{Sample Resolution} \times \text{Seconds} \)
樂器數碼介面(MIDI)
MIDI 並不是聲音的錄音!它是一組事件訊息(event messages)(指令),告訴數碼樂器該播放什麼。它儲存的內容包括「音符開啟(Note On)」、「音符關閉(Note Off)」、「音高(Pitch)」和「音量(Volume)」。
MIDI 的優點:
• 檔案非常小(適合慢速網絡或舊裝置)。
• 易於編輯(你可以瞬間將鋼琴音色改為結他音色)。
• 不會錄入任何背景雜音。
4. 數據壓縮
4K 影片等檔案太大,難以傳送,因此我們使用壓縮(compression)來縮減其體積。
有損(Lossy)與無損(Lossless)壓縮
• 有損壓縮(Lossy Compression): 永久刪除人類可能察覺不到的數據(例如極高頻的聲音或細微的色彩變化)。例子:JPEG, MP3。
• 無損壓縮(Lossless Compression): 在不丟失任何數據的情況下縮小檔案。當你「解壓縮」時,它與原始檔案完全相同。例子:PNG, ZIP。
無損壓縮技術
1. 遊程編碼(Run Length Encoding, RLE): 與其儲存「AAAAA」,它會儲存「5A」。這對於含有大面積相同顏色的圖像非常有效。
2. 字典編碼(Dictionary-based methods): 電腦會建立一個常見模式的「字典」。與其重複儲存整個模式,它只需儲存該模式在字典中的簡短參照編碼即可。
常見誤區: 學生常以為有損壓縮總是「壞的」。實際上,它對於串流影片或音樂非常有用,因為它能將檔案縮小到足以透過互聯網即時傳輸!
5. 加密(Encryption)
加密是將數據擾亂的過程,只有持有正確金鑰(key)的人才能讀取。原始訊息稱為明文(plaintext),而擾亂後的訊息稱為密文(ciphertext)。
凱撒密碼(Caesar Cipher)
這是一種簡單的「位移」密碼。例如,位移值為 3 時,'A' 會變成 'D'。
弱點: 使用頻率分析(frequency analysis)(統計字母出現的頻率)或僅嘗試所有 25 種可能的位移(暴力破解)非常容易破解。
維納姆密碼(Vernam Cipher / One-Time Pad)
維納姆密碼是唯一能提供完美安全性(perfect security)的密碼,前提是必須遵守以下規則:
• 金鑰必須是真正隨機的。
• 金鑰長度必須至少與明文一樣長。
• 金鑰只能使用一次(因此稱為「一次性密碼本」)。
在維納姆密碼中,明文與金鑰會使用互斥或(XOR)邏輯運算進行結合。由於金鑰是隨機的,產生的密文也完全隨機,若沒有金鑰,根本無法破解。
關鍵要點:
凱撒密碼依賴於演算法的隱蔽性(這很容易被猜到),而維納姆密碼則依賴於運算安全性(computational security)和金鑰的隨機性。