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

Roc*_*tim -3 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 );
    }

}
Run Code Online (Sandbox Code Playgroud)

Kep*_*otx 9

XOR代表独家或

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

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

按位异或

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

12  = 00001100
05  = 00000101
Run Code Online (Sandbox Code Playgroud)

然后,您应用XOR

12  = 00001100
05  = 00000101
XOR = 00001001
Run Code Online (Sandbox Code Playgroud)

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

00001001 = 9
Run Code Online (Sandbox Code Playgroud)