题目描述:
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true
解题思路:
4的幂一定为2的幂,故先检验是否为2的幂;
再检验是否为奇数位上的1,用0x5 = 0101b;
还有一种检验法为4的幂-1一定为3的倍数;
代码:
class Solution {
public:
bool isPowerOfFour(int num) {
return (num>0) && (num & -num)==num && num & 0x55555555;
//return (num>0) && (num & -num)==num && (num-1)%3==0;
}
};
网友评论