关于c#:何时使用“^”运算符


When to use “^” operator

下面的接线员是什么?什么时候使用?

我的编程语言是C。


^是一个逻辑异或运算符,如果是bools operands,否则它是一bitwise异或运算符

Binary ^ operators are predefined for the integral types and bool. For integral types, ^ computes the bitwise exclusive-OR of its operands. For bool operands, ^ computes the logical exclusive-or of its operands; that is, the result is true if and only if exactly one of its operands is true.http://msdn.microsoft.com/en-us/library/zkacc7k1.aspx


它的异或运算符。它可用于在bitwise操作,如果结果是真的左侧或右侧是真是假,如果是真的,但这是真或是假。我是这样的:0xf8 ^ 0x3f

1
2
3
4
1111 1000
0011 1111
---------
1100 0111

这是在C7是十六进制形式。

总的来说,如果你需要做bitwise算术,你不需要担心。


  • 它经常被用来作为一个方法来"倒装"它与1位xoring(倒装)0(保持)。通常,这是有用的在加密/解密/散列。这实际上是有用的* * * *

例子:

1
2
3
4
101 ^  
110  
-----
011   //Flip the first 2, keep the 3rd
  • 它也可以被用于A交换不过,使用标准的方法理想的方式是与更多的仿制药)

例子:

1
2
3
4
5
6
7
8
9
10
int myMoney = 10;
int yourMoney = 50;
Swap(myMoney, yourMoney)

public void Swap(ref int a, ref int b) //No 'temp' variable necessary
{
  a ^= b;
  b ^= a;
  a ^= b;
}
  • 它是用来在二进制算术。这实际上是有用的* * * *

  • 倒装a布尔(虽然,我宁愿使用bool x = true;X!= x;

例子:

1
2
3
4
public bool flip(ref bool b)
{
    b ^= true;
}

http://。/en-US /图书馆/ zkacc7k1(.aspx vs.71)


其独家或(XOR)操作是由上述其他。这里是真相台异或

1
2
3
4
5
P    Q    P^Q
T    T     F
T    F     T
F    T     T
F    F     F

注意到P(Q P是平等的!有时,P = Q!在代码= Q是不是异或运算符。


我认为它作为一个二元运算符|就像| &;&;等等……

如果我是一个逻辑和写作来:

1
2
3
if( (condition1 && !condition2) || (condition2 && !condition1) )
{
}

i可能重写它。

1
2
3
if( condition1 ^ condition2)
{
}

这是说,我把它在一个由基地和基地的案例weigh福利大学brevity VS潜力相对obscurity由于混淆。