XOR ist eine logische Operation, keine mathematische.
Marcin Orlowski
Antworten:
131
XOR ist eine binäre Operation, es steht für "exklusiv oder", dh das resultierende Bit wird zu eins ausgewertet, wenn nur genau eines der Bits gesetzt ist.
Dies ist seine Funktionstabelle:
a | b | a ^ b
--|---|------
0 | 0 | 00 | 1 | 11 | 0 | 11 | 1 | 0
Diese Operation wird zwischen jeweils zwei entsprechenden Bits einer Zahl ausgeführt.
Beispiel: 7 ^ 10
Binär:0111 ^ 1010
0111
^ 1010
======
1101 = 13
Eigenschaften: Die Operation ist kommutativ, assoziativ und selbstinvers.
VIELEN DANK!! Ich wünschte, ich hätte früher gefragt - hätte mich heute Morgen fast verrückt gemacht. Vielen Dank, dass Sie mir einen viel angenehmeren Nachmittag beschert haben !!
Hilary Park
Mann, das ist wirklich so einfach! Ich arbeite daran, Hash-Algorithmen besser zu verstehen, und dies ist eine sehr konstante Operation unter vielen von ihnen.
Mike Perrenoud
2
Es ist auch dasselbe wie Addition Modulo 2. - Was ist damit gemeint?
XOR steht für exklusives ODER . Es wird in der Kryptographie verwendet, weil Sie damit die Bits mithilfe einer Maske in einer umkehrbaren Operation "umdrehen" können:
>>> 10 ^ 515>>> 15 ^ 510
wo 5ist die Maske; (Eingabe-XOR-Maske) Die XOR-Maske gibt Ihnen die Eingabe erneut.
Die Wahrheitstabelle spricht die Wahrheit - und im Gespräch beschreibe ich XOR (eXclusive-OR, manchmal auch als EOR bekannt) normalerweise als "entweder A oder B, aber nicht beide oder keine".
Acht-Bit-Guru
2
Vielen Dank!!! Sie und der andere Befragte haben sicherlich meine geistige Gesundheit für diesen Tag gerettet - ich konnte es einfach NICHT herausfinden und es war so nicht google-fähig.
Hilary Park
5
Ein wenig mehr Informationen zum XOR-Betrieb.
XOR eine Zahl mit sich selbst ungerade Anzahl, wie oft das Ergebnis die Zahl selbst ist.
XOR eine gerade Zahl mit sich selbst, das Ergebnis ist 0.
Eine Sache, die andere Antworten hier nicht erwähnen, ist XOR mit negativen Zahlen -
a | b | a ^ b
----|-----|------
0 | 0 | 00 | 1 | 11 | 0 | 11 | 1 | 0
Während Sie anhand der obigen Funktionstabelle leicht verstehen können, wie XOR funktioniert, können Sie nicht sagen, wie es mit negativen Zahlen funktioniert.
So funktioniert XOR mit negativen Zahlen:
Da diese Frage auch als Python gekennzeichnet ist, werde ich sie in diesem Sinne beantworten. Die XOR ( ^) ist ein logischer Operator , der 1 angezeigt werden kann, wenn die Bits 0 verschieden und an anderer Stelle sind.
Eine negative Zahl wird binär als Zweierkomplement gespeichert . Im Zweierkomplement ist die Bitposition ganz links für das Vorzeichen des Werts (positiv oder negativ) reserviert und trägt nicht zum Wert der Zahl bei.
In Python werden negative Zahlen mit einer führenden Eins anstelle einer führenden Null geschrieben. Wenn Sie also nur 8 Bits für die Zweierkomplementzahlen verwenden
, behandeln Sie Muster von 00000000bis 01111111als ganze Zahlen von 0 bis 127 und reservieren das 1xxxxxxxSchreiben negativer Zahlen.
Lassen Sie uns vor diesem Hintergrund anhand eines Beispiels verstehen, wie XOR bei negativen Zahlen funktioniert. Betrachten wir den Ausdruck - ( -5 ^ -3 ).
Die binäre Darstellung von -5kann als 1000...101und betrachtet werden
Binäre Darstellung von -3kann als betrachtet werden 1000...011.
Hier ...bezeichnet alle 0s, deren Anzahl an Bits für die Darstellung (32-Bit, 64-Bit, etc.) verwendet wird, hängt. Das 1am MSB (Most Significant Bit) zeigt an, dass die durch die Binärdarstellung dargestellte Zahl negativ ist. Die XOR-Operation wird wie gewohnt für alle Bits ausgeführt.
Da das MSB nach der XOR-Operation 0 wird, ist die resultierende Zahl, die wir erhalten, eine positive Zahl. In ähnlicher Weise betrachten wir für alle negativen Zahlen ihre Darstellung im Binärformat unter Verwendung des Zweierkomplements (eines der am häufigsten verwendeten) und führen eine einfache XOR für ihre Binärdarstellung durch.
Das MSB-Bit des Ergebnisses bezeichnet das Vorzeichen und der Rest der Bits bezeichnet den Wert des Endergebnisses.
Die folgende Tabelle kann hilfreich sein, um das Vorzeichen des Ergebnisses zu bestimmen.
a | b | a ^ b
------|-------|------
+ | + | +
+ | - | -
- | + | -
- | - | +
Die Grundregeln von XOR bleiben auch für negative XOR-Operationen gleich, aber wie die Operation wirklich in negativen Zahlen funktioniert, könnte eines Tages für jemanden nützlich sein 🙂.
Eine andere Anwendung für XORist in Schaltungen. Es wird verwendet, um Bits zu summieren.
Wenn Sie sich eine Wahrheitstabelle ansehen:
x | y | x^y
---|---|-----
0 | 0 | 0 // 0 plus 0 = 00 | 1 | 1 // 0 plus 1 = 11 | 0 | 1 // 1 plus 0 = 11 | 1 | 0 // 1 plus 1 = 0 ; binary math with1 bit
Sie können feststellen, dass das Ergebnis von XORx mit y addiert wird, ohne das Übertragsbit zu verfolgen. Das Übertragsbit wird ANDzwischen x und y erhalten.
x^y // is actually ~xy + ~yx
// Which is the (negated x ANDed with y) OR ( negated y ANDed with x ).
Der (^) XOR-Operator generiert 1, wenn er auf zwei verschiedene Bits (0 und 1) angewendet wird. Es erzeugt 0, wenn es auf zwei gleiche Bits angewendet wird (0 und 0 oder 1 und 1).
Antworten:
XOR ist eine binäre Operation, es steht für "exklusiv oder", dh das resultierende Bit wird zu eins ausgewertet, wenn nur genau eines der Bits gesetzt ist.
Dies ist seine Funktionstabelle:
a | b | a ^ b --|---|------ 0 | 0 | 0 0 | 1 | 1 1 | 0 | 1 1 | 1 | 0
Diese Operation wird zwischen jeweils zwei entsprechenden Bits einer Zahl ausgeführt.
Beispiel:
7 ^ 10
Binär:
0111 ^ 1010
0111 ^ 1010 ====== 1101 = 13
Eigenschaften: Die Operation ist kommutativ, assoziativ und selbstinvers.
Es ist auch dasselbe wie Addition Modulo 2.
quelle
^
ist der bitweise Python-XOR-Operator . So buchstabieren SieXOR
in Python:>>> 0 ^ 0 0 >>> 0 ^ 1 1 >>> 1 ^ 0 1 >>> 1 ^ 1 0
XOR steht für exklusives ODER . Es wird in der Kryptographie verwendet, weil Sie damit die Bits mithilfe einer Maske in einer umkehrbaren Operation "umdrehen" können:
>>> 10 ^ 5 15 >>> 15 ^ 5 10
wo
5
ist die Maske; (Eingabe-XOR-Maske) Die XOR-Maske gibt Ihnen die Eingabe erneut.quelle
Ein wenig mehr Informationen zum XOR-Betrieb.
quelle
Eine Sache, die andere Antworten hier nicht erwähnen, ist XOR mit negativen Zahlen -
a | b | a ^ b ----|-----|------ 0 | 0 | 0 0 | 1 | 1 1 | 0 | 1 1 | 1 | 0
Während Sie anhand der obigen Funktionstabelle leicht verstehen können, wie XOR funktioniert, können Sie nicht sagen, wie es mit negativen Zahlen funktioniert.
So funktioniert XOR mit negativen Zahlen:
Da diese Frage auch als Python gekennzeichnet ist, werde ich sie in diesem Sinne beantworten. Die XOR (
^
) ist ein logischer Operator , der 1 angezeigt werden kann, wenn die Bits 0 verschieden und an anderer Stelle sind.Eine negative Zahl wird binär als Zweierkomplement gespeichert . Im Zweierkomplement ist die Bitposition ganz links für das Vorzeichen des Werts (positiv oder negativ) reserviert und trägt nicht zum Wert der Zahl bei.
Lassen Sie uns vor diesem Hintergrund anhand eines Beispiels verstehen, wie XOR bei negativen Zahlen funktioniert. Betrachten wir den Ausdruck -
( -5 ^ -3 )
.-5
kann als1000...101
und betrachtet werden-3
kann als betrachtet werden1000...011
.Hier
...
bezeichnet alle 0s, deren Anzahl an Bits für die Darstellung (32-Bit, 64-Bit, etc.) verwendet wird, hängt. Das1
am MSB (Most Significant Bit) zeigt an, dass die durch die Binärdarstellung dargestellte Zahl negativ ist. Die XOR-Operation wird wie gewohnt für alle Bits ausgeführt.XOR-Betrieb:
-5 : 10000101 | ^ | -3 : 10000011 | =================== | Result : 00000110 = 6 | ________________________________| ∴ -5 ^ -3 = 6
Da das MSB nach der XOR-Operation 0 wird, ist die resultierende Zahl, die wir erhalten, eine positive Zahl. In ähnlicher Weise betrachten wir für alle negativen Zahlen ihre Darstellung im Binärformat unter Verwendung des Zweierkomplements (eines der am häufigsten verwendeten) und führen eine einfache XOR für ihre Binärdarstellung durch.
Das MSB-Bit des Ergebnisses bezeichnet das Vorzeichen und der Rest der Bits bezeichnet den Wert des Endergebnisses.
Die folgende Tabelle kann hilfreich sein, um das Vorzeichen des Ergebnisses zu bestimmen.
Die Grundregeln von XOR bleiben auch für negative XOR-Operationen gleich, aber wie die Operation wirklich in negativen Zahlen funktioniert, könnte eines Tages für jemanden nützlich sein 🙂.
quelle
Eine andere Anwendung für
XOR
ist in Schaltungen. Es wird verwendet, um Bits zu summieren.Wenn Sie sich eine Wahrheitstabelle ansehen:
x | y | x^y ---|---|----- 0 | 0 | 0 // 0 plus 0 = 0 0 | 1 | 1 // 0 plus 1 = 1 1 | 0 | 1 // 1 plus 0 = 1 1 | 1 | 0 // 1 plus 1 = 0 ; binary math with 1 bit
Sie können feststellen, dass das Ergebnis von
XOR
x mit y addiert wird, ohne das Übertragsbit zu verfolgen. Das Übertragsbit wirdAND
zwischen x und y erhalten.x^y // is actually ~xy + ~yx // Which is the (negated x ANDed with y) OR ( negated y ANDed with x ).
quelle
Der (^) XOR-Operator generiert 1, wenn er auf zwei verschiedene Bits (0 und 1) angewendet wird. Es erzeugt 0, wenn es auf zwei gleiche Bits angewendet wird (0 und 0 oder 1 und 1).
quelle