题目
小学生解法
public boolean isPowerOfTwo(int n) {
if(n == 1){
return true;
}
if(n < 1){
return false;
}
if(n % 2 > 0){
return false;
}
n = n >> 1;
return isPowerOfTwo(n);
}
神仙解法
public boolean isPowerOfTwo2(int n) {
if(n < 0 || n == 0){
return false;
}
return (n & (n - 1)) == 0;
}
2的幂,只有最高位为1,其余为0
减1后,最高位变为0,其余变为1
做与运算后,结果为0