1. 數字系統(Number Systems)
1.1 常見數字系統
系統 | 基數 | 符號集 | 示例 | 應用場景 |
---|---|---|---|---|
二進制 | 2 | 0, 1 | 1010 | 計算機底層電路、數據存儲 |
八進制 | 8 | 0-7 | 17 | Unix文件權限(如chmod 755 ) |
十進制 | 10 | 0-9 | 42 | 日常計算 |
十六進制 | 16 | 0-9, A-F | 0x1F | 內存地址、顏色編碼(#RRGGBB) |
1.2 進制轉換方法
- 其他進制 → 十進制:加權求和
1010_2 = 1×2^3 + 0×2^2 + 1×2^1 + 0×2^0 = 10_{10}
- 十進制 → 其他進制:短除法取余
42_{10} \rightarrow 42÷2=21余0 → 21÷2=10余1 → ... → 101010_2
- 二進制 ? 十六進制:4位分組轉換
1101\_0110_2 → D6_{16}
2. 數據編碼(Data Encoding)
2.1 數值編碼
編碼類型 | 表示方法 | 范圍(8位) | 特點 |
---|---|---|---|
原碼 | 最高位為符號位(0正1負) | -127 ~ +127 | 零有+0 和-0 兩種表示 |
反碼 | 負數:符號位不變,其余位取反 | -127 ~ +127 | 過渡方案,現較少使用 |
補碼 | 負數:反碼+1 | -128 ~ +127 | 現代計算機標準,消除零歧義 |
移碼 | 補碼符號位取反 | -128 ~ +127 | 用于浮點數階碼(如IEEE 754) |
示例:
-5
的8位補碼表示:原碼:1000 0101 → 反碼:1111 1010 → 補碼:1111 1011
2.2 字符編碼
標準 | 覆蓋范圍 | 存儲方式 | 局限性 |
---|---|---|---|
ASCII | 英文、數字、控制字符(128個) | 1字節(7位) | 無法表示非拉丁字符 |
Unicode | 全球文字(如中文、emoji) | UTF-8(變長1-4字節) | 兼容ASCII,互聯網首選 |
GB2312 | 簡體中文(6763個漢字) | 2字節 | 僅支持簡體中文 |
UTF-8編碼規則:
- 1字節:
0xxxxxxx
(兼容ASCII) - 2字節:
110xxxxx 10xxxxxx
- 3字節:
1110xxxx 10xxxxxx 10xxxxxx
- 4字節:
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
3. 高級編碼技術
3.1 浮點數編碼(IEEE 754)
\text{值} = (-1)^S × 1.M × 2^{E-127}
- 32位單精度:
S(1位) | E(8位) | M(23位)
- 示例:
-0.75
的二進制表示:符號位S=1,0.75=1.1×2^{-1} → E=126(01111110), M=1000...0 最終:1 01111110 10000000000000000000000
3.2 錯誤檢測編碼
- 奇偶校驗:附加1位使1的個數為奇/偶
數據:1010 → 偶校驗:1010_0(1的個數為偶數)
- CRC循環冗余校驗:多項式模2除法(用于網絡傳輸)
- 漢明碼:可糾正單比特錯誤的糾錯編碼
4. 實際應用案例
4.1 計算機內存存儲
- 小端序(Little Endian):低位字節存儲在低地址
32位整數0x12345678在內存中的存儲(地址遞增方向): 78 56 34 12
4.2 圖像顏色編碼
- RGB24位色:
R(8位) | G(8位) | B(8位) → 如純紅色:0xFF0000
- ARGB32位色:增加透明度通道(Alpha)
4.3 條形碼與二維碼
- EAN-13條形碼:13位數字(前導位+左右數據+校驗位)
- QR碼:使用Reed-Solomon糾錯編碼,支持漢字(需UTF-8轉換)
5. 關鍵問題與解決方案
Q1: 為何計算機使用補碼表示負數?
- 解決零的歧義:補碼中
+0
和-0
表示相同(均為000...0
) - 簡化運算電路:加法器無需區分正負數,統一處理(如
5 + (-3)
可直接相加)
Q2: UTF-8如何實現變長編碼?
- 前綴碼設計:通過起始比特模式標識字節數(如
110
開頭的必為2字節字符首字節) - 兼容性:ASCII字符(0-127)保持單字節不變
總結
數字系統與編碼是計算機科學的基石,理解其原理對以下領域至關重要:
- 硬件設計(如CPU算術單元)
- 數據壓縮(如哈夫曼編碼)
- 網絡安全(如校驗和驗證)
- 跨平臺數據交換(如字符編碼轉換)
掌握進制轉換、補碼運算和Unicode處理能力,是開發者的核心技能之一。