1. 判断n是否为2的幂次:
n&(n-1)==0
解释:
- n的二进制中最为1,低于该位的均为0
- n-1的二进制中最高位为0,低于该位的均为1
python代码:
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return n>0 and n&(n-1)==0
2. 判断n是否为4的幂次:
在n为2的幂次的基础上再添加一个条件:n的二进制的偶数位为1,奇数位为0;
如何表示?答:将n与奇数位为1的数进行“与操作”,结果为0
python代码:
class Solution:
def isPowerOfFour(self, n: int) -> bool:
return n>0 and n&(n-1)==0 and n&0xaaaaaaaa==0