位元組序----大端序和小端序
阿新 • • 發佈:2018-11-03
大端序 (big endian ):最高有效位元組儲存在最低低至,隨地址升高,位元組的權重降低。
小端序(little endian): 最低有效位元組儲存在最低地址,隨地址升高,位元組的權重升高。
比如說一個int型數字a為0x1234,那麼0x12代表a的高位,0x34代表a的低位(類似十進位制裡面百是高位,十是低位)
計算機的資料儲存是以位元組為單位的,因此0x12和0x34分別代表兩個位元組
假設記憶體地址從左到右是低位到高位
對於小端在記憶體中的儲存為: 3412(低地址儲存低位)
對於大端在記憶體中的儲存為:1234(低地址儲存高位)
對比發現大端的儲存跟書寫方式是一致的。
見下表:
位元組 | 0 | 1 | 2 | 3 | 型別 |
小端 | 0-7 | 8-15 | 16-23 | 24-32 | int |
大端 | 24-32 | 16-23 | 8-15 | 0-7 | int |
C測試程式碼:
#include <stdio.h> union test { int a; char b; }test; int main(void) { test.a = 1; if(1 == test.b) { printf("little endian!\n"); } else { printf("big endian!\n"); } return 0; } ~
巧妙運用聯合體共用同一記憶體來進行測試!