public class Operators {
public static void main(String[] args) {
int a = 12;
System.out.println("Bitwise AND:"+(12&12));
System.out.println("Bitwise inclusive OR:"+(12|12));
System.out.println("Bitwise exclusive OR:"+(12^12));
}
}
OUTPUT:
Bitwise AND:12
Bitwise inclusive OR:12
Bitwise exclusive OR:0
我理解前两个,但不是第三个。
答案 0 :(得分:17)
XOR告诉每个位是否不同。
1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0
换句话说“要么不是两个都”
0011 XOR 0101 = 0110
答案 1 :(得分:6)
BITWISE INCLUSIVE OR(|)表示正常或操作,
BITWISEE ExCLUSIVE OR(^)表示 xor 操作
答案 2 :(得分:3)
第三个是XOR操作(Xclusive-OR)
它说,或者应该是唯一的: 其中类似的将是假(0) 和不相似的将是真(1)。
所以十二进制中的12将是1100
所以,在这里执行按位异或:
1 1 0 0
1 1 0 0
---------
0 0 0 0
---------
每列都有相同的数字,要么都是1,要么两者都是0 XOR说,两者都应该不同。因此全部为零
答案 3 :(得分:1)
Exclusive或(XOR
)定义为:
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0
也就是说,当两个值相同时为0
,如果它们不同则为1
。
因此,假设两个位模式完全相等,每个XOR位将评估为0
,因为每个位在两个位置都有1
,或者在两个位置都有0
答案 4 :(得分:-2)
因为您使用的运算符是按位运算符,所以转换操作数 比特然后操作员对它们采取行动。
这里12 - > 1100以二进制数字(位)
和&(AND),|(OR)和^(异或或异或)运算符的运算如下:
A B& | ^ 强>
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
所以当你表演12 ^ 12时:
A = 1100
B = 1100
A B ^
1 1 0
1 1 0
0 0 0
0 0 0
和0000 - >十进制系统中的0
因此你在第三个答案中得到12 ^ 12 = 0