算出某个值(2^N)的整数倍数

来源:互联网 发布:淘宝注册年龄限制 编辑:程序博客网 时间:2024/04/29 18:45

这个题目不是很准确,先看个代码

 

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的指数值时才成立。