大小端

  1. LSB:最低有效字节,俗称 “低位
  2. 大端序:高位在前,低位在后
  3. 小端序:低位在前,高位在后
例子

  • 数据: 12345678H
  • 最低有效字节 LSB = 78H,无论大小端
1
2
3
地址 0x1200 0x1201 0x1202 0x1203
大端     12     34     56     78
小端     78     56     34     12
记忆

计算机不是法外之地,人民至上,符合人类习惯的是 “大”

按边界对齐

每个类型 T 的偏移量只能是 sizeof(T) 的整数倍 e.g.

1
2
3
4
5
struct {
  int a;    //  offset = 0
  char b;   //  offset = 4
  short c;  //* offset = 6 != 5
};