首先不管大端法還是小端法存儲,計算機在內存存放數據的順序都是從低地址到高地址。
所不同的是首先取低字節的數據存放在低地址還是取高字節數據存放在低地址。
若首先取高字節的數據放在低地址,則是大端法;
若首先取低字節的數據存放在低地址,則是小端;
例如數據0x1234567 (左邊是高字節,右邊是低字節)
大端法存放:
內存地址依次爲: 0x0001 0x0002 0x0003 0x0004
對應的數據存放依次爲: 0x01 0x23 0x45 0x67
小端法存放:
內存地址依次爲: 0x0001 0x0002 0x0003 0x0004
對應的數據存放依次爲:0x67 0x45 0x23 0x01
union型數據所佔的空間等於其最大的成員所佔的空間。對union型的成員的存取都是
相對於該聯合體基地址的偏移量爲 0處開始,也就是聯合體的訪問不論對哪個變量的存取都
是從 union的首地址位置開始,因此,大小端模式存儲將會直接影響union內成員的值。
例子:
#include<stdio.h>
union check
{
int i;
char ch;
};
void main()
{
check c;
c.i=1;
printf(“%d\n”,c.ch);
}
如果存儲爲大端模式,則輸出爲0,如果爲小端模式,則輸出爲1