1. 程式人生 > >什麼是小端格式和大端格式

什麼是小端格式和大端格式

http://blog.chinaunix.net/uid-21515847-id-1825106.html

大端格式:

在這種格式中,字資料的高位元組儲存在低地址中,而字資料的低位元組則存放在高地址中。

小端格式:

與大端儲存格式相反,在小端儲存格式中,低地址中存放的是字資料的低位元組,高地址存放的是字資料的高位元組。

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

解答:

int checkCPU( )

{

    {

           unionw

           {  

                  int  a;

                  charb;

           }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的存放順序是所有成員都從低地址開始存放。