嵌入式系統開發者應該對Little-endian和Big-endian模式非常瞭解。例如,16bit寬的數0x1234在Little-endian模式CPU內存中的存放方式(假設從地址0x4000開始存放)爲:
內存地址 |
0x4000 |
0x4001 |
存放內容 |
0x34 |
0x12 |
而在Big-endian模式CPU內存中的存放方式則爲:
內存地址 |
0x4000 |
0x4001 |
存放內容 |
0x12 |
0x34 |
char x0,x1;
x=0x1122;
x0=((char*)&x)[0]; //低地址單元
x1=((char*)&x)[1]; //高地址單元
若x0=0x11,則是大端; 若x0=0x22,則是小端......
- int main()
- {
- short int x;
- char x0,x1;
- x=0*((char*)&x); //低地址單元 ,或者((char*)&x)[0];
- x1=*((char*)&x + 1); //高地址單元,或者((char*)&x)[1];
- printf("%x/n%x/n",x0,x1);
- }
- int checkCPU( )
- {
- {
- union w
- { int a;
- short b;
- } c;
- c.a = 0x12345678;
- return(c.b == 0x5678);
- }
- }
- int main()
- {
- printf("%d/n",checkCPU());
- }