#include <iostream>
int main(){
for (int num = 0; num < 15; ++num)
printf("num = %2d\t(num + 3) & (~3) = %d\n", num, (num + 3) & (~3));
return 0;
}
输出:
num = 0 (num + 3) & (~3) = 0
num = 1 (num + 3) & (~3) = 4
num = 2 (num + 3) & (~3) = 4
num = 3 (num + 3) & (~3) = 4
num = 4 (num + 3) & (~3) = 4
num = 5 (num + 3) & (~3) = 8
num = 6 (num + 3) & (~3) = 8
num = 7 (num + 3) & (~3) = 8
num = 8 (num + 3) & (~3) = 8
num = 9 (num + 3) & (~3) = 12
num = 10 (num + 3) & (~3) = 12
num = 11 (num + 3) & (~3) = 12
num = 12 (num + 3) & (~3) = 12
num = 13 (num + 3) & (~3) = 16
num = 14 (num + 3) & (~3) = 16
当 num
非负的时候,(num + 3) & (~3)
可以得到不小于 num
的最小的 4 的倍数
~3
起到了掩码的作用,把最低的 2 个 bit 置 0