大小端的由來
當數據類型為int,在32bit的系統中,它需要占用4個字節(32bit),這個時候就會產生這4個字節在寄存器中的存放順序的問題。比如int x = 0x12345678。具體的該怎么存放呢?這個時候就需要理解計算機的大小端的原理了。
圖解大小端
大小端主要看低地址存放的是高字節還是低字節
低地址中存儲的是高字節位,為大端模式
低地址中存放的是低字節位,為小端模式
大小端存儲說明
【注】不管是大端法還是小端法存儲,計算機在內存中存放數據的順序都是從低地址到高地址,所不同的是首先取低字節的數據存放在低地址還是取高字節數據存放在低地址。
大端法和小端法指的是字節在內存中存儲時的排列規則,而不是數據中的位的排列規則。也有以位序排列的機器,但很少見。另外,再次明確一下,大端法或小端法是數據在存儲時的表現,而不是在寄存器中參與運算時的表現。
編寫程序測試系統的大小端
#include<stdio.h> int main(void) { unsigned int x=0x12345678; unsigned char *p=(unsigned char*)&x; printf("%0x %0x %0x %0x\n",p[0],p[1],p[2],p[3]); return 0; }
運行結果是:
說明Linux采用小端模式

![06f9bf2f-3f43-464c-a1d7-b6b011c794d6[4] 06f9bf2f-3f43-464c-a1d7-b6b011c794d6[4]](/image/aHR0cHM6Ly9pbWcyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTQ3NTU3MS8yMDE5MDgvMTQ3NTU3MS0yMDE5MDgwMTE3MzE1NzY1NC0xMTM5ODA0ODMxLmpwZw==.png)