大小端儲存

2021-07-13 06:21:30 字數 655 閱讀 7216

今天做到一道關於儲存的題,順便回顧一下大小端:

union x;};

int main()

問輸出是什麼?

大家肯定都知道了這一道題要從大小端儲存出發考慮

首先具體介紹一下大小端的儲存模式

32bit寬的數0x12345678

在little-endian模式cpu記憶體中的存放方式(假設從位址0x4000開始存放)為:(低位元組放地位址,高位元組放高位址)

記憶體位址 0x4000 0x4001 0x4002 0x4003

存放內容 0x78 0x56 0x34 0x12

而在big- endian模式cpu記憶體中的存放方式則為:(低位元組放高位址,高位元組放低位址)

記憶體位址 0x4000 0x4001 0x4002 0x4003

存放內容 0x12 0x34 0x56 0x78

如果是小端儲存:0x20150810在記憶體中的儲存形式為 10 08 15 20

所以輸出 printf(「%x,%x\n」,x.b,x.c)時為08 10 20 15

如果是打斷儲存:0x20150810在記憶體中的儲存形式為 20 15 08 10

所以輸出 printf(「%x,%x\n」,x.b,x.c)時為20 15 08 10

儲存大小端問題

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...

大小端儲存問題

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...

儲存大小端問題

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...