1、异或的含义 异或运算与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为真,而另外一个的值为非真。转化为命题,就是:“两者的值不同”或“有且仅有一个为真”。符号为XOR或EOR或⊕(编程语言中常用^)。 “或”在数学中的含义:一个元素在集合A中或在集合B中,“或”的维恩图如下:
而“异或”是不允许共存的,所以 A^B 的维恩图如下:
同理对于 A^B^C 维恩图:
异或运算 A^B 的真值表如下:
F 表示false, T 表示true
| A | B | ⊕ |
|---|---|---|
| F | F | F |
| F | T | T |
| T | F | T |
| T | T | F |
| A | B | ⊕ |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
任何数“异或”自己 = 把自己置 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();
最后得出单独的数:4
如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号 [路人甲DotNet] 社区,与其他热爱技术的同行一起交流心得,共同成长!