請寫乙個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佔四個位元組的長度...