题目描述
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:
输入: 16
输出: true
解释: 24 = 16
示例 3:
输入: 218
输出: false
解法分析
很容易分析2的幂一定是只有一个比特位为1的数。
class Solution {
public:
bool isPowerOfTwo(int n) {
int bit_1_cnt = 0;
do {
if ((n & 0x1) == 1) {
++bit_1_cnt;
}
if (bit_1_cnt > 1) {
return false;
}
n >>= 1;
} while (n);
return bit_1_cnt == 1;
}
};
上述代码用C++编写,学习C++推荐Effective C++ 第三版(中文)电子书pdf下载链接:
链接: https://pan.baidu.com/s/1QNMlG_b_uRA5frwpJ3JXFQ
提取码获取方式:关注微信公众号ziyuanjihe88,回复关键字:1150