LintCode :O(1)时间检测2的幂次
题目
用 O(1) 时间检测整数 n 是否是 2 的幂次。
样例
n=4,返回 true;
n=5,返回 false.
思路
判断n是否为2的幂次,则判断n的二进制表达中是否只有一位是1.
代码
bool checkPowerOf2(int n) {
if(n < 0) return false;
int flag = 0;
for(int i = 0; i < 32; i++)
if((n >> i) & 1) flag++;
if(flag != 1) return false;
return true;
}