位运算是指按二进制进行的运算。在程序中,常常需要处理二进制位的问题。C/C++语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。在实际应用中,建议用unsigned整型操作数,因为带符号操作数可能因为不同机器结果不同。
操作符 | 功能 | 用法 |
~ | 位求反 | ~expr |
<< | 左移 | expr1 << expr2 |
>> | 右移 | expr1 >> expr2 |
& | 位与 | expr1 & expr2 |
^ | 位异或 | expr1 ^ expr2 |
| | 位或 | expr1 | expr2 |
0&0=0;
0&1=0;
1&0=0;
1&1=1;
也就是
& | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
| | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 1 |
^ | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 0 |
>>右移操作,相当于除以2
左移右移都不会改变自身的数值
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int a = 43;
cout << (a >> 2) << endl;//必须用括号括起来
cout << a << endl;
//a>>2相当于a/(2的2次方)==a/4==43/4
/*
10
43
*/
return 0;
}