# 資料表示原理：編碼、儲存與傳輸

::: tip 前言
當你給朋友發一張照片、發一條微信，或者下載一個幾 GB 的遊戲時，這些資訊是怎麼穿過大半個地球、完好無損地出現在你的螢幕上的？本章节會圍繞一個經常困擾新手的問題展開：**為什麼我收到的檔案變成了亂碼？**
:::

**這篇文章會帶你學什麼？**

學完這章後，你將獲得：

- **亂碼排查能力**：遇到「檔案打開是亂碼」時，能從編碼角度分析原因
- **跨平台意識**：處理資料交換時，知道為什麼要關注編碼格式和位元組序
- **編碼世界觀**：理解電腦如何用 0 和 1 表示世間萬物
- **後續學習基礎**：為網路協定、檔案格式、序列化技術打下基礎

| 章节 | 內容 | 核心概念 |
|-----|------|---------|
| **第 1 章** | 字元編碼 | ASCII、UTF-8、GBK |
| **第 2 章** | 資料儲存 | 二進位、位元組序 |
| **第 3 章** | 資料傳輸 | 序列化、壓縮 |

---

## 0. 引言：資料編碼常見問題

想象一下，你收到一份重要的同事發來的檔案，雙擊打開一看，裡面全是奇怪的文字。

直覺上，你肯定覺得：是不是檔案在傳送的過程中損壞了？

但實際上，絕大多數所謂的「檔案損壞」，真相只有一個——**你的電腦「沒找對閱讀規則」**。

**動手試試看**：

<GarbledTextDemo />

**核心領悟：沒對齊的密碼本**

位元組（0和1序列）本身是沒有絕對意義的，是人類制定的**「編碼規則」**賦予了它們意義。

**發件人用 UTF-8 密碼本把漢字翻譯成了數字發給你，你如果硬要用 GBK 密碼本去解讀這些數字，拼出來的當然全是亂碼。**

---

## 1. 資料編碼概述

> **資料編碼（Encoding）**，就是建立一本「雙向翻譯詞典」，把現實世界中複雜多樣的資訊（文字、色彩、聲音），強制對應成電腦能理解的 0 和 1 的規則。

### 1.1 把文字變成數字：從 ASCII 到萬國碼

**第一階段：ASCII 的小天地**

美國人制定了一本很薄的密碼本叫做 **ASCII 碼**。它只規定了 128 個符號。

**第二階段：群雄割據的戰國時代**

後來，電腦走向了世界。大家發現：**漢字有幾萬個，日本還有假名，光靠 1 個位元組根本裝不下！**

於是，中國搞了 GBK 密碼本，日本搞了 Shift_JIS……世界陷入了混亂。

**第三階段：天下一統的 Unicode（萬國碼）**

最後，電腦界的大神們坐在一起商量，做一本收錄地球上所有符號的超級大字典，這就是 **Unicode（萬國碼）**。而你經常聽到的 **UTF-8**，就是 Unicode 字典目前最流行的一套「儲存規則」。

**動手試試看**：

<CharacterEncodingExplorer />

**驚奇發現**：
- 一個英文字母在 UTF-8 裡只佔 **1 個位元組**
- 一個普通漢字通常佔 **3 個位元組**
- 一個 Emoji 表情（🎉），竟然需要 **4 個位元組**！

### 1.2 多媒體資料編碼

* **圖片的編碼**：
  把一張照片無限放大，它其實是由幾百萬個發光的小方塊（像素）組成的。
  <ImageEncodingDemo />

* **聲音的編碼**：
  聲音本質是空氣的震盪波。如果我們每秒去測量這個波浪的高度 44100 次（取樣），連續的聲波就變成了離散的數字陣列。
  <AudioEncodingDemo />

---

## 2. 儲存層次結構

為了用盡可能少的錢換取盡可能快的電腦執行速度，電腦科學家設計了**「儲存層次結構」**（儲存金字塔）。

<StoragePyramidDemo />

**核心領悟：作業系統的搬運工哲學**

世界上沒有完美的儲存器。因此，作業系統（如 Windows, macOS）就像一個極度聰明、一刻不停的倉庫管理員：

1. 它把海量的電影、遊戲塞在速度慢、容量大（便宜）的倉庫——**SSD 或機械硬碟**裡。
2. 當你要玩遊戲時，它趕緊把相關的檔案，從硬碟搬到速度極快但容量有限的操作台——**記憶體（RAM）**上。
3. 當你關閉遊戲時，它再把記憶體清空，騰出操作台給別的檔案用。

---

## 3. 資料傳輸概述

### 3.1 硬體與區域網路傳輸：一條導線的物理極限

今天手機的 Type-C、外部的 USB 和主機板內部的 PCIe 介面，用的全都是**串列傳輸（Serial）**。

<DataTransmissionDemo />

**串列介面優勢的原理**

並排的幾根線上的微弱電流會產生極強的電磁波互相干擾（串擾 Crosstalk）；而且你根本無法保證傳送端同時發出的 8 個訊號，能完美**同時**到達終點線。

所以，與其花天價去調平 8 條賽道，不如把所有技術資源砸在 1 輛跑車上，把它拉到光速。這就是串列介面一統天下的物理真相。

### 3.2 廣域網路傳輸機制

當你用微信傳送 1GB 的超大影片時：

1. **分包（Packetization）**：網路會把影片切成幾萬個信封大小的「資料包」。
2. **校驗和（Checksum）**：為防止途中資料損壞，系統會計算一個「特徵碼」貼在上面。
3. **TCP 重發與確認**：接收方拿到信封，先驗算一遍特徵碼。如果不對，就會要求重發。

正因為有了 **TCP（傳輸控制協定）** 的極其嚴密的切包對帳機制，你在不穩定的 WiFi 下下載檔案，下載完的那一瞬間，檔案也必定是 100% 完整、0 損壞的。

---

## 4. 應用實例：照片上傳流程

<PhotoUploadJourneyDemo />

---

## 5. 名詞對照表

| 術語 / 縮寫 | 簡單解釋 |
| :--- | :--- |
| **Bit (b)** | 位元 / 位。電腦世界最小的單位，只能是 0 或者 1。 |
| **Byte (B)** | 位元組。8 個 Bit 捆在一起就是一個 Byte。 |
| **Character Set** | 字元集。像是「字典的目錄」。 |
| **Encoding** | 編碼。具體的「儲存規則」。 |
| **RAM** | 記憶體 / 執行記憶體。極其快速但斷電就清空的工作台。 |
| **SSD** | 固態硬碟。現代電腦負責永久儲存資料的倉庫。 |
| **Serial / Parallel** | 串列 / 並列。串列是一條通道挨個排隊飛奔；並列是多條通道齊頭並進。 |
| **Checksum** | 校驗和。傳輸資料時附帶的驗證碼。 |
| **TCP** | 傳輸控制協定。網際網路的基石協定。 |

---

## 總結

電腦的本質其實非常樸素：

**它不過是一個擅長把所有的光影文字「轉換（編碼）」、放在某個矽片裡「保管（儲存）」、然後再把它切碎成電平脈衝「郵寄出去（傳輸）」的機器**。

讀懂了這個循環往復的過程，你就真正握住了推開電腦底層原理大門的那把鑰匙。
