^ XOR运算符 异或运算 0^0=0;0^1=1;1^0=1;1^1=0
& 与运算 0&0=0;0&1=0;1&0=0;1&1=1;
| 或运算 0|0=0;1|0=1;0|1=1;1|1=1;
这些三个都是位运算。系统将两者二进制的右侧对齐后运算。
一般我们用的正数,正数会在不够长的左边补上0,如:
1|4
1=001(2进制)
4=100(2进制)
所以1|4=101(二进制)=5(10进制)
<< 左移运算符 将a的二进制左移 a=a<<2 相当于a的二进制左移两位,空出的补上0,相当于a的十进制*2再*2
>> 右移运算符 将a的二进制右移 a=a>>2 相当于a的二进制右移两位,相当于a的十进制/2再/2,
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
freopen("in.txt","r",stdin); freopen("out.txt","w",stdout);