判斷機器大小端的兩種實現方法

2022-08-01 12:48:08 字數 785 閱讀 1571

大端模式(big-endian):

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

小端模式(little-endian):

指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中,和我們的邏輯方法一致。

判斷大小端方法

1、利用指標強制型別轉換; 2、利用共用體所有資料共用同一塊位址空間

1、利用指標強制型別轉換

#include

int main()

else

return

0;

}

如果小端方式中(i佔至少兩個位元組的長度)則i所分配的記憶體最小位址那個位元組中就存著1,其他位元組是0;大端的話則1在i的最高位址位元組處存放。char是乙個位元組,所以強制將char型量p指向i則p指向的一定是i的最低位址,那麼就可以判斷p中的值是不是1來確定是不是小端。

2、利用共用體所有資料共用同一塊位址空間

#include

union a

a;int main()

else

return

0;}

聯合體union的存放順序是所有成員都從低位址開始存放,所以很容易就判別出機器的大小端了。 ^_^

判斷機器大小端的兩種實現方法

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

判斷機器大小端的兩種實現方法

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

判斷機器大小端的兩種實現方法

第一種方法 思路 利用指標的強制型別轉換 複製 如下 include int main void return 0 從輸出的結果可以看出,高位位址0xbfc1b1ff存的是資料的高位0x12,低位位址0xbfc1b1fc存的是資料的低位0x78。所以是小端。同時我們亦可以看到,對資料data取位址實...