检查数字是否为2 ^ n

时间:2012-08-06 07:41:41

标签: c math logic bit-manipulation

  

可能重复:
  How to check if a number is a power of 2

在接受采访时已经提出了这个问题。

如何检查某个号码是否为2^n格式{1,2,4,8,16,32 ......}

不使用*/+-%运营商?

你也不能使用循环。

2 个答案:

答案 0 :(得分:15)

检查二进制表示中是否只设置了一位。

答案 1 :(得分:8)

使用旧的n & (n - 1) == 0,以不使用运算符-的方式进行转换。

int powerOfTwo(int number)
{
    int numberMinusOne = --number;
    ++number;

    if (number == 0)
        return 0;

    return (number & numberMinusOne) == 0;
}