& (与,和,AND)
可以叫 AND运算,与运算,同时为真才为真
00111100
& 11101011
-------------
00101000
& 应用场景1:对某一位置0
例如我们需要对下面这个数的第二位至零,而且不破坏其它位的值就可以用&运算
10 10 01 10
& 11 11 11 01
--------------
10 10 01 01
& 应用场景2: 获取某二进制数的第N位的值是多少
例如:获取 0x7F,二进制数第4位的值是多少?
01111111
& 00001000
-------------
00001000
结果:第四位就是1
要计算位的值与1进行&运算,运算的结果就是该位的值
| (或,OR)
两者有一个为真就为真
| 应用场景:对某一位置1
例如我们需要对下面这个数的第二位和和第四位置1,而且不破坏其它位的值就可以用|运算
10 10 01 00
| 00 00 10 10
--------------
10 10 11 10
^ (异或 XOR)
位相同结果为假,不相同结果为真
11 11 11 11
^ 11 11 11 11
---------------
00 00 00 00
10 10 10 10
^ 10 10 10 10
--------------
00 00 00 00
00100000
^ 01010100
------------
01110100
^ 应用场景1:清零处理
xor eax,eax //对EAX寄存器,进行清零处理
^ 应用场景2:做加密
最简单的加密算法:
要加密的数据:2021
密钥:19
用异或运算加密:
00100000 00100001
^ 00011001 ^ 00011001
------------ ------------
00111001 00111000
加密后结果:39 38
用异或运算解密:
00111001 00111000
^ 00011001 ^ 00011001
------------ ------------
00100000 00100001
解密后结果:20 21
!(not 非 取反)
>> << (左移 右移)
例如 右移2两位
10 10 10 10
00 10 10 10