342. Power of Four(python+cpp)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21275321/article/details/83536307

题目:
解释:
判断一个数是不是4的幂,这里用到一个知识就是
1.判断一个数是不是2的幂用n&(n-1)==0,一个数是4的幂的前提是它是2的幂
2.4的次幂-1之后是3的倍数:
3.4的次幂的二进制表示中只有一个1,剩下的全是0,而且唯一的1右边有偶数个0,所以(num>>1)与0x5555555555 &之后为10x55555555=1010101010101010101010101010101
python代码

from math import log10
class Solution(object):
    def isPowerOfFour(self, num):
        """
        :type num: int
        :rtype: bool
        """
        if num<=0:
            return False
        return num&(num-1)==0 and (num>>1)&(0x55555555)==0;

c++代码:

class Solution {
public:
    bool isPowerOfFour(int num) {
        if (num<=0)
            return false;
        return (num&(num-1))==0 & ((num>>1)&(0x55555555))==0;
    }
};

总结:
遇到位运算和逻辑运算的时候注意运算符的优先级问题。

猜你喜欢

转载自blog.csdn.net/qq_21275321/article/details/83536307