Given an integer (signed 32 bits), write a function to check whether it is a power of 4.
Example 1:
Input: 16
Output: true
Example 2:
Input: 5
Output: false
题目大意:
给出一个int类型的数,判定是否为4的幂次方;
解题思路:
2和4的幂次方数在二进制下规则明显。
我们需要列举出其中的一部分就可以找出规律。
例:
1(1)
4(100)
16(10000)
可以看出4的幂次方数首先满足只有第一位为1的要求,与2的幂次方数吻合,所以我们首先判断是否2的幂次方数。
唯一与2的幂次方数不同的是,4的幂次方数的1从后向前数应该在奇数位上,判段num & 0x55555555的结果即可。
class Solution {
public:
bool isPowerOfFour(int num) {
if(num<=0) return false;
if(num & (num-1))
return false;
return num & 0x55555555;
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)