请解释输出为9的结果如何?

时间:2018-04-04 12:49:13

标签: java printing byte xor

输出为9,我无法理解整个按位XOR概念。

public class XOR {

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

}

2 个答案:

答案 0 :(得分:9)

XOR代表排他性或

  

独占或独占析取是一种逻辑操作,只有当输入不同时才输出true(一个为真,另一个为假)

在你的情况下,它是一个按位比较,所以在同一位置的每个0和1进行比较

bitwise XOR

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

12  = 00001100
05  = 00000101

然后,您应用XOR

12  = 00001100
05  = 00000101
XOR = 00001001

最后,您将二进制转换为十进制

00001001 = 9

答案 1 :(得分:1)

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