在開發中經常要用到字節對齊的操作,這邊介紹了一種簡單實現:
int ALIGN(int value, int align){
// y must be a power of 2.
return (value + align - 1) & ~(align - 1);
}
一般的字節對齊的大小都爲2的整數倍,所以能夠被整除的地址的後幾位一定是0,如: 8字節對齊,能夠被整除的數的二進制最後3位一定爲0)
1.value+(align-1)會導致進位。
2.&~(align-1)去除後面多餘的。