核心原則:一切數字化
計算機只識別 0 和 1,指令、數據、圖片、文本、聲音……全部轉換為二進制位流存儲、傳輸、顯示。
整數表示:原碼、反碼、補碼
- 符號位:最高位 0=正,1=負
- 正數:原碼 = 反碼 = 補碼
- 負數 (以 8 位為例,-8):
- 原碼:
1 0001000 (符號位 + 絕對值)
- 反碼:
1 1110111 (符號位不變,數值位取反)
- 補碼:
1 1111000 (反碼 + 1,計算機實際存儲形式)
- 規律:補碼的補碼 = 原碼 (雙重取反還原)
為什麼用補碼?
- 統一加減法電路:減法 = 加上負數補碼
- 唯一表示 0:
00000000 (原碼有 +0/-0 兩種)
- 擴展位數簡單:符號位延伸 (正數補 0,負數補 1)
字符表示:編碼與字符集
- 本質:字符 → 編號 (整數) → 二進制存儲
- 字符集:編號規則表
- ASCII:128 字符 (7 位),英文基礎
- GB2312:簡體中文 6763 字符
- BIG5:繁體中文
- Unicode:統一碼,涵蓋全球字符,Java 內部默認使用
- 字符可運算:運算的是編碼值 (
'A' + 1 = 'B')
- 顯示:需字體文件將編碼渲染為字形
小數存儲 (IEEE 754)
浮點數 = 符號位 + 指數位 + 尾數位,非定點表示,存在精度誤差 (如 0.1 無法精確表示)。
總結
理解「數字化」思想是編程進階基石:
- 類型轉換本質是二進制位模式重新解讀
- 位運算直接操作底層位模式
- 編碼問題本質是字符集映射不一致
- 浮點誤差源於二進制無法精確表示十進制小數