大端小端儲存模式以及其對Union資料型別的影響

2022-07-30 03:30:13 字數 1940 閱讀 1675

,那麼乙個

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共用體進行測...