位运算说明及常用应用场景

& (与,和,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

猜你喜欢

转载自blog.csdn.net/lygl35/article/details/112462338