《有手就行02》
一条语句判断整数是不是2的整数次方
本博是对《算法营02》的一点补充
未阅读过的读者可以点击下面的链接进行转跳
[凡鸽鸽]《算法营02》实现输入一个整数,输出该数二进制中表示1的个数
按照传统,先上代码(解释在下文):
if(((n - 1) & n) == 0)cout << "整数" << n << "是2的整数次方" << endl;
解释:
1.如果整数为2的整数次方,则二进制中仅含有 1 个 1 ;
2.故 令整数减一后 与 他原本身进行&运算;
3.若等于0,则整数是2的整数次方,反之不为0,则整数不是2的整数次方。
(完整代码)
#include <iostream>
using namespace std;
int main()
{
system("color F0");
int n, count = 0;
cout << "请输入需要判断的整数:" << endl;cin >> n ; //获取输入的整数
//核心代码 ↓↓↓
if(((n - 1) & n) == 0)cout << "整数" << n << "是2的整数次方" << endl;
//核心代码 ↑↑↑
else cout << "整数" << n << "不是2的整数次方" << endl;
system("pause");
return 0;
}
测试运行结果如图所示: