给你一个整数 n
,请你判断该整数是否是 2 的幂次方。如果是,返回 true
;否则,返回 false
。
如果存在一个整数 x
使得 n == 2x
,则认为 n
是 2 的幂次方。
提示:
-231 <= n <= 231 - 1
思路
- 循环判断一下是不是 2 的幂
bool isPowerOfTwo(int n) {
long x = 1;
for (int i = 0; i < 32; i++) {
if (x == n)
return true;
x *= 2;
}
return false;
}
- 采用位运算的方法判断
bool isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}