先考虑边界条件,如果一个数小于等于零,那么肯定就不是2的N次幂
解题思路:用二进制来判别,因为2的n次幂是低位为1,末尾全为0的形式,类似a10000...这种形式,那么n - 1 就是a011111...的形式,用N & N - 1的结果为零,即可判断出来。代码如下
public boolean isPowerOfTwo(int n){
return n > 0 && (n & (n - 1) == 0);
}
先考虑边界条件,如果一个数小于等于零,那么肯定就不是2的N次幂
解题思路:用二进制来判别,因为2的n次幂是低位为1,末尾全为0的形式,类似a10000...这种形式,那么n - 1 就是a011111...的形式,用N & N - 1的结果为零,即可判断出来。代码如下
public boolean isPowerOfTwo(int n){
return n > 0 && (n & (n - 1) == 0);
}