有人能用一个很好的例子来解释这个算子吗?
我知道这个运营商是什么。我的意思是一个真实的例子。
答案 0 :(得分:13)
它是逻辑操作exclusive disjunction
http://en.wikipedia.org/wiki/Exclusive_or
独占分离通常用于按位运算。示例:
- 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位(如果奇数个变量为真,则为真)。
(以及其他一些用途)
答案 1 :(得分:5)
例如,像这样:
var result = a ^ b;
result a b
--------------------------------
true true false
true false true
false true true
false false false
答案 2 :(得分:3)
对于“exclusive”或“to to to true one”且只有一个操作数必须为true。
foo ^ bar
相当于
(foo && !bar) || (!foo && bar)
答案 3 :(得分:2)
使用XOR时,如果只有一个比较语句为真,则语句仅计算结果为true。所以:
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. }
答案 4 :(得分:0)
编程语言的引用始终是查找运算符定义的最佳位置。
在这种情况下,MSDN是C#运算符最合适的定义。
二进制^运算符是预定义的 积分类型和布尔。对于 积分类型,^按位计算 其操作数的异或。对于布尔 操作数,^计算逻辑 独家或其操作数;那是, 结果是真的,当且仅当 其中一个操作数是真的。
还列出了一个例子。
答案 5 :(得分:0)
XOR是一个常见的布尔运算符,在C#中没有任何独特的东西。 我建议阅读一些关于布尔代数的内容,以了解它用于1位的内容, 然后检查你做什么(一个XOR b)XOR b,任意两个数字或字符a和b。