题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
我的解法:那必然是 循环,递归,暴力枚举。。(滑稽.jpg)
神仙解法:满足2的次幂 -- 联想到2进制中满足2的次方的 都是最高位为1 其他位为0
因此 2^n & 2^n-1 == 0
public boolean isPowerOf2(int n) {
return n > 0 && ((n & (n - 1)) == 0);
}
题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
我的解法:那必然是 循环,递归,暴力枚举。。(滑稽.jpg)
神仙解法:满足2的次幂 -- 联想到2进制中满足2的次方的 都是最高位为1 其他位为0
因此 2^n & 2^n-1 == 0
public boolean isPowerOf2(int n) {
return n > 0 && ((n & (n - 1)) == 0);
}