这个题目不是很准确,先看个代码
int main()
{
int a = 128;
int b = 7;
printf("%d /n", (b+(a-1)) & ~(a-1));
b = 128;
printf("%d /n", (b+(a-1)) & ~(a-1));
b = 129;
printf("%d /n", (b+(a-1)) & ~(a-1));
return 0;
}
输出结果:
128
128
256
可以看到,这样算出来的值 就是 a这个值的整数倍,且正好是大于b的那个值。
但是这个算法只能是当 a 为 2的指数值时才成立。