请解释为什么输出是9?

Please explain how come the output is 9?

输出是 9,我无法理解整个按位异或概念。

public class XOR {

    public static void main( String[] args ) {
        int a = 12;
        int b = 5;
        int c = a ^ b;
        System.out.print( c );
    }

}

XOR代表异或

Exclusive or or exclusive disjunction is a logical operation that outputs true only when inputs differ (one is true, the other is false)

在你的例子中,它是一个按位比较,所以比较相同位置的每个 0 和 1

第一步是将值从十进制转换为二进制

12  = 00001100
05  = 00000101

然后,你应用 XOR

12  = 00001100
05  = 00000101
XOR = 00001001

最后,你从二进制转换为十进制

00001001 = 9

XOR 运算符首先将您的两个值转换为它们的二进制等价物。二元运算将应用于相应的位,并且当相应的位不相等时,XOR 运算符的计算结果为真 (1)。例如,2^1 = 3 [10 ^ 01] 注意第一位和第二位不同,因此两个位的计算结果都是 1。

在你的例子中:12^5

12 = 1 1 0 0

5 = 0 1 0 1

第一位和第四位的值相反,所以第一位和第四位的值为1,而其余位的值为0,所以解为1001 = 9