给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
使用位运算。首先要是2的幂必须要大于0,因此第一个判断条件为n>0,之后进行位运算,&为与运算,易知若为2的幂则二进制只有最高位为1剩下的全为0,因此n-1 除了原n最高位为0,其他全为1,因此(n&(n-1))==0
class Solution {
public:
bool isPowerOfTwo(int n) {
return (n>0)&&(n&(n-1))==0;
}
};