首页 > 其他 > 详细

位运算

时间:2021-06-06 13:29:55      阅读:16      评论:0      收藏:0      [点我收藏+]

位运算

位运算符的分类

  1. 与运算(&)
  2. 或运算(|)
  3. 异或(^)不同为1,
  4. 取反(~)
  5. 左移(<<)
  6. 右移(>>)

https://www.cnblogs.com/RioTian/p/13598747.html

&??与运算

  • 两个对应位位1才为一,其它三种情况都为0

应用——判断数的奇偶性

  • 要判断的数与上1
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	if(n&1)
	  cout<<"奇数"<<endl;
	else 
	  cout<<"偶数"<<endl;
	return 0; 
}

应用--判断一个数是否为2的正整数次幂

  • 若一个数为2的正整数次幂,则这个数转换二进制后,所有位置上有且只有一个1,此时若减去一个1,将会造成“一连串的崩塌”(从个位开始不断向高位借一)。

  • #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int n;
    	cin>>n;
    	if(n>0&&(n&(n-1)==0)
    	{
    		cout<<"YES";
    	}
    	else cout<<"NO";
    	return 0;
    }
    

应用-lowbit—寻找数在二进制下从右到左第一个1出现的位置及代表的值

int lowbit(int k)
{
	return k&-k;
}

应用——用来统计一个数在二进制下1的个数

#include<bits/stdc++.h>
using namespace std;
int lowbit(int k)
{
	return k&-k;
}
int main()
{
	int x,cnt=0;
	cin>>x;
	
	while(x)
	{
		x=x-lowbit(x);
		cnt++;
	}
	cout<<cnt;
	return 0;
}

位运算

原文:https://www.cnblogs.com/BeautifulWater/p/14854612.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!