位运算基础
&
按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
|
按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
^
按位异或
若参加运算的两个二进制位值相同则为0,否则为1
~
取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1
<<
左移
用来将一个数的各二进制位全部左移N位,右补0
>>
右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0
交换a、b两个数
#include<iostream>
using namespace std;
int main(){
int a=8,b=9; //a=0100 b=0101
a=a^b; //a=0001 b=0101
cout<<a<<" "<<b<<endl;
b=a^b; //a=0001 b=0100
cout<<a<<" "<<b<<endl;
a=a^b; //a=0101 b=0100