Exkluzivní "nebo" | |
---|---|
Přídavek Modulo 2, XOR | |
Vennův diagram | |
pravdivostní tabulka | |
logická brána | |
normální formy | |
Disjunktivní | |
spojivkové | |
Zhegalkinův polynom | |
Členství v předkompletních třídách | |
Ušetří 0 | Ano |
Ušetří 1 | Ne |
Monotónní | Ne |
lineární | Ano |
Self-duální | Ne |
Exkluzivní "nebo" ( modulo 2 sčítání , XOR , striktní disjunkce , bitové sčítání , inverze masky , Zhegalkinovo sčítání , logické odčítání , logická disparita ) - Booleovská funkce , stejně jako logické a bitové operace, v případě dvou proměnných je výsledek operace pravdivý tehdy a jen tehdy, když je jeden z argumentů pravdivý a druhý nepravdivý. Pro funkci tří (ternární sčítání modulo 2) nebo více proměnných bude výsledek operace pravdivý pouze tehdy, když je počet argumentů rovný 1, které tvoří aktuální množinu, lichý. Taková operace přirozeně vzniká v kruhu zbytků modulo 2 , odtud název operace.
Sčítání Modulo 2 se nazývá „exkluzivní nebo“ a „přísná disjunkce“, aby se odlišilo od „obyčejné“ (nevýhradní) logické „nebo“ - nepřísné logické disjunkce . V teorii množin odpovídá sčítání modulo 2 operaci symetrického rozdílu dvou množin.
Záznam může být prefix (" polský záznam ") - znak operace je umístěn před operandy, infix - znak operace je umístěn mezi operandy a postfix - znak operace je umístěn za operandy. Když je počet operandů větší než dva, jsou prefixové a postfixové zápisy ekonomičtější než infixové zápisy. Nejběžnější zápis je: ^ a ≠ b,
Unicode má symboly pro sčítání modulo 2: U+22BB ⊻ xor , U+2295 ⊕ zakroužkované plus a U+2A27 ⨧ znaménko plus s dolním indexem dva , U+2A52 ⩒ logické nebo s tečkou nad , a symbol pro modulo součet 2: U +2A0A ⨊ modulo dva součet .
V Booleově algebře je sčítání modulo 2 funkcí dvou, tří nebo více proměnných (jsou to také operandy operace, jsou také argumenty funkce). Proměnné mohou nabývat hodnot z množiny . Výsledek také patří do sestavy . Výsledek se vypočítá podle jednoduchého pravidla nebo podle pravdivostní tabulky . Místo hodnot lze použít libovolnou jinou dvojici vhodných znaků, např. nebo nebo „false“, „true“, ale zároveň je nutné definovat prioritu např . .
Pravdivé tabulky:
0 | 0 | 0 |
0 | jeden | jeden |
jeden | 0 | jeden |
jeden | jeden | 0 |
Pravidlo: výsledek je stejný , pokud jsou oba operandy stejné; ve všech ostatních případech je výsledkem .
0 | 0 | 0 | 0 |
0 | 0 | jeden | jeden |
0 | jeden | 0 | jeden |
0 | jeden | jeden | 0 |
jeden | 0 | 0 | jeden |
jeden | 0 | jeden | 0 |
jeden | jeden | 0 | 0 |
jeden | jeden | jeden | jeden |
Pravidlo: výsledek je , pokud je počet operandů rovný sudý (nula je také sudé číslo), jinak je výsledek .
V C / C++ , Java , C# , Ruby , PHP , JavaScript , Python atd. je operace bitového doplňku označena symbolem " ^ ", v Pascalu , Delphi , Ada , Visual Basic vyhrazeným slovem xor , v assembleru jazyk - stejnojmenný logický příkaz. V tomto případě se sčítání modulo 2 provádí pro všechny bity levého a pravého operandu v párech. Například,
-li
pak
Výhradní operace „nebo“ pro hodnoty typu boolean (true, false) se v různých programovacích jazycích provádí odlišně. Například Delphi používá vestavěný operátor XOR (příklad: condition1 xor condition2 ). V C od standardu C99 vrací operátor " ^ " na operandech typu boolean výsledek použití logické operace XOR. V C++ operátor „ ^ “ pro bool booleovský typ vrací výsledek podle popsaných pravidel, zatímco pro ostatní typy je aplikován bitově.
Použití bitového exkluzivního „nebo“ vám umožňuje zaměnit hodnoty celočíselných proměnných bez použití další paměti .
V přirozeném jazyce je operace „sčítání modulo“ ekvivalentní dvěma výrazům:
Často se poukazuje na podobnost mezi přidáním modulo 2 a konstrukcí „buď ... nebo ...“ v přirozeném jazyce. Složený výrok „buď A nebo B“ je pravdivý, když buď A nebo B je pravdivý/nepravdivý, ale ne oba; jinak je složený příkaz nepravdivý. To přesně odpovídá definici operace v Booleově algebře, pokud "true" je označeno a "false" je označeno .
Tato operace je často přirovnávána k disjunkci , protože mají velmi podobné vlastnosti a obě jsou podobné sjednocení „nebo“ v běžné řeči. Porovnejte pravidla pro tyto operace:
Operace vylučuje poslední možnost ("obě najednou") az tohoto důvodu se nazývá exkluzivní "OR". Operace zahrnuje poslední možnost ("obě najednou") a z tohoto důvodu se někdy nazývá inkluzivní "OR". Nejednoznačnost v přirozeném jazyce spočívá v tom, že spojku „nebo“ lze použít v obou případech.
V kvantových počítačích je analogem sčítání modulo 2 brána CNOT .
Booleovské operace | |
---|---|
|