今天看到一个宏
#define ALIGN(s) (((s) + 3 ) & ~3)
一看名字就知道这个是对齐数据的 那么是对其到几的边界呢。是3 ? 好好想了想
先加上 3 是 为了考虑那些还没超过下一个边界的数 加上 3 之后至少不再下一个边界之内了 那么应该对齐的应该是 4
下一个 &~3 是为了把这个数的二进制低两位清0 为什么要清零呢 一个数除以 4 相当于二进制 右移两位 整除的情况就是低两位刚好是 0 也就没有余数了。。。这样这个数也就对其到4的边界了 。。对其到2呢 末位是0即可