java中按位包含或与排他或的区别

java中按位包含或与排他或的区别,java,operators,bitwise-operators,Java,Operators,Bitwise Operators,我理解前两个,但不理解第三个。异或判断每个位是否不同 1异或1=0 1异或0=1 0异或1=1 0异或0=0 换言之,“要么,但不是两者” 0011 XOR 0101=0110异或(XOR)定义为: public class Operators { public static void main(String[] args) { int a = 12; System.out.println("Bitwise AND:"+(12&12))

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

异或判断每个位是否不同

1异或1=0
1异或0=1
0异或1=1
0异或0=0

换言之,“要么,但不是两者”

0011 XOR 0101=0110

异或(
XOR
)定义为:

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
也就是说,如果两个值相同,则为
0
,如果两个值不同,则为
1


因此,给定两个完全相等的位模式,每个异或位将计算为
0
,因为每个位在两个位置都有
1
,或者在两个位置都有
0

第三个是异或操作(异或)

它说,或者说应该是: 其中类似项为假(0) 不同的情况将是正确的(1)

所以二进制中的12等于1100

因此,在此处执行按位异或:

0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0
每列都有相同的数字,要么都是1,要么都是0 XOR说,两者应该是不同的。因此,所有零都是按位包含或(|)表示正常的操作

位异或(^)表示异或运算

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