C# 异或运算符(^)

263 阅读1分钟

1、异或的含义 异或运算与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为真,而另外一个的值为非真。转化为命题,就是:“两者的值不同”或“有且仅有一个为真”。符号为XOR或EOR或⊕(编程语言中常用^)。 “或”在数学中的含义:一个元素在集合A中或在集合B中,“或”的维恩图如下:

image.png

而“异或”是不允许共存的,所以 A^B 的维恩图如下:

image.png

同理对于 A^B^C 维恩图:

image.png

异或运算 A^B 的真值表如下:

F 表示false, T 表示true

AB
FFF
FTT
TFT
TTF
AB
000
111
101
110

任何数“异或”自己 = 把自己置 0

2、异或的性质:满足交换律和结合律

  • 交换律:A^B = B^A
  • 结合律:A^(B^C) = (A^B)^C
  • 恒等律:X^0 = X
  • 归零律:X^X = 0
  • 自反:A^B^B = A^0 = A
  • 对于任意的X:X^(-1) = ~X
  • 如果 A^B = C 成立,那么 A^B = C, B^C = A

3、异或的应用

int result = 0;

int[] arr = [1, 1, 2, 2, 3, 3, 4, 5, 5];

foreach (int i in arr)
{
    result ^= i;
}

Console.WriteLine($"找出单独的数:{result}");

Console.ReadKey();

image.png

最后得出单独的数:4

如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号  [路人甲DotNet]  社区,与其他热爱技术的同行一起交流心得,共同成长!