目录
1 位与运算符
#include <iostream>
using namespace std;
/*
&
*/
int main()
{
int a = 0b1010; // 10
int b = 0b0110; // 6
// 0b0010 // 2
int c = (a & b); // 2
cout << c << endl; // 按位相与,有0必0
return 0;
}
2 位或运算符
#include <iostream>
using namespace std;
/*
| 有1即1
*/
int main()
{
int a = 0b1010; // 10
int b = 0b0110; // 6
// 0b1110 // 14
int c = (a | b); // 14
cout << c << endl; // 按位相或,有1即1
return 0;
}
3 异或运算符
#include <iostream>
using namespace std;
/*
^ 异或
*/
int main()
{
int a = 0b1010; // 10
int b = 0b0110; // 6
// 0b1100 // 12
int c = (a ^ b); // 12
cout << c << endl; // 相同为0,不同为1
return 0;
}
4 按位取反
#include <iostream>
using namespace std;
/*
* ~ 按位取反 高位的0不能忽略
*/
int main()
{
int a = 0b1010; // 10
int c = ~a; // -11
cout << c << endl;
return 0;
}
5 左移运算符
#include <iostream>
using namespace std;
/*
1. 左移一位,相当于对原来的数乘以2
x<<y 将x左移y位,是二进制的数字,想当于x*2^y
2. 负数的左移,也满足
3. 左移负数位是不被允许的
4. 左移溢出数据会为0
*/
int main()
{
int a = 0b11; // 3
int c = a << 1; // 6
cout << c << endl;
return 0;
}
6 右移运算符
#include <iostream>
using namespace std;
/*
1. 右移一位,相当于对原来的数除以2
x>>y 将x右移y位,是二进制的数字,想当于x/2^y
2. 负数的右移,也满足
3. 右移移负数位是不被允许的
*/
int main()
{
int a = 0b111; // 7
int c = a >> 1; // 3
cout << c << endl;
return 0;
}