四种位运算
与(&) (and)
0与0=0,0与1=0,1与0=0;
有0则0
或(|)(or)
1或1=1,0或0=0,0或1=1
有1则1
取反(~)'(not)
~1=0,~0=1
异或(^)(xor)
1^1=0 0^0=0 1^0=1;
不同为1
如果是
int a = 101;
int b = 100;
就每一位都做运算即可
记得转为二进制
左移右移
a =10110;//这玩意二进制
a>>k;//a向右移k位等价于 a/2的k次方
a<<k;//a左移动k位就是往后补0 等价于 a*2的k次方
数字编号4 3 2 1 0
a = 1 0 1 1 0
a>>k&1;//就可以查看第k位是1还是0了
lowbit(a);//返回a的最后一位1 比如说 1010 返回10(右边的)
作用:求一下a里面1的个数
这个操作等价于
a & -a;
将输入的数表示成2进制位
int n;
cin>>n;
for(int i = 1 ; i >=0 ; i--)cout<< (n>>i & 1);
x=1010
原码 00001010
反码 ~x
补码 ~x+1 就1前面的0全部变成1然后1本身不变后面取反
```
赞!用的少总是会忘!!
赞!用的少总是会忘!!