谁能用一个很好的例子来解释这个运算符?
我知道这个运算符是什么。我的意思是一个现实生活中的例子。
它是逻辑操作的实现exclusive disjunction
http://en.wikipedia.org/wiki/Exclusive_or
排他析取常用于按位运算。例子:
- 1 异或 1 = 0
- 1 异或 0 = 1
- 0 异或 1 = 1
- 0 异或 0 = 0
- 1110 xor 1001 = 0111(这相当于没有进位的加法)
如上所述,由于异或与模 2 加法相同,因此两个 n 位字符串的按位异或与向量空间 (Z/2Z)^4 中的标准加法向量相同。
在计算机科学中,异或析取有多种用途:
- 它告诉两个位是否不相等。
- 它是一个可选的位翻转器(决定输入选择是否反转数据输入)。
- 它告诉是否有奇数个 1 位(如果奇数个变量为真,则为真)。
(以及大量其他用途)
例如,像这样:
var result = a ^ b;
result a b
--------------------------------
true true false
true false true
false true true
false false false
要使“异或”计算为真,只有一个操作数必须为真。
foo ^ bar
相当于
(foo && !bar) || (!foo && bar)
使用 XOR 时,仅当比较语句中只有一个为真时,该语句才计算为真。所以:
bool foo = true;
bool bar = false;
if (foo ^ bar) { bar = true; // this evaluates to true }
if (foo ^ bar) { // This evaluates to false, since both statements are now true. }
编程语言的参考总是寻找运算符定义的最佳位置。
在这种情况下,MSDN 是最适合 C# 运算符的定义。
根据文档:
二进制 ^ 运算符是为整数类型和 bool 预定义的。对于整数类型,^ 计算其操作数的按位异或。对于 bool 操作数,^ 计算其操作数的逻辑异或;也就是说,当且仅当其操作数之一为真时,结果才为真。
还列出了一个例子。
XOR 是一个常见的布尔运算符,在 C# 中没有任何独特之处。我建议阅读一些关于布尔代数的知识,以了解它在 1 位上的用途,然后检查当你对任意两个数字或字符 a 和 b 进行 (a XOR b) XOR b 时得到的结果。