程序本質上是在操作內存中的 0/1 模式。理解存儲單位、二進制表示、補碼、進制轉換,是寫出高效、無 Bug 代碼的內功。本文從硬件邏輯出發,層層遞進講解 Bit/Byte/KB/MB/GB、二進制算術、八/十六進制互轉,最後送上經典程序員笑話驗證學習成果。
| 單位 | 符號 | 換算 | 物理含義 |
|---|---|---|---|
| 比特 | b / Bit | 1 | 單個電路元件:高電平(1)/低電平(0) |
| 字節 | B / Byte | 8 Bit | 寻址最小單位,存 1 個 ASCII 字符 |
| 千字節 | KB | 1024 Byte | 2¹⁰ |
| 兆字節 | MB | 1024 KB | 2²⁰ |
| 吉字節 | GB | 1024 MB | 2³⁰ |
| 太字節 | TB | 1024 GB | 2⁴⁰ |
1 GB 內存 ≈ 8×1024³ ≈ 85.9 億個電路元件。
(1101)₂ = 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 13。(110.11)₂ = 1×2² + 1×2¹ + 0×2⁰ + 1×2⁻¹ + 1×2⁻² = 6.75。| 運算 | 規則 | 示例 |
|---|---|---|
| 加法 | 0+0=0, 0+1=1, 1+0=1, 1+1=10 (進位) | 101 + 11 = 1000 |
| 減法 | 0-0=0, 1-0=1, 1-1=0, 10-1=1 (借位) | 1000 - 11 = 101 |
| 乘法 | 0×0=0, 1×0=0, 0×1=0, 1×1=1 | 同十進制列竖式 |
| 除法 | 0÷1=0, 1÷1=1 | 試商法 |
3 位二進制 ↔ 1 位八進制;4 位二進制 ↔ 1 位十六進制。極利於位操作、內存地址、權限掩碼閱讀。
| 進制 | 基數 | 符號 | C 語言前綴 | 示例 (十進制) |
|---|---|---|---|---|
| 八進制 | 8 | 0-7 | 0 | 03072 = 3×8³+0×8²+7×8¹+2 = 1594 |
| 十六進制 | 16 | 0-9, A-F (10-15) | 0x/0X | 0xE3F9 = 14×16³+3×16²+15×16¹+9 = 58361 |
bin()/hex()。A:「哥們,借點錢?」
B:「成,多少?」
A:「一千行不?」
B:「咱倆誰跟誰!給你湊個整,**1024**,拿去吧。」
正解 D:正如 100 是 10² (十進制整數次方),**1024 = 2¹⁰ 是二進制整數次方**,在程序員眼中才是真正的「整數」。選 A/B/C 的請補課!
0xFF、0x7FFFFFFF)。chmod 0755、0644 用八進制。0xFFFFFFFF),識別極快。