Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
5m 54s
Binäre Operationen sind ein wichtiger Bestandteil der Programmierung, insbesondere wenn es um Low-Level-Optimierungen und bitweise Manipulationen geht. Eine solche Operation ist der Exklusiv-ODER-Operator (XOR). In diesem Artikel werden wir den binären XOR-Operator von C# anhand des Videos von Tim Corey "Der binäre XOR-Operator in 10 Minuten oder weniger." erkunden
Tims Video ist eine hervorragende Zusammenfassung von XOR, seiner Syntax und seinen praktischen Anwendungen. Im Folgenden werden wir seine Erklärungen und Beispiele analysieren und dabei auf bestimmte Zeitstempel verweisen, um das Nachschlagen zu erleichtern.
Tim beginnt das Video mit dem Hinweis, dass dies Teil seiner Reihe Understanding Binary in C# ist, insbesondere Lektion Nummer neun. Er erklärt, dass er in dieser Lektion erklären wird, wie der Exklusiv-ODER-Operator (XOR) funktioniert und wie er in verschiedenen Szenarien nützlich sein kann.
Tim führt zwei Werte ein, 1 und 2, und gibt sie als Referenz auf der Konsole aus. Er lässt die 32-Bit-Darstellung weg, um den Fokus auf die standardmäßige 8-Bit-Binärdarstellung zu legen.
Bei 0:31 erklärt er, dass XOR in C# durch das Caret-Symbol (^) dargestellt wird. Er erinnert die Betrachter daran:
Tim erklärt außerdem die Regel für jeden Bitvergleich:
Das bedeutet, dass XOR als Differenzdetektor zwischen zwei Werten fungiert.
Tim geht zu einem praktischen Beispiel über, indem er eine uint-Variable definiert, die das Ergebnis aus dem XOR zweier Werte enthält:
// Define two sample values
uint val1 = 0b0001; // 1 in decimal
uint val2 = 0b0010; // 2 in decimal
// Perform XOR operation between val1 and val2
uint result = val1 ^ val2;
// Print the resultant binary value of XOR operation
Console.WriteLine(Convert.ToString(result, toBase: 2).PadLeft(8, '0'));' Define two sample values
Dim val1 As UInteger = &B0001 ' 1 in decimal
Dim val2 As UInteger = &B0010 ' 2 in decimal
' Perform XOR operation between val1 and val2
Dim result As UInteger = val1 Xor val2
' Print the resultant binary value of XOR operation
Console.WriteLine(Convert.ToString(result, toBase:=2).PadLeft(8, "0"c))Anschließend gibt er das Ergebnis auf der Konsole aus und notiert die Ausgabe:
0000 0011
Diese Ausgabe verdeutlicht, dass bei XOR nur Bits erhalten bleiben, bei denen einer der ursprünglichen Werte eine 1 war, aber nicht beide.
Tim demonstriert nun eine praktische Anwendung von XOR: die Überprüfung, ob zwei Werte identisch sind.
Um 3:00 ändert er die Werte so, dass val1 und val2 genau gleich sind:
// Initialize val1 and val2 to the same value
uint val1 = 0b10011001;
uint val2 = 0b10011001;
// Perform XOR operation to check for identical values
uint result = val1 ^ val2;
// Output will be zero if both values are identical
Console.WriteLine(Convert.ToString(result, toBase: 2).PadLeft(8, '0'));' Initialize val1 and val2 to the same value
Dim val1 As UInteger = &B10011001UI
Dim val2 As UInteger = &B10011001UI
' Perform XOR operation to check for identical values
Dim result As UInteger = val1 Xor val2
' Output will be zero if both values are identical
Console.WriteLine(Convert.ToString(result, 2).PadLeft(8, "0"c))Wenn er die XOR-Operation ausführt, ist das Ergebnis:
0000 0000
Tim erklärt, dass ein XOR-Ergebnis von 0 bedeutet, dass die Werte identisch waren. So wird XOR zu einer schnellen Methode, um zwei Zahlen auf Gleichheit zu vergleichen.
Um 4:00 zeigt Tim einen weiteren Fall, bei dem val1 und val2 leichte Unterschiede aufweisen. Diesmal ergibt die XOR-Verknüpfung ein Ergebnis ungleich Null, was auf eine Differenz zwischen den Werten hinweist.
Dieser Ansatz ist nützlich, um große Binärwerte effizient zu vergleichen, da XOR Unterschiede in nur einem Schritt hervorheben kann.
Tim stellt einen klassischen Programmiertrick vor: das Vertauschen von zwei Zahlen ohne Verwendung einer temporären Variable.
Um 5:40 fordert er die Zuschauer heraus, val1 und val2 zu vertauschen, ohne eine zusätzliche Variable zu deklarieren. Die Lösung verwendet dreimal XOR:
// Original values
uint val1 = 0b0010; // 2 in decimal
uint val2 = 0b0100; // 4 in decimal
// Swap the values using XOR
val1 = val1 ^ val2;
val2 = val1 ^ val2;
val1 = val1 ^ val2;
// After swap: val1 = 4, val2 = 2
Console.WriteLine($"val1: {val1}, val2: {val2}");' Original values
Dim val1 As UInteger = &B0010 ' 2 in decimal
Dim val2 As UInteger = &B0100 ' 4 in decimal
' Swap the values using XOR
val1 = val1 Xor val2
val2 = val1 Xor val2
val1 = val1 Xor val2
' After swap: val1 = 4, val2 = 2
Console.WriteLine($"val1: {val1}, val2: {val2}")Er führt durch den Prozess:
val1 speichert val1 ^ val2, was bedeutet, dass es jetzt eine Mischung aus beiden Werten enthält.val2 wird durch XOR mit val1 erneut aktualisiert, wodurch nur der ursprüngliche val1-Wert übrig bleibt.val1 wird erneut XOR-ed, wodurch nur der ursprüngliche val2-Wert übrig bleibt.Um 7:30 gibt Tim die vertauschten Werte aus und bestätigt, dass val1 und val2 erfolgreich die Werte ausgetauscht haben.
Um das Verständnis zu festigen, führt Tim eine binäre Version des Tauschvorgangs durch und zeigt, wie sich jeder XOR-Schritt auf die Bits auswirkt. Er hebt hervor, dass jedes Bit nur dann umgedreht wird, wenn es notwendig ist, was XOR zu einer effizienten Methode macht, Werte zu vertauschen.
Abschließend unterstreicht Tim die wichtigsten Erkenntnisse:
Er ermutigt die Betrachter, mit XOR zu experimentieren und es auf reale Probleme anzuwenden, um ein tieferes Verständnis zu entwickeln.
Das Video von Tim Corey bietet eine hervorragende, prägnante Aufschlüsselung von XOR in C#. Anhand von Beispielen demonstriert er Schritt für Schritt die Nützlichkeit des Operators für Vergleiche, Unterschiede und sogar den Austausch von Werten.
Wenn Sie sich für binäre Operationen oder bitweise Tricks interessieren, ist dies ein Must-Watch-Video, um Ihr Verständnis der binären Manipulation in C# zu vertiefen.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy