逻辑异或

A⊕B{displaystyle {begin{smallmatrix}Aoplus Bend{smallmatrix}}}
在数字邏輯中,逻辑算符互斥或閘(exclusive or)是对两个运算元的一种邏輯分析类型,符号为XOR或EOR或⊕。与一般的邏輯或OR不同,當兩兩數值相同為否,而數值不同時為真。
两个运算元(命题):A与B的异或一般写成A异或B,或者写成AXORB{displaystyle Aquad mathrm {XOR} quad B}、A⊕B{displaystyle Aoplus B}
、A≠B{displaystyle Aneq B}
等等。在C语言中,写作A^B。
目录
1 真值表
2 其他表示
3 性质
4 与近世代数的联系
5 類似符號
6 使用异或运算交换两个 int 类型变量的数值
7 参考来源
8 参见
真值表
异或运算A⊕B{displaystyle Aoplus B}的真值表如下:
F表示false,T表示true
A |
B |
⊕ |
---|---|---|
F | F | F |
F | T | T |
T | F | T |
T | T | F |
可以注意到无论怎样改变同一行中A{displaystyle A}、B{displaystyle B}
和⊕{displaystyle oplus }
的位置,真值表都是成立的。
其他表示
在数学和工程学中,常常用其他的逻辑运算符来表示异或算符。异或算符可以被其他逻辑算符表示为:
- A⊕B=(A∧¬B)∨(¬A∧B)=AB¯+A¯B=(A∨B)∧(¬A∨¬B)=(A+B)(A¯+B¯)=(A∨B)∧¬(A∧B)=(A+B)(AB¯){displaystyle {begin{matrix}Aoplus B&=&(Aland lnot B)&lor &(lnot Aland B)=A{overline {B}}+{overline {A}}B\\&=&(Alor B)&land &(lnot Alor lnot B)=(A+B)({overline {A}}+{overline {B}})\\&=&(Alor B)&land &lnot (Aland B)=(A+B)({overline {AB}})end{matrix}}}
另外,异或算符可以被推广,得到关于n个运算元的异或运算:n个运算元的n维异或的值为真当且仅当其中值为真的运算元有奇数个。
异或也可以被表示为:
- A⊕B=¬((A∧B)∨(¬A∧¬B)){displaystyle {begin{matrix}Aoplus B&=&lnot ((Aland B)lor (lnot Aland lnot B))end{matrix}}}
异或还可以看作是逻辑等价关系的非运算。∧{displaystyle wedge } ∨{displaystyle lor }
性质
交换律:A⊕B=B⊕A{displaystyle Aoplus B=Boplus A}
结合律:A⊕(B⊕C)=(A⊕B)⊕C{displaystyle Aoplus (Boplus C)=(Aoplus B)oplus C}
恒等律:X⊕0=X{displaystyle Xoplus 0=X}
归零律:X⊕X=0{displaystyle Xoplus X=0}
自反:A⊕B⊕B=A⊕0=A{displaystyle Aoplus Boplus B=Aoplus 0=A}
与近世代数的联系
尽管算子∧{displaystyle wedge }(逻辑合取)与∨{displaystyle lor }
(逻辑析取)是逻辑系统中最为常见的算子,但结构上,系统({T,F},∧){displaystyle ({T,F},wedge )}
and ({T,F},∨){displaystyle ({T,F},lor )}
只是幺半群。因此,这两个系统无法合成为一个更大的结构,比如环或半环。
但是,带有逻辑异或的系统({T,F},⊕){displaystyle ({T,F},oplus )}是一个交换群。因此,算子∧{displaystyle wedge }
与⊕{displaystyle oplus }
的结合在集合{T,F}{displaystyle {T,F}}
上作用就产生了最基本的二元域F2{displaystyle F_{2}}
。这个域可以得出所有运用(∧,∨){displaystyle (land ,lor )}
可以得到的结果,并且由于附带了域的结构,可以进行代数上的进一步分析。
類似符號
名稱 | 符號 | Unicode | 圖形 | 符號的來源 |
---|---|---|---|---|
地球 | ⊕ | U+2295 | ![]() |
带有赤道和一條經線的球體 |
使用异或运算交换两个 int 类型变量的数值
1 public void switch(int &a, int &b){
2 a = a ^ b;
3 b = a ^ b;
4 a = a ^ b
5
6 }
参考来源
参见
- 异或门
- 异或密码
|
Comments
Post a Comment