,那麼乙個
16位的整數
,也就是
c語言中的
short,
在記憶體中可能有兩種儲存順序
big-endian
和litte-endian.
考慮乙個
short
整數0x3132(0x32
是低位,0x31
是高位),
把它賦值給乙個
short變數,
那麼它在記憶體中的儲存可能有如下兩種情況
:大端位元組
(big-endian):
----------------->>>>>>>>
記憶體位址增大方向
short
變數位址
0x1000
0x1001
_____________________________
| |
|| 0x31
| 0x32 |
|_______________| ____________|
高位位元組在低位位元組的前面
,也就是高位在記憶體位址低的一端
.可以這樣記住(大端
->
高位->
在前->
正常的邏輯順序
)小端位元組
(little-endian):
----------------->>>>>>>>
記憶體位址增大方向
short
變數位址
0x1000
0x1001
_____________________________
|
|
|| 0x32
| 0x31 |
|______________|_____________|
低位位元組在高位位元組的前面
,也就是低位在記憶體位址低的一端
.可以這樣記住(小端
->
低位->
在前->
與正常邏輯順序相反
)總結:
大端模式(
big_endian):
字資料的高位元組儲存在低位址中,而字資料的低位元組則存放
在高位址中。
小端模式(
little_endian):
字資料的高位元組儲存在高位址中,而字資料的低位元組則存放
在低位址中。
union
型資料所佔的空間等
於其最大的成員所佔的空間。對
union
型的成員的訪問都是
相對於該聯合體基位址的偏移量為
0 處開始,
也就是聯合體的訪問不論對哪個變數的訪問都
是從union
的首位址位置開始,因此,大小端模式儲存將會直接影響
union
內成員的值。
例如:union
check
c;c.i
= 1;
printf("%d",c.ch);
如果儲存為大端模式,則輸出為
0,如果為小端模式,則輸出1。
我們常用的
x86結構是小端模式,而
keil c51
則為大端模式。很多的
arm,
dsp都為小端模式。有些
arm處理器還可以由硬體來選擇是大端模式還是小端模式。
大端小端儲存模式
端模式 endian 的這個詞出自jonathan swift書寫的 格列佛遊記 這本書根據將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為big endian,從尖頭開始將雞蛋敲開的人被歸為littile endian 這句話最為形象 小人國的內戰就源於吃雞蛋時是究竟從大頭 ...
理解小端大端儲存模式
小端大端參考文章 位元組序 多位元組資料在記憶體中的儲存順序,分為 大端模式 和 小端模式 兩種儲存方法 小端模式 高位元組資料儲存在高位址 速記 小 小端 高 高位元組 高 高位址 大端模式 高位元組資料儲存在低位址 舉個例子 對於 32位整型資料 0x12345678,它在大端和小端兩種模式下是...
大端 小端的儲存模式
2017年11月23日 大端 小端的儲存模式 1.大端 如果是將高位元組的資料儲存在低位址,低位元組資料儲存在高位址,這種儲存模式就是大端模式 2.小端 如果是將高位元組的資料儲存在高位址,低位元組資料儲存在低位址,這種儲存模式就是小端模式 3.對大小端模式的測試方法 1 使用union共用體進行測...