今天做到一道關於儲存的題,順便回顧一下大小端:
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
儲存大小端問題
所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...
大小端儲存問題
所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...
儲存大小端問題
所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...