在計算機內存中,通常是以字節(Byte),也就是 8 個位(Bit)爲基本存儲單元(也有以 16 位爲基本存儲單元的)。對於跨越多個字節的數據類型(比如 int 長 4 個字節),如何在內存中對這些字節進行排序有兩種常見的方法:大端法(Big-endian)和小端法(Little-endian)。
【注】不管是大端法還是小端法存儲,計算機在內存中存放數據的順序都是從低地址到高地址,所不同的是首先取低字節的數據存放在低地址還是取高字節數據存放在低地址。
- 若首先取高字節的數據存放在低地址,則是大端法;
- 若首先取低字節的數據存放在低地址,則是小端法。
大端法和小端法指的是字節在內存中存儲時的排列規則,而不是數據中的位的排列規則。也有以位序排列的機器,但很少見。另外,再次明確一下,大端法或小端法是數據在存儲時的表現,而不是在寄存器中參與運算時的表現。
浮點數的字節序
在所有機器上,浮點數在存儲時的字節順序是和整數的字節順序一樣的,所以在進行網絡傳輸時,可以把浮點數當作整數進行字節序轉換。但在歷史上,曾經有段時間因爲 IEEE 並沒有規定浮點數在網絡上傳送的標準,所以浮點數都是以大端法進行存儲的。