最近在刷NOIP,给大家分享几个知识点:
1.按位与运算(&):
设定两个正整数x和y,x=0,y=1,则:
x&x=0;
x&y=0;
y&x=0;
y&y=1
例如3&5= xxxxxxyy & xxxxxyxy = xxxxxxxy
2.按位或运算(| )
x|x=0;
x|y=1;
y|x=1;
y|y=0
例如3&5= xxxxxxyy & xxxxxyxy = xxxxxxxy
实例:
#include<bits/stdc++.h>
using namespace std;
int a;
int n[1000];
int f(int x)
{
int ret;
for(;x;x&=x-1)
{
ret++;
}
return ret;
}
int main()
{
int n;
scanp(n);
f(n);
cout<<n;
return 0;
}
注释:第08行中的x&=x-1的意思为:将x与(x-1)进行按位与运算,并求解。
结果可以发在评论区(会进行评分oh),886!
本文介绍了NOIP竞赛中的两种按位运算——与(&)和或(|)。通过实例展示了它们的运算规则,并提供了一段C++代码演示如何使用按位与运算优化计数问题。适合初学者理解和练习按位运算技巧。
2608

被折叠的 条评论
为什么被折叠?



