判断二的次幂
二的整数幂,m值一定大于0;整数幂,m和m-1做一个&与运算,答案一定是0。例如,当m为8时,m的二进制为1000,那么m−1的二进制为:0111,将这两个数按照二进制与起来答案显然是0的。
#include<iostream>
using namespace std;
int main()
{
long long n,m;
cin>>n;
while(n--){
cin>>m;
if(m > 0 && ((m-1) & m) == 0) cout << "YES" << endl;
else cout<<"NO"<<endl;
}
return 0;
}