1.位与运算(&)
判断是否为偶数
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (n & 1)
cout << n << "是奇数";
else
cout << n << "是偶数";
return 0;
}
判断一个数n ,是不是2的整数幂:
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (n & (n - 1)) {
cout << n << "不是2的整数幂";
}
else {
cout << n << "是2的整数幂";
}
return 0;
}
计算一个数的二进制中1的个数:
#include<iostream>
using namespace std;
void BinaryRecursion(int n)//二进制输出
{
int a;
a = n % 2;
n = n>>1;
if (n == 0)
;
else
BinaryRecursion(n);
cout<<a;
}
int main() {
int n,flag = 1,count = 0;
cin >> n;
while (flag <= n) {
if (flag & n)
count++;
flag <<= 1;
}
cout << n << " 二进制形式为:" ;
BinaryRecursion(n);
cout << "\n";
cout << count;
return 0;
}
#include<iostream>
using namespace std;
int hammingWeight(int n) {
int count = 0;
while (n) {
if (n & 1)
count++;
n >>= 1;
}
return count;
}
int main() {
cout << hammingWeight(38);
return 0;
}
第二种:
#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>
int hammingWeight(int n) {
int count = 0;
while (n) {
count++;
n = n & (n - 1);//每次执行都会将最右边的1变为0
}
return count;
}
int main() {
cout << hammingWeight(5126);
return 0;
}
在这里插入代码片
2.位或运算(|)
3.位异或运算(^)
异或的几条性质:
1、交换律:a ^ b=b ^ a
2、结合律:(a ^ b) ^ c == a^ (b ^ c)
3、自反性:对于任何数x都有x^ x=0,x^ 0=x 例如:A^B ^ B = A
4.取反运算(~)
5.左移
乘以2
扫描二维码关注公众号,回复:
13058415 查看本文章
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
cout << (n << 1);
return 0;
}
6.右移
整除2
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
cout << (n >> 1);
return 0;
}
#include<iostream>
using namespace std;
void BinaryRecursion(int n)//二进制输出
{
int a;
a = n % 2;
n = n >> 1;
if (n == 0)
;
else
BinaryRecursion(n);
cout << a;
}
int main() {
int n;
cin >> n;
cout << n << "二级制形式为:";
BinaryRecursion(n);
cout << "\n";
int k;
cin >> k;
n = (n ^ (1<<(k-1)));
cout << "n = " << n<<",二进制形式为:";
BinaryRecursion(n);
return 0;
}