最后更新于3年前
思路:一个数是4的幂,其1必然在偶数位上,且在最高位
1 = 1 4 = 100 16 = 10000 64 = 1000000
技巧:
第一个条件:1在偶数位
用一个32位二进制mask和n与操作,mask每个奇数位为1,偶数位为0(最右边为第0位)。
mask = 10101010101010101010101010101010
与操作结果为0,说明n的奇数位没有1
第二个条件:最高位为1
根据
的解法,即判断二进制,看 n & (n-1) 是否为 0
class Solution: def isPowerOfFour(self, n: int) -> bool: if n <=0 : return False return (n & (n-1) == 0) and ((n & 0xaaaaaaaa) == 0)