判斷大端小端模式

2021-05-11 15:46:39 字數 1308 閱讀 6411

試題1:

請寫乙個

c函式,若處理器是

big_endian

的,則返回

0;若是

little_endian

的,則返回1

解答:

int checkcpu( )

c;

c.a = 1;

return(c.b ==1);

}

} 剖析:

嵌入式系統開發者應該對

little-endian

和big-endian

模式非常了解。採用

little-endian

模式的cpu 對運算元的存放方式是從低位元組到高位元組,而

big-endian

模式對運算元的存放方式是從高位元組到低位元組。例如,

16bit

寬的數0x1234

在little-endian

模式cpu

記憶體中的存放方式(假設從位址

0x4000

開始存放)為:

記憶體位址

0x4000

0x4001

存放內容

0x34

0x12

而在big-endian

模式cpu

記憶體中的存放方式則為:

記憶體位址

0x4000

0x4001

存放內容

0x12

0x34

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

聯合體union

的存放順序是所有成員都從低位址開始存放,面試者的解答利用該特性,輕鬆地獲得了

cpu 對記憶體採用

little-endian

還是big-endian

模式讀寫。

大端模式與小端模式判斷

在大端模式下,資料的msb存放在低位址 在小端模式下,資料的lsb 存放在低位址。一 大端與小端 msb與lsb 在嵌入式開發中,大端 big endian 和小端 little endian 是乙個很重要的概念。假如現有一32位int型數0x12345678,那麼其msb most signifi...

判斷大端小端

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

大端小端判斷

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