大端格式和小端格式

大端格式:

       在這種格式中,字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中,如圖2.1所示:

 

 

小端格式

        與大端存儲格式相反,在小端存儲格式中,低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。如圖2.2所示:

 

 

請寫一個C函數,若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1

解答:

int checkCPU( )

{

    {

           union w

           {  

                  int a;

                  char b;

           } c;

           c.a = 1;

           return(c.b ==1);

    }

}

剖析:

        嵌入式系統開發者應該對Little-endian和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的存放順序是所有成員都從低地址開始存放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章