判斷乙個CPU大小端模式

2021-07-29 17:32:26 字數 705 閱讀 2726

請寫乙個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開始存放)為:

記憶體位址0x40000 x4001

存放內容0x34    0x12

而在big-endian模式cpu記憶體中的存放方式則為:

記憶體位址0x40000  x4001

存放內容0x12     0x34

判斷cpu是大端還是小端?明白大端和小端的區別,實現起來就非常簡單:

#include

int main(void)u;

if(sizeof(short)

== 2)

else

if(u.c[0]

== 2 &

& u.c[1]

== 1)

return 0;}}

0 給主人留下些什麼吧!~~

CPU大小端判斷

big endian 認為第乙個位元組是最高位位元組 按照從低位址到高位址的順序存放資料的高位位元組到低位位元組 大端 而little endian 則相反,它認為第乙個位元組是最低位位元組 按照從低位址到高位址的順序存放資料的低位位元組到高位位元組 小端 用 c程式設計實現判斷,如下 測試你的機器...

判斷CPU大小端儲存

首先明白big endian和little endian的位元組排序含義 big endian 乙個word中的高位的byte放在記憶體中這個word區域的低位址處。little endian 乙個word中的低位的byte放在記憶體中這個word區域的低位址處。例如 如果我們將0x1234abcd...

判斷CPU的大小端

原文出處 下面的兩個程式均可判斷cpu的大小端問題 int i 1 char p char i if p 1 printf little endian little endian else printf big endian big endian 大小端儲存問題,如果小端方式中 i佔四個位元組的長度...