電腦裡的資料是以 位元組 (Byte) 為單位存放的。當數字很大(例如 32 位元 = 4 個位元組),電腦就得決定哪個位元組要先存。這個存放順序的規則,就叫做 Endian (位元組序)。
舉例:
假設要存放一個 32-bit (4 bytes) 的整數:0x12345678
拆開後的位元組:
大端序存放:
0x12 0x34 0x56 0x78
就像十進位的「1234」:
1234
舉例:
依舊是同一個數字 0x12345678
:
小端序存放:
0x78 0x56 0x34 0x12
換句話說,就是把「最低有效位元組」(LSB) 擺在最前面。
簡單對比:
假設要存放 0x00000001
:
大端序會依照 01 00 00 00
存放
小端序會依照 00 00 00 01
存放
假設要存放 0x12345678
:
大端序會依照 12 34 56 78
存放
小端序會依照 78 56 34 12
存放
特性 | Big Endian | Little Endian |
---|---|---|
概念 | 高位在前,低位在後 | 低位在前,高位在後 |
直覺性 | 和人類書寫數字方式一致(高位在前) | 需要習慣,與人類習慣相反 |
使用場景 | 網路傳輸 (Network Byte Order)、部分 RISC CPU | Intel x86/x86_64、ARM、日常 PC、手機 |
存取效率 | 讀取高位數字較方便 | 讀取低位數字較方便(處理器運算更有效率) |
可讀性 | 對人類比較直觀 | 對 CPU 計算比較直觀 |
跨平台性 | 常用於跨平台傳輸 | 常用於本地端運算 |