HOWTO · Python
XOR in Python
Erfahren Sie, wie Sie den XOR-Operator in Python für Ganzzahlen und boolesche Werte verwenden, praktische Anwendungen kennenlernen und XOR-Operationen verständlich umsetzen.
Auf dieser Seite
XOR, also exklusives Oder, vergleicht zwei Werte und ist genau dann wahr, wenn genau einer der beiden Werte wahr ist. In Python führt der Caret-Operator (^) XOR für Ganzzahlen und boolesche Werte aus. Verwenden Sie ihn, wenn einer der beiden Werte, aber nicht beide, gelten soll oder wenn Sie Bits direkt vergleichen müssen.
Was ist XOR?
XOR vergleicht zwei Bits und gibt 1 zurück, wenn sie verschieden sind, und 0, wenn sie übereinstimmen:
- 0 XOR 0 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- 1 XOR 1 = 0
Für boolesche Werte gilt dieselbe Regel: Genau ein True-Wert ergibt True. Bei Ganzzahlen wendet Python die Regel unabhängig auf jedes entsprechende Bitpaar an. Boolesches XOR und bitweises XOR sind daher miteinander verwandt, erfüllen aber unterschiedliche Zwecke.
XOR mit Ganzzahlen verwenden
Verwenden Sie den Caret-Operator (^), um das bitweise XOR zweier Ganzzahlen zu berechnen:
a = 5 # Binary: 0101
b = 3 # Binary: 0011
result = a ^ b
print(result)
6
Die Binärdarstellung von 5 ist 0101, die von 3 ist 0011. Beim Vergleich der jeweils entsprechenden Bits entsteht:
- 0 XOR 0 = 0
- 1 XOR 0 = 1
- 0 XOR 1 = 1
- 1 XOR 1 = 0
Das Ergebnis ist 0110, also dezimal 6. Die führende Null richtet lediglich beide Operanden aus; sie ändert den Wert nicht.
XOR mit booleschen Werten verwenden
Python wendet ^ auch auf boolesche Werte an. Das folgende Programm zeigt alle vier Eingangskombinationen sowie eine auf boolesche Werte ausgerichtete Implementierung mit and, or und not:
def xor(left, right):
return (left and not right) or (not left and right)
for left, right in ((False, False), (False, True), (True, False), (True, True)):
print(f"{left} ^ {right} -> {left ^ right}; xor() -> {xor(left, right)}")
False ^ False -> False; xor() -> False
False ^ True -> True; xor() -> True
True ^ False -> True; xor() -> True
True ^ True -> False; xor() -> False
Die Funktion ist nützlich, wenn ein boolescher Ausdruck eine benannte Operation benötigt. Für boolesche Eingaben liefern left ^ right und xor(left, right) dieselben vier Ergebnisse. Die logische Form ist für boolesche Bedingungen gedacht; verwenden Sie ^ für die Bitmanipulation von Ganzzahlen.
Praktische Anwendungen von XOR
Das Modul operator stellt dieselbe Operation als Funktion xor() bereit. Das ist praktisch, wenn Sie ein Funktionsobjekt benötigen; die Funktion arbeitet sowohl mit booleschen als auch mit ganzzahligen Operanden:
from operator import xor
print(xor(True, False))
print(xor(5, 3))
True
6
Eine bekannte bitweise Technik vertauscht zwei ganzzahlige Variablen ohne temporäre Variable:
x = 10
y = 20
x = x ^ y
y = x ^ y
x = x ^ y
print(x, y)
20 10
Ausgehend von zwei Ganzzahlen funktionieren die drei Operationen folgendermaßen:
xwird zum XOR vonxundy.- Anschließend wird
yauf den ursprünglichen Wert vonxgesetzt, indem das neuexmityper XOR verknüpft wird. - Schließlich wird
xmit derselben Logik auf den ursprünglichen Wert vonygesetzt.
Die Technik ist für ganzzahlige Variablen korrekt, aber üblicher Python-Code ist mit Tuple-Unpacking meist verständlicher: x, y = y, x. Die XOR-Variante ist vor allem nützlich, um bitweise Operationen zu verstehen oder eine Vorgabe zu erfüllen, die sie ausdrücklich verlangt.
Fazit
Verwenden Sie in Python ^ für XOR: Der Operator vergleicht boolesche Werte direkt und bei Ganzzahlen jedes einzelne Bit. Die Funktion operator.xor() stellt dieselbe Operation in Funktionsform bereit, während sich die boolesche Regel mit and, or und not ausdrücklich formulieren lässt. Wählen Sie die Form, die am deutlichsten zeigt, ob Ihre Aufgabe logisch oder bitweise ist.
FAQ
-
Was bedeutet XOR in Python?
XOR bedeutet exklusives Oder: Das Ergebnis ist wahr, wenn genau eine von zwei Eingaben wahr ist. Bei Ganzzahloperanden wird diese Regel auf jedes entsprechende Bit angewendet. -
Wie führe ich in Python eine XOR-Operation auf zwei Ganzzahlen aus?
Verwenden Sie den Caret-Operator:result = a ^ b. -
Kann ich XOR in Python mit booleschen Werten verwenden?
Ja.True ^ FalseundFalse ^ TrueergebenTrue, während gleiche boolesche EingabenFalseergeben. -
Was ist eine praktische Anwendung von XOR in der Programmierung?
XOR kann zwei ganzzahlige Variablen mit drei bitweisen Operationen vertauschen. In normalem Python-Code ist Tuple-Unpacking im Allgemeinen verständlicher. -
Ist XOR in Python kommutativ?
Ja. XOR ist kommutativ, daher gilt für kompatible Operandena ^ b=b ^ a.