大小端与操作系统无关,和cpu有关。
大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式类似于把数据当作字符串顺序处理。地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
|
|
记忆方法:“小小小”--小地址(低地址)放(低位)小位是小端。
判断方法:
第一种:
void Is_little_endian()
{
int i = 1;
char j = *((char*)&i);
if (j == 1)
{
printf("小端存储.\n");
}
else
printf("大端存储.\n");
}
第二种:
void Is_little_endian1()
{
union UN
{
int i;
char c;
}u;
u.i = 1;
if (u.c == 1)
{
printf("小端存储.\n");
}
else
printf("大端存储.\n");
}
我自己一般如何测试:
void Is_little_endian2()
{
int i = 0x11223344;
char c = i;
printf("%x\n", c);
}
输出:44 -- 小端
输出:11 -- 大端