题目描述:用一条语句判断一个整数是不是2的整数次方。
解题思路:题目的关键是只能用一条语句判断。所以使用不断除以2直到结果为1的方案就行不通了。可以使用位运算中的与运算来解这个题目。是输入的数字n与n-1做与运算,如果结果等于0,那么就证明这个n是2的整数次方,因为n用二进制来表示,如果只有1个1,其余都为0,这个n才是2的整数次方。比如8 二进制为1000, 8&7 1000&0111 = 0000 。 所以可以根据结果是不是为0来判断。这个主要与二进制的满二进一有关。
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
if((n&(n-1)) == 0){
cout<<"Yes";
}else{
cout<<"No";
}
return 0;
}