题目:
Given an integer, write a function to determine if it is a power of two.
思路:
如果是整数,对数字n的二进制bit进行计数,如果只有一个bit为1,则返回true;否则返回false。负数全为false。
代码实现:
class Solution {
public:
bool isPowerOfTwo(int n) {
if (n < 0){
return false;
}
int count = 31;
int bitOne = 0;
while (count){
if (n % 2){
if (bitOne >= 1){
return false;
}
++bitOne;
}
--count;
n >>= 1;
}
return bitOne;
}
};
discuss:
// 思路:很简单。用公式n & (n-1)把二进制最后一个1抹掉即可。
class Solution {
public:
bool isPowerOfTwo(int n) {
if (n <= 0) return false;
return !(n & (n-1));
}
};