使用n&(n-1)的方法:因为2的整数次幂的二进制只有一位是1,所以如果n是2的整数次幂,那么n的二进制只有首位是1,其余为为0;n-1的二进制首位为零,其余位为1。即如果n&(n-1)=0,则n为2的整数次幂。
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n <= 0)
return false;
return !(n&(n-1));
}
};
class Solution {
public:
bool isPowerOfTwo(int n) {
if(n == 1)
return true;
int r = 0;
while(n > 0){
r = n % 2;
n = n / 2;
if(r != 0 && n != 0)
return false;
}
return r==1? true: false;
}
};