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?

答案:

判断一个数是否是4的幂,不能使用循环和递归:

     前面我们已经做过一个数是否为2的幂这道题,4的幂跟2的幂一样,都是最高位为1,其他位为0。

     不同的是4的幂中的1在偶数位上,所以我们可以用0xaaaaaaaa与之按位与。

1 class Solution {
2 public:
3     bool isPowerOfFour(int num) {
4         return num>0&&(!(num&(num-1)))&&(!(num&(0xaaaaaaaa)));
5     }
6 };

 

posted @ 2016-07-03 23:05  绵绵思远道  阅读(129)  评论(0编辑  收藏  举报