1、概念
對於一個由2個字節組成的16位整數,在內存中存儲這兩個字節有兩種方法:
一種是將低序字節存儲在起始地址,這稱為小端(little-endian)字節序;
另一種方法是將高序字節存儲在起始地址,這稱為大端(big-endian)字節序。
如123 1就是高序字節 3就是低序字節
2、為什么會出現大端小端兩種模式?
這是因為在計算機系統中,我們是以字節為單位的,每個地址單元都對應着一個字節,一個字節為8bit。但是在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對於位數大於8位的處理器,例如16位或者32位的處理器,由於寄存器寬度大於一個字節,那么必然存在着一個如果將多個字節安排的問題。因此就導致了大端存儲模式和小端存儲模式。例如一個16bit的short型x,在內存中的地址為0x0010,x的值為0x1122,那么0x11為高字節,0x22為低字節。對於大端模式,就將0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,剛好相反。我們常用的X86結構是小端模式,而KEIL C51則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以由硬件來選擇是大端模式還是小端模式。一般操作系統都是小端,而通訊協議是大端的。
在iOS中是小端模式
3、大端和小端也可以翻譯為“高尾端”和“低尾端”
這就好理解了:如果把一個數看成一個字符串,比如11223344 它的尾端很顯然是44,看它是高尾端還是低尾端就看尾端放在高地址還是低地址,它在內存中的放法非常直觀,如下圖:

下面在項目中查看數據在內存中的存放情況:

如上圖所示,創建一個對象,然后給兩個成員變量賦值。
那么他的內存結構應該是前面八個字節是isa指針 后面四個字節是存放no變量值的 再接下來四個字節是存放age變量值的
no 4在內存中存儲形式應為:ox00 00 00 04
age 5在內存中存儲形式應為:ox00 00 00 05
04 05 為尾端 是低序字節 寫在了低地址位 所以為小端模式
下面內存結構如圖:(內存地址從左往右依次遞增的)

在讀取的時候也是,低地址位的數據讀取出來后放到低序字節 然后內存依次往后讀取,數據依次放到高序字節位
下面兩篇文章介紹的較為詳細:
