输出为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 );
}
}
答案 0 :(得分:9)
XOR代表排他性或
独占或独占析取是一种逻辑操作,只有当输入不同时才输出true(一个为真,另一个为假)
在你的情况下,它是一个按位比较,所以在同一位置的每个0和1进行比较
第一步是将值从十进制转换为二进制
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