玄元一墨 发表于 2023-9-19 15:49:58

二进制数的逻辑运算

二进制数的逻辑运算有四种:“与”运算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
https://img2023.cnblogs.com/blog/1252513/202304/1252513-20230402145722429-887991247.png
深入扩展用法:
(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

https://img2023.cnblogs.com/blog/1252513/202304/1252513-20230402145658476-1233392134.png
深入扩展用法:
(1)与0相“与”可清零。例如:对x的第0、3位清零的操作为 x & 11110110B。
(2)与1相“与”可保留原值,例如:取x中的后两位的操作为 x & 00000011B。
(3)可以判断二进制数的奇偶。如果x&1=0,则x为偶数。
(4)可以清除掉二进制整数最右边的1,操作为 x & (x – 1)



3、“非”运算NOT(逻辑否定)
通常用符号“~”、“!”或者上方加一横线来表示。
运算规则如下:
https://img2023.cnblogs.com/blog/1252513/202304/1252513-20230402145510416-1410356070.png
例如:求~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
https://img2023.cnblogs.com/blog/1252513/202304/1252513-20230402145931697-1600877610.png
深入扩展用法:
(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



本文转载自博客园:https://www.cnblogs.com/huigui-mint/p/17280508.html



页: [1]
查看完整版本: 二进制数的逻辑运算