查看“︁逻辑异或”︁的源代码
←
逻辑异或
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{多個問題| {{unreferenced|time=2018-12-05T15:18:09+00:00}} {{expert|time=2013-10-25T19:31:10+00:00}} }} {{NoteTA |G1 = Electronics |G2 = IT }} {{Redirect-multi|2|異或|互斥或|邏輯門|异或门}} [[File:Venn0110.svg|thumb| {{Smallmath|f= p \oplus q}} 的[[文氏图]] ]] 在-{zh-hant:數位;zh-hans:数字}-[[逻辑]]中,[[逻辑运算符|逻辑算符]]'''互斥或'''({{lang-en|Exclusive or}})是对两个[[运算元]]的一种[[逻辑或|邏輯分析]]类型。与一般的[[邏輯或]]不同,當兩兩數值相同時為否,而數值不同時為真。<ref name="wolfram">{{cite web|last1=Germundsson|first1=Roger|last2=Weisstein|first2=Eric|title=XOR|url=http://mathworld.wolfram.com/XOR.html|access-date=17 June 2015|website=[[MathWorld]]|publisher=[[Wolfram Research]]|archive-date=2015-09-05|archive-url=https://web.archive.org/web/20150905155452/http://mathworld.wolfram.com/XOR.html|dead-url=no}}</ref> 对于[[命题]] <math>p, q</math>,<math>p</math>异或<math>q</math>通常记作<math>p \operatorname{XOR} q</math>或<math>p \oplus q</math>。在编程语言中,常写作<code>p ^ q</code>。 逻辑异或相当于逻辑不等价,或者说逻辑异或的[[逻辑非]]是[[逻辑等价]]。 == 真值表 == 异或运算<math>p \oplus q</math>的[[真值表]]如下: {| class="wikitable" style="text-align:center;" |+ ! <math>p</math> !! <math>q</math> !! <math>p \oplus q</math> |- | True || True || False |- | True || False || True |- | False || True || True |- | False || False || False |- |colspan="3" | 注:True:真,False:假。 |} 无论怎样改变同一行中<math>p, q, p \oplus q</math>的位置,真值表都是成立的。 == 其他表示 == 在数学和工程学中,常常用其他的逻辑运算符来表示异或算符。异或算符可以使用逻辑算符[[逻辑与]]<math>\land</math>,[[逻辑或]]<math>\lor</math>和[[逻辑非]]<math>\lnot</math>表示为: : <math> \begin{align} p \oplus q & = (p \land \lnot q) \lor (\lnot p \land q) = p\overline{q} + \overline{p}q \\ & = (p \lor q) \land (\lnot p \lor \lnot q) = (p+q)(\overline{p}+\overline{q}) \\ & = (p \lor q) \land \lnot (p \land q) = (p+q)(\overline{pq}) \end{align} </math> 另外,异或算符可以被推广,得到关于''n''个运算元的异或运算:''n''个运算元的''n''维异或的值为真[[当且仅当]]其中值为真的运算元有[[奇数]]个。 异或也可以被表示为: : <math>p \oplus q = \lnot ((p \land q) \lor (\lnot p \land \lnot q))</math> 异或还可以看作是[[逻辑等价]]关系的非运算。 == 性质 == '''[[交换律]]''':<math>p \oplus q = q \oplus p</math> '''[[结合律]]''':<math>p \oplus (q \oplus r) = (p \oplus q) \oplus r</math> '''恒等律''':<math>p \oplus 0 = p</math> '''归零律''':<math>p \oplus p = 0</math> '''[[对合|对合运算]]''':<math>p \oplus q \oplus q = p\oplus 0 = p</math> == 与抽象代數的關係 == 尽管[[算子]]<math>\wedge</math>([[逻辑合取]])与<math>\lor</math>([[逻辑析取]])是逻辑系统中最为常见的算子,但结构上,系统<math>(\{T, F\}, \wedge)</math> and <math>(\{T, F\}, \lor)</math>只是[[幺半群]]。因此,这两个系统无法合成为一个更大的结构,比如[[环 (代数)|环]]或[[半环]]。 但是,带有逻辑异或的系统<math>(\{T, F\}, \oplus)</math>是一个[[阿贝尔群|交换群]]。因此,算子<math>\wedge</math>与<math>\oplus</math>的结合在集合<math>\{T, F\}</math>上作用就产生了最基本的二元[[体 (数学)|域]]<math>F_2</math>。这个域可以得出所有运用<math>(\land, \lor)</math>可以得到的结果,并且由于附带了域的结构,可以进行代数上的进一步分析。 == 類似符號 == {| class="wikitable" |- !名稱!!符號!!Unicode!!圖形!!符號的來源 |- |[[地球]]||<big><big>🜨</big></big>||U+2295||[[File:Earth symbol.svg|20px|地球的天文符號]] | 带有[[赤道]]和一條[[經線]]的球體 |} == 應用 == === 使用异或运算交换两个 int 类型变量的数值 === <big>''' C/C++ '''</big> <syntaxhighlight lang="c"> void swap(int *a, int *b) { *a ^= *b; *b ^= *a; *a ^= *b; } </syntaxhighlight> <big>''' Java '''</big> <syntaxhighlight lang="java"> public void swap(int a, int b) { a ^= b; b ^= a; a ^= b; } </syntaxhighlight> <big>''' C# '''</big> <syntaxhighlight lang="C#"> public void swap(ref int a,ref int b) { a ^= b; b ^= a; a ^= b; } </syntaxhighlight> <big>''' Rust '''</big> <syntaxhighlight lang="Rust"> fn swap<'a, 'b>( num_a: &'a mut i32, num_b: &'b mut i32 ) { *num_a ^= *num_b; *num_b ^= *num_a; *num_a ^= *num_b; } </syntaxhighlight> 雖然XOR運算可用來交換變數,但比起使用額外變數來交換變數的做法相比,效能反而比較差。 == 参考来源 == {{reflist}} == 参见 == * [[异或门]] * [[异或密码]] {{逻辑联结词}} [[Category:布尔代数]] [[Category:二元运算]] [[Category:邏輯聯結詞]]
该页面使用的模板:
Template:Cite web
(
查看源代码
)
Template:Lang-en
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
Template:Redirect-multi
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:Smallmath
(
查看源代码
)
Template:多個問題
(
查看源代码
)
Template:逻辑联结词
(
查看源代码
)
返回
逻辑异或
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息