Java中按位或和按位异或的区别

11
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

我理解前两个,但第三个不太懂。

4个回答

20

XOR用来判断每一位是否不同。

1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0

换句话说,"既不全是对的也不全是错的"。

0011 XOR 0101 = 0110


11

按位包含或(|)表示正常的操作,

按位排除或(^)表示xor操作。


3

第三个是异或运算(Xclusive-OR)

它表示,OR应该是独占的: 相同的将会是False(0) 而不同的将会是True(1)。

因此12的二进制为1100

所以,在这里执行按位异或操作:

  1 1 0 0
  1 1 0 0
---------
  0 0 0 0
---------

每一列的数字都相同,要么都是1,要么都是0。 XOR运算表示,两个数字应该不同。因此所有数字都是0。


1

异或(XOR)的定义如下:

0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0

那就是说,当两个值相同时,结果为0;当它们不同时,结果为1
因此,给定两个完全相等的位模式,每个异或位都将计算为0,因为每个位要么在两个位置上都有1,要么在两个位置上都有0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接