获取一个数的下一个2的指数值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ssss1223ss/article/details/59481698

云风写的buddy内存分配器有这样一个函数,实现获取一个数的下一个2的指数值。我还没搞懂原理,先记下来,以后仔细研究研究。
代码如下:

static inline int

is_pow_of_2(uint32_t x) {

    return !(x & (x-1));

}

static inline uint32_t

next_pow_of_2(uint32_t x) {

    if ( is_pow_of_2(x) )

        return x;

    x |= x>>1;

    x |= x>>2;

    x |= x>>4;

    x |= x>>8;

    x |= x>>16;

    return x+1;
}

猜你喜欢

转载自blog.csdn.net/ssss1223ss/article/details/59481698