# Codec - 編碼理論
`src/pager/codec.rs`
## 編碼理論背景
編碼 (Encoding) 將結構化資料轉換為位元組序列:
```
應用層資料 → [編碼] → 傳輸/儲存格式
傳輸/儲存格式 → [解碼] → 應用層資料
```
## 錯誤檢測
### 校驗和 (Checksum)
簡單的錯誤檢測機制:
```
資料: [0x12, 0x34, 0x56]
校驗: 0x12 + 0x34 + 0x56 = 0x9C
```
缺點:無法檢測交換錯誤(如 0x12, 0x34, 0x34)
### CRC (Cyclic Redundancy Check)
更強的錯誤檢測:
- 基於多項式除法
- 可檢測突發錯誤
- 檢測 1-2 位錯誤
本專案使用簡單的校驗和。
## 資料對齊 (Alignment)
| 對齊訪問 | CPU 期望資料在特定邊界 |
| 跨平台 | 不同平台的對齊要求不同 |
建議:資料按其自然邊界對齊。
## 頁面校驗和放置
校驗和放在頁面開頭或結尾?
| 開頭 | 容易讀取 | 修改資料時需更新 |
| 結尾 | 計算後再寫入 | 讀取時需計算後再驗證 |
本專案放在開頭。
## 大端序 vs 小端序
| Big-endian | 12 34 56 78 |
| Little-endian | 78 56 34 12 |
網路協定使用 Big-endian(網路序)。
## 負數表示
### 二補數 (Two's Complement)
```
+1 = 00000001
-1 = 11111111
```
優點:加法電路可處理正負數。
## 理論參考
- Tanenbaum, "Computer Architecture"
- Stallings, "Computer Organization and Architecture"
- RFC 1071: Computing the Internet Checksum