大小端问题
数据在存放到内存里的时候,有两种存放方式,即:Big Endian 和 Little Endian(x86系列采用Little Endian)
这两个存取方式决定了内存存放数据的原则是 高高低低 原则 还是 高低低高 原则。
高高低低–内存中的高位存放数据的高位,内存中的低位存放数据的低位(Little Endian )
高低低高–内存中的高位存放数据的低位,内存中的低位存放数据的高位(Big Endian )
数字0x12345678在两种不同字节序CPU中的存储顺序如下所示:
Big Endian
低地址 高地址
----------------------------------------------------------------------------->
| 12 | 34 | 56 | 78 |
Little Endian
低地址 高地址
----------------------------------------------------------------------------->
| 78 | 56 | 34 | 12 |
大小端测试
#include<stdio.h>
int main(void)
{
union M {
int a;
char b;
}c;
c.a = 1;
if (c.b == 1)
printf("It is Little_endian!\n");
else
printf("It is Big_endian!\n");
return 0;
}