什么是C#独占或`^`用法?

时间:2011-06-21 08:21:53

标签: c# operators bitwise-operators bitwise-xor

有人能用一个很好的例子来解释这个算子吗?

我知道这个运营商是什么。我的意思是一个真实的例子。

6 个答案:

答案 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#运算符最合适的定义。

根据the documentation

  

二进制^运算符是预定义的   积分类型和布尔。对于   积分类型,^按位计算   其操作数的异或。对于布尔   操作数,^计算逻辑   独家或其操作数;那是,   结果是真的,当且仅当   其中一个操作数是真的。

还列出了一个例子。

答案 5 :(得分:0)

XOR是一个常见的布尔运算符,在C#中没有任何独特的东西。 我建议阅读一些关于布尔代数的内容,以了解它用于1位的内容, 然后检查你做什么(一个XOR b)XOR b,任意两个数字或字符a和b。