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

    技术2023-07-12  75

    1. 判断n是否为2的幂次:

    n&(n-1)==0

    解释:

    n的二进制中最为1,低于该位的均为0n-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

     

    Processed: 0.015, SQL: 9