运算符
输出的时候:
cout<<(a运算符b)<<endl;
其中的或的符号是 |
& | 按位与。 当左右操作数相应的二进制都是1,结果的相应位才被置换为1 |
---|---|
或 | 按位或。当左右操作相应的二进制为其中有一个是1,结果的相应位是1 |
^ | 按位异或。当且仅当左右操作数相应的二进制位其中有一个是1,相对应才被置换成1 |
<< | 左移。将左操作数按位向左移动,移动后腾空的位数补0.移动的位数由右操作数指定 |
>> | 右移。将左操作数按位向右移动,最高位不变,其余腾空的位数补0.移动的位数由右操作数指定 |
~ | 按位取反。将操作数中所有的1变0,0变1 |
&= | 按位与赋值 |
或= | 按位或赋值 |
^= | 按位异或赋值 |
<<= | 按位左移赋值 |
>>= | 按位右移赋值 |
&
找上下两个不同的就可以,只要两个一样并且都是1,则最后结果是1
例子:
0010011&0011011
0010011 (这样书写可以更加直观的看出来)
0011011
结果:
0010011
|
例子:
0010011|0011011
0010011
0011011
结果:
0011011
^
例子:
0010011^0011011
0010011
0011011
结果:
0001000
<<
例子:
0010011<<2
结果:
1001100
例子:
0010011<<4
结果:
10110000
进行运算左移的时候,不会移动符号位所以
cout<<(-10<<2)<<endl;
-40
~
例子:
0010011
结果:
1101100
位运算的符合运算
a&=b //等价于a=a&b
a|=b //等价于a=a|b
a ^ =b //等价于a=a^ b
a << =b //等价于a=a<< b
a >>=b //等价于a=a>>b