二进制数的逻辑运算

发布时间 2023-04-02 15:09:24作者: huigui_mint

二进制数的逻辑运算有四种:“与”运算AND、“或”运算OR、 “非”运算NOT、“异或”运算XOR。

其中“或”运算又称逻辑加法、“与”运算又称逻辑乘法、“非”运算又称逻辑否定,“异或”运算又称逻辑半加法。二进制数1和0在逻辑上可以代表“真”与“假”、“是”与“否”、“有”与“无”。二进制数的逻辑运算算术运算是截然不同的,二进制数的逻辑运算是位对位的运算,本位运算结果不会对其他位产生任何影响,即不会出现算术运算中的进位或者借位。

1、“或”运算OR(逻辑加法)

通常用符号“+”或“∨”或“|”来表示。

运算规则如下:0+0=0 ,0+1=1 ,1+0=1 ,1+1=1

0∨0=0,0∨1=1,1∨0=1,1∨1=1

0|0=0, 0|1=1, 1|0=1, 1|1=1

表示两者只要有一个1,其逻辑或的结果就为1。

简单总结为:“遇1得1”,也类似于并联电路。

例如:求51 | 5

深入扩展用法:

(1)与0相“或”可保留原值,与1相“或”可将对应位置1。

例如:将X=10100000的高四位不变,低四位置1的操作为 x| 00001111 = 10101111。

例如:将x的第1、2位置1的操作为x | 00000110B

(2)可以给二进制特定位上的数无条件赋值,比如把二进制最末位强行变成1,或者把二进制最末位变成0。

例如:把A=4(二进制为100)末位变为1的操作为 A|1= (100|001=101);

把A=7(二进制为111)末位变为0的操作为 A|1-1= (111|001-1=110)。

(3)可以判断二进制数的奇偶。二进制的最末为0,表示该数为偶数,最末尾为1表示该数为奇数。例如:如果x|0=0,则x为偶数。

2、“与”运算AND(逻辑乘法)通常用符号“×”或“∧”或“·”或“&”来表示。

运算规则如下:

0×0=0,0×1=0,1×0=0,1×1=1

0∧0=0,0∧1=0,1∧0=0,1∧1=1

0·0=0,0·1=0,1·0=0,1·1=1

0&0=0 ,0&1=0 ,1&0=0 ,1&1=1

表示只有当两者同时为1时,其逻辑与的结果才能等于1。

简单总结为:“遇0得0”,类似于串联电路。

例如:求51 & 5

 

 

深入扩展用法:

(1)与0相“与”可清零。例如:对x的第0、3位清零的操作为 x & 11110110B。

(2)与1相“与”可保留原值,例如:取x中的后两位的操作为 x & 00000011B。

(3)可以判断二进制数的奇偶。如果x&1=0,则x为偶数。

(4)可以清除掉二进制整数最右边的1,操作为 x & (x – 1)

3、“非”运算NOT(逻辑否定)

通常用符号“~”、“!”或者上方加一横线来表示。

运算规则如下:

例如:求~51

~ 00110011=11001100

简单总结为:“取反”。非开即关,非关即开。

4、“异或”运算XOR(逻辑半加运算)通常用符号“^”、“⊕”来表示,

运算规则为:0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0

0^0=0, 0^1=1, 1^0=1, 1^1=0表示只有当两者不相同时,结果才为1,两者相同时结果为0。

简单总结为:“异1同0” ,直观意思即判断“是不是不一样”。

例如:求51 ^ 5

深入扩展用法:

(1)与0相”异或“可保留原值,与1相”异或“可将对应位置取反。例如:对x的3、7位取反的操作为 x^ 10001000B

(2)异或运算的逆运算是他本身,也就是说一个数经过两次异或后还是它本身。

(3)一个数和0异或是它的本身,和自身异或为0。即x^0=x ,x^x=0 。

(4)异或运算可以用于交换两个整数,不使用中间变量。

交换方法为:

A = A ^ B

B = A ^ B

A = A ^ B

证明:

已知 a=51,b=5

那么:

a=a^b=51^5

b=a^b=(51^5)^5=51^5^5=51^0=51

a=a^b=(51^5)^51=51^51^5=0^5=5

得到:a=5,b=51