请解释为什么输出是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
输出是 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