大端小端的判斷

2021-08-23 14:19:47 字數 1212 閱讀 1561

大端位元組序(big-endian)是一種將資料高有效位存放在低記憶體位址的方式,而資料低有效位存放在高記憶體位址。

如圖是大端機多位元組位元組序:

如果是帶位域的話,比如乙個佔一位元組的結構體:

struct s;

struct s s = ;

對於大端機,s的兩個位域成員x1和x2都位於記憶體a所對應的乙個位元組,並且x1位於該位元組的高2位元位,x2位於低6位元位。

對於大端機結構體中位域成員定義的順序,就是記憶體中該位址位元組中位域的實際存放順序。

如圖,大端機位域的位元組序:

圖和上面的大端位元組序的圖是相反的,這裡省略。

判斷大端還是小端:

#include int main() data;

data.n = 0x00000001; //也可以直接寫作 data.n = 1;

if(data.ch == 1)

else

return 0;

}

共用體的各個成員是共用一段記憶體的。1 是資料的低位,如果 1 被儲存在 data 的低位元組,就是小端模式,這個時候 data.ch 的值也是 1。如果 1 被儲存在 data 的高位元組,就是大端模式,這個時候 data.ch 的值就是 0。

位域的位元組序:

結果也是滿足小端位元組序。00 001010在記憶體中是001010 00,所以是0x28

判斷大端小端

大端模式 big endian 和小端模式 little endian 在我們傳送資料的時候,我們首先要確定是大端還是小端模式來進行的,在接收方接收的資料必須知道資料是大端還是小端模式,才能正確地讀取和儲存資料起來,否則就會出錯。有些時候cpu公司用大端 c51微控制器 有些cpu用小端 arm 我...

大端小端判斷

聯合體是共享記憶體,在聯合體重定義乙個char型別,乙個int型別,給int資料賦值為1,根據char的值是否為1就可以判斷大小端了 若char型別為1,則為小端 若char型別不為1,則為大端 判斷大小端 static bool islocalhostbigendian void num num....

判斷大端小端模式

試題1 請寫乙個 c函式,若處理器是 big endian 的,則返回 0 若是 little endian 的,則返回1 解答 int checkcpu c c.a 1 return c.b 1 剖析 嵌入式系統開發者應該對 little endian 和big endian 模式非常了解。採用 ...