-
背景
- 在內存中一個地址存儲一個字節(Byte)的數據,即8位。
- 一個int型數據有32位,需要佔用4Byte的空間,那麼應該怎麼存儲int的數據呢?是高位先存儲還是低位先存儲?因此產生了兩種不同的模式,即大端模式和小端模式。
-
是什麼
- 大端模式:高位先存,數據的高位(即大端)存在低地址;
- 小端模式:低位先存,數據的低位(即小端)存在低地址。
-
舉例子
例如:int temp = 0xAABBCCDD; // 假設存儲在地址0x1000;- 大端模式:
0x1000 0xAA;
0x1001 0XBB;
0x1002 0xCC;
0x1003 0XDD; - 小端模式:
0x1000 0xDD;
0x1001 0XCC;
0x1002 0xBB;
0x1003 0XAA;
- 大端模式:
-
怎麼知道當前系統是大端模式還是小端模式?
測試方法:使用union來測試大小端模式。代碼如下:
bool checkSystem()
{
union check
{
int i;
char ch;
} chk;
chk.i = 1;
return (chk.ch==1);//如果是大端模式,返回false;如果是小端模式,函數返回true。
}