【问题标题】:Difference between bitwise inclusive or and exclusive or in javajava中按位包含或和排他或之间的区别
【发布时间】:2013-05-14 14:43:47
【问题描述】:
public class Operators {
public static void main(String[] args) {
int a = 12;
System.out.println("Bitwise AND:"+(12&12));
System.out.println("Bitwise inclusive OR:"+(12|12));
System.out.println("Bitwise exclusive OR:"+(12^12));
}
}
OUTPUT:
Bitwise AND:12
Bitwise inclusive OR:12
Bitwise exclusive OR:0
前两个我懂,第三个不懂。
【问题讨论】:
标签:
java
operators
bitwise-operators
【解决方案1】:
BITWISE INCLUSIVE OR (|) 表示正常的或运算,
BITWISEE 异或 (^) 表示 xor 运算
【解决方案2】:
第三个是异或运算(Xclusive-OR)
它说,OR 应该是:
相似的地方是 False(0)
和不同将是 True(1)。
所以二进制的 12 是 1100
所以,在这里执行按位异或:
1 1 0 0
1 1 0 0
---------
0 0 0 0
---------
每一列都有相同的数字,要么都是 1,要么都是 0
XOR 说,两者应该不同。因此全为零
【解决方案3】:
独占或(XOR)定义为:
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0
即两个值相同时为0,不同时为1。
因此,给定两个完全相等的位模式,每个 XORed 位将计算为 0,因为每个位要么在两个位置都有 1,要么在两个位置都有 0。
【解决方案4】:
XOR 判断每个位是否不同。
1 异或 1 = 0
1 异或 0 = 1
0 异或 1 = 1
0 异或 0 = 0
换句话说,“两者都不是”
0011 异或 0101 = 0110