大端Big Endian:数据的高字节存储到低位地址中
小端little Endian:数据的低字节存储到低位地址中
举例说明:
32位16进制数据为=0x12345678,
大端存储
地址 0x0 0x1 0x2 0x3
数据 0x12 0x34 0x56 0x78
MSB LSB
小端存储
地址 0x0 0x1 0x2 0x3
数据 0x78 0x56 0x34 0x12
LSB MSB
MSB是Most Significant Bit的缩写,指最高有效位
LSB是Least Significant Bit的缩写,指最低有效位。
处理器基本上都是字节编址,无法直接操作位,但是在C语言中,可以用结构体来实现对位的操作,其语法规定:先声明的成员位于低地址,后声明的成员位于高地址。
举例,以小端处理器为例,
struct onebyte {
unsigned char bt0:1,
bt1:1,
bt2:1,
bt3:1,
bt4:1,
bt5:1,
bt6:1,
bt7:1;
};
main{
ch= 0x98;
struct onebyte byte=(struct onebyte)&ch;
printf(“bt0 is :%u\n”,byte->bt0);
printf(“bt1 is :%u\n”,byte->bt1);
printf(“bt2 is :%u\n”,byte->bt2);
printf(“bt3 is :%u\n”,byte->bt3