题目
分析
题目要求为判断一个数是否为2的幂。
一种基本的方法就是不断的对2取余直到该数变为1,如果所有的取余结果都为0,则为2的幂。
比较简单的方法:2的幂用2进制表示只有一个1,比如16= 2^4 用2进制表示则为 10000,那么它减一则为 01111
这两个数取按位与操作一定为0
题解
解法1
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n == 0)
return false;
else if(n == 1)
return true;
while(n != 1){
if(n % 2 != 0)
return false;
n /= 2;
}
return true;
}
};
解法2
class Solution {
public:
bool isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1) )== 0;
}
};