给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:
输入: 16
输出: true
解释: 24 = 16
示例 3:
输入: 218
输出: false
思路:
利用位运算,注意到2的幂的二进制都是形如1,10,100,1000,10000…所以恒有n&(n-1)等于0
class Solution {
public:
bool isPowerOfTwo(int n)
{
if (n <= 0)
return false;
if ((n&(n - 1)) == 0)//此处注意细节,(n&(n-1))==0不可写为n&(n-1)==0
return true;
return false;
}
};