谁能用一个好的例子来解释这个运算符?
我知道这个运算符是什么意思。我的意思是一个现实生活中的例子。
谁能用一个好的例子来解释这个运算符?
我知道这个运算符是什么意思。我的意思是一个现实生活中的例子。
它是逻辑运算中的一种实现,叫做“异或门”。
http://zh.wikipedia.org/wiki/异或
异或门通常用于位运算。例如:
- 1 xor 1 = 0
- 1 xor 0 = 1
- 0 xor 1 = 1
- 0 xor 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)
foo ^ bar
和foo != bar
不是等价的吗? - T_Dbool foo = true;
bool bar = false;
if (foo ^ bar) { bar = true;} // this evaluates to true
bool baz = foo ^ bar; // This evaluates to false, since both statements are now true.
编程语言的参考文档通常是查找运算符定义的最佳途径。
在这种情况下,MSDN是C#运算符最合适的定义。
根据文档:
二进制^运算符是为整数类型和布尔类型预定义的。对于整数类型,^计算其操作数的按位异或。对于布尔操作数,^计算其操作数的逻辑异或;也就是说,仅当其操作数中恰好有一个为true时,结果才为true。
还列举了一个示例。
XOR是一种常见的布尔运算符,在C#中并没有什么特别之处。 我建议学习一下布尔代数,了解它在1位上的用途, 然后检查当你使用任意两个数字或字符a和b进行(a XOR b) XOR b操作时会得到什么。