leetcode-342. Power of Four

Given an integer (signed 32 bits), write a function to check >whether it is a power of 4.

Example:
Given num = 16, return true. Given num = 5, return false.

Follow up: Could you solve it without loops/recursion?

Credits:
Special thanks to @yukuairoy for adding this problem >and creating all test cases.
Subscribe to see which companies asked this
question

思路:首先二进制中只有一个1,其次不能被2整除,所以1右边的低位的0的个数应该为偶数个

class Solution {
public:
    bool isPowerOfFour(int num) {

        //数字对应的二进制,1右侧低位的0个数为偶数,且只有一个1
        return (num > 0) && ((num&(num-1)) == 0) && ((num&0x55555555) != 0);

    }
};

你可能感兴趣的:(leetcode)