2的幂
2020年6月2日
题目来源:力扣
解题
- 暴力
class Solution {
public boolean isPowerOfTwo(int n) {
if(n==0) return false;
if(n==1) return true;
while(n!=1){
if(n%2!=0) return false;
n/=2;
}
return true;
}
}
- 位运算
因为2的幂的二进制始终只有一位是1,例如0001、0010、0100、1000等。
这些2的幂减一的二进制值则除了这一位为0,这一位后面其他都为1,例如0000、0001、0011、0111等。
那么这两个数相与,结果肯定是0。
所以用此位运算规则来判断此数是否是2的幂。
class Solution {
public boolean isPowerOfTwo(int n) {
return n>0 && (n&(n-1))==0;
}
}