题目描述:
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true
示例 2:
输入: 5
输出: false
解法分析:
一道easy级别的数学题。很容易发现,4的幂一定是最高比特位为1,然后带n个0,且n必须为偶数。
class Solution {
public:
bool isPowerOfFour(int num) {
int bit_0_cnt = 0;
int bit_1_cnt = 0;
int tmp = num;
do {
if (tmp & 0x1) {
++bit_1_cnt;
} else {
++bit_0_cnt;
}
if (bit_1_cnt > 1) {
return false;
}
tmp >>= 1;
} while (tmp);
return bit_1_cnt == 1 && ((bit_0_cnt & 0x1) == 0);
}
};
上述代码用C++编写,学习C++推荐Effective C++ 第三版(中文)电子书pdf下载链接:
链接: https://pan.baidu.com/s/1QNMlG_b_uRA5frwpJ3JXFQ
提取码获取方式:关注微信公众号ziyuanjihe88,回复关键字:1150