将2的幂次方写成2进制形式后,很容易就发现一个特点:二进制中只有一个1,并且1后面全是0,如果将这个数减去1后会发现,仅有的1会变成0,而其他0则会变成1,所以将已知数和已知数减一进行与运算会发现等于0
#include <iostream>
using namespace std;
int main() //判断一个数是不是2的整数次幂
{
int n;
while (cin >> n)
{
if ((n&(n - 1)) == 0)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}