1.引入
計算機的字長一直在增長,從4位開始,經過8、16、32、64位,以后可能還會有更多的位出現。現在的計算機還都是以字節(即8個bit位)作為地址編址單元。
編程語言中有許多內置的數據類型,有整型,浮點型等。每種內置類型所占用的字節數是不相同的。
大端小端就是指在一個內置數據類型中,數據的存放順序,分為兩種,即小端優勢和大端優勢。
2.概念
大端優勢:數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中
小端優勢:數據的低字節存儲在低地址中,而字數據的高字節則存放在高地址中(所謂的“高高低低”)
3.C代碼測試大端小端
說明:C語言內置類型int默認是分配4個字節。從輸出來看高地址輸出的是數據的高字節部分,所以是小端優勢。
#include<stdio.h> int main() { unsigned int a=0x12345678; //16進制數 char *d=(char*)&a; printf("%x %x\n",d,*d); //輸出:22ff18 78 printf("%x %x\n",d+1,*(d+1)); //輸出:22ff19 56 printf("%x %x\n",d+2,*(d+2)); //輸出:22ff1a 34 printf("%x %x\n",d+3,*(d+3)); //輸出:22ff1b 12 return 0; }
4.圖示
5.再說明
大端小端完全是設計的原因,不是因為有多個字節先寫后寫的問題。
字長32位、64位的機器在CPU設計時,就可以使用32或64條數據線一次讀或寫多個字節數據。又因為可以一次讀或寫多個字節數據,有的RAM設計才有了地址對齊一說。
地址對齊:http://www.cnblogs.com/xudong-bupt/archive/2013/05/13/3076024.html