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;
}