题目
快速判断输入的int型整数是否是2的N次幂。
输入
8
5
64
输出
YES
NO
YES
分析
如果一个数是2的次方数,则二进数最高位为1,其它都为0。减1后,降位,其余为0的位变为1,把两数相与会得0。
代码
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
if ((x > 0) && !(x & (x - 1)))
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
return 0;
}