位运算方法判断是否为2的幂次和4的幂次

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

 


版权声明:本文为Exaggeration08原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。