本条目存在以下问题,请协助 改善本条目或在 讨论页针对议题发表看法。
此条目没有列出任何参考或来源。 (2018年12月5日) 维基百科所有的内容都应该可供查证。请协助补充可靠来源以改善这篇条目。无法查证的内容可能会因为异议提出而移除。 |
此条目需要更新。 (2018年12月5日) 请更新本文以反映近况和新增内容。完成修改时,请移除本模板。 |
此条目需要精通或熟悉相关主题的编者参与及协助编辑。 (2013年10月25日) 请邀请适合的人士改善本条目。更多的细节与详情请参见讨论页。 |
|
“
异或”和“
互斥或”均重定向至此。关于逻辑门,请见“
异或门”。
在数字逻辑中,逻辑算符异或(英语:Exclusive or)是对两个运算元的一种逻辑分析类型。与一般的逻辑或不同,当两两数值相同时为否,而数值不同时为真。
的
文氏图
对于命题 ,异或通常记作或。在编程语言中,常写作p ^ q
。
真值表
异或运算 的真值表如下:
|
|
|
---|
True |
True |
False
|
True |
False |
True
|
False |
True |
True
|
False |
False |
False
|
注:True:真,False:假。
|
无论怎样改变同一行中 的位置,真值表都是成立的。
其他表示
在数学和工程学中,常常用其他的逻辑运算符来表示异或算符。异或算符可以使用逻辑算符逻辑与 ,逻辑或 和逻辑非 表示为:
-
另外,异或算符可以被推广,得到关于n个运算元的异或运算:n个运算元的n维异或的值为真当且仅当其中值为真的运算元有奇数个。
异或也可以被表示为:
-
异或还可以看作是逻辑等价关系的非运算。
性质
交换律:
结合律:
恒等律:
归零律:
自反:
与抽象代数的关系
尽管算子 (逻辑合取)与 (逻辑析取)是逻辑系统中最为常见的算子,但结构上,系统 and 只是幺半群。因此,这两个系统无法合成为一个更大的结构,比如环或半环。
但是,带有逻辑异或的系统 是一个交换群。因此,算子 与 的结合在集合 上作用就产生了最基本的二元域 。这个域可以得出所有运用 可以得到的结果,并且由于附带了域的结构,可以进行代数上的进一步分析。
类似符号
名称 |
符号 |
Unicode |
图形 |
符号的来源
|
---|
地球 |
🜨 |
U+2295 |
|
带有赤道和一条经线的球体
|
应用
使用异或运算交换两个 int 类型变量的数值
C/C++
void swap(int *a, int *b) {
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
Java
public void swap(int &a, int &b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
C#
public void swap(ref int a,ref int b)
{
a^=b;
b^=a;
a^=b;
}
虽然XOR运算可用来交换变量,但比起使用额外变量来交换变量的做法相比,性能反而比较差。
参考来源
参见