是不是2的整数次方(位运算)

题目描述:用一条语句判断一个整数是不是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;
}
发布了78 篇原创文章 · 获赞 101 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_41575507/article/details/104980253