嵌入式基础知识1--大小端

大小端

大端(big endian):低地址存放最高有效字节(MSB),Motorola格式;
小端(little endian):低地址存放最低有效字节(LSB),Intel格式;
对于0x12345678这个数据在两种格式下内存中的存放:
大端(Motorola格式):
在这里插入图片描述
小端(Intel格式)
在这里插入图片描述
使用一个联合体即可测试所使用的处理器的大小端方法:

typedef union 
{
 u32 data_u32;
 u8  data_u8[4]; 
} myUnion;

myUnion data;
data.data_u32 = 0x12345678;

printf("%0x: %0x",&(data.data_u8[0]), data.data_u8[0]);
printf("%0x: %0x",&(data.data_u8[1]), data.data_u8[1]);
printf("%0x: %0x",&(data.data_u8[2]), data.data_u8[2]);
printf("%0x: %0x",&(data.data_u8[3]), data.data_u8[3]);

我是电脑是小端模式,所以输出如下,低有效字节78放在低地址0x9f0fe14,高有效字节放在高地址0x9f0fe17:
9f0fe14: 78
9f0fe15: 56
9f0fe16: 34
9f0fe17: 12