判断一个数是不是2的幂,有三种方法
第一种,直接右移操作,看对2取模是否为1
代码如下
public class Solution {
public boolean isPowerOfTwo(int n) {
while (n > 1) {
if (n % 2 != 0) return false;
n /= 2;
}
return n == 1;
}
}
第二种方法,统计二进制表示是位为1的个数,为1说明是2的幂
代码如下
public class Solution {
public boolean isPowerOfTwo(int n) {
int count = 0;
for (int i = 0; i < 32; i++) {
if ((n & (1 << i)) != 0) count++;
}
return n > 0 && count == 1;
}
}
第三种,直接用n&(n-1) == 0来判断
代码如下
public class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
}