题目描述:
判断是否是2的幂,从二进制角度考虑,一个数的二进制表示中只有一位为1时,这个数就是2的幂,即只要循环遍历一下数的二进制位数,判断1是否只出现了一次。
代码:
bool isPowerOfTwo(int n) {
// Write your code here
if(n < 0)
return false;
if(n == 1)
return true;
if(n&1){
return false;
}
int flag = 0; //flag用来标记1是否出现,当flag置为1时,再遇到1时,返回false,如果能从循环中退出,说明只出现了一次1,返回true
while(n){
n >>=1;
if((n&1) ==1 && flag == 0)
flag = 1;
else if((n&1) == 1 && flag == 1)
return false;
}
return true;
}