主機位元組序一般分為大端和小端兩種,在x86平台上一般採用小端模式。(採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於計算機處理。)
「小端」和「大端」表示多位元組值的哪一端(小端或大端)儲存在該值的起始位址。小端存在起始位址,即是小端位元組序;大端存在起始位址,即是大端位元組序。
1.小端法(little-endian)就是低位位元組排放在記憶體的低位址端即該值的起始位址,高位位元組排放在記憶體的高位址端。
2.大端法(big-endian)就是
高位位元組
排放在記憶體的低位址端即該值的起始位址,低位位元組排放在記憶體的高位址端。
int a = 0x12 34 56 78;
←高位位元組
←低位位元組
低位址高位址
0x2000 0x2001 0x2002 0x2003
0x12 0x34 0x56 0x78 大端模式儲存(高位位元組放低位址)更符合人思維方式
0x78 0x56 0x34 0x12 小端模式儲存(低位位元組在低位址)
這裡畫成**形式:【op0表示乙個32位資料的最高位元組msb(most significant byte),使用op3表示乙個32位資料最低位元組lsb(least significant byte)。】
;位址偏移
;大端模式
;小端模式
0x00
12(op0)
78(op3)
0x01
34(op1)
56(op2)
0x02
56(op2)
34(op1)
0x03
78(op3)
12(op0)
如果將乙個16位的整數0x1234存放到乙個短整型變數(short)中。這個短整型變數在記憶體中的儲存在大小端模式由下表所示。
;位址偏移
;大端模式
;小端模式
0x00
12(op0)
34(op1)
0x01
34(op1)
12(op0)
由上表所知,採用大小模式對資料進行存放的主要區別在於在存放的位元組順序,大端方式將高位存放在低位址,小端方式將高位存放在高位址。採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於計算機處理。到目前為止,採用大端或者小端進行資料存放,其孰優孰劣也沒有定論。
有的處理器系統採用了小端方式進行資料存放,如intel的奔騰。有的處理器系統採用了大端方式進行資料存放,如ibm半導體和freescale的powerpc處理器。不僅對於處理器,一些外設的設計中也存在著使用大端或者小端進行資料存放的選擇。
可參考:
關於人的思維模式
前一陣子讀 資治通鑑 看到下面一段話 時戰國多事,公務煩猥 為尚書令,識悟過人,每省讀文書,舉目暫視,已究其意旨,其速數倍於人,終亦不忘。常以朝晡聽事,其間接納賓客,飲食嬉戲,加之博弈,每盡人之歡,事亦不廢。及董允代,欲學之所行,旬日之中,事多愆滯。允乃嘆曰 人才力相遠若此,非吾之所及也!乃聽事終日...
大端 小端的儲存模式
2017年11月23日 大端 小端的儲存模式 1.大端 如果是將高位元組的資料儲存在低位址,低位元組資料儲存在高位址,這種儲存模式就是大端模式 2.小端 如果是將高位元組的資料儲存在高位址,低位元組資料儲存在低位址,這種儲存模式就是小端模式 3.對大小端模式的測試方法 1 使用union共用體進行測...
大端模式和小端模式的判別!
大端模式 一般我們較習慣的模式,數值的高位存入低位址中,低位存入高位址中。如在16位的cpu中,乙個整型占有2個位元組,如0x1234,它儲存在儲存器的順序是位址的低位存0x12,高位存0x34 小端模式 與大端模式相反,數值的高位存入高位址,低位存入位址中。如條件同上,0x1234,它的儲存的順序...