IRONSOFTWAREHOME

Zrozumienie operatora XOR binarnego w C#

Binary in C#: Binary XOR Operator in 10 minutes or less

Tim Corey

5m 54s

Operacje binarne są kluczowym elementem programowania, szczególnie przy optymalizacjach na niskim poziomie i manipulacjach bitowych. Jednym z takich operatorów jest operator wykluczającego LUB (XOR). W tym artykułe zbadamy operator Binary XOR w C# na podstawie wideo Tima Corey'ego, "The Binary XOR Operator in 10 Minutes or Less."

Wideo Tima to doskonałe wyjaśnienie XOR, jego składni i praktycznych zastosowań. Poniżej przeanalizujemy jego wyjaśnienia i przykłady, odwołując się do konkretnych znaczników czasu dla łatwego odniesienia.

Wprowadzenie do XOR

Tim rozpoczyna wideo, wspominając, że jest to część jego serii Understanding Binary in C#, a konkretnie lekcja numer dziewięć. Wprowadza w temat, wyjaśniając, że w tej sesji nauczy, jak działa operator wykluczającego LUB (XOR) i jak może być użyteczny w różnych scenariuszach.

Składnia operatora XOR i podstawowe wyjaśnienia

Tim wprowadza dwie wartości, 1 i 2, i wypisuje je na konsolę jako odniesienie. Usuwa 32-bitową reprezentację, aby skupić się na standardowej 8-bitowej reprezentacji binarnej.

W 0:31 wyjaśnia, że XOR jest przedstawiany przez symbol daszka (^) w C#. Przypomina widzom, że:

  • Operator AND (&) wymaga, aby oba bity były 1, aby zwrócić 1.
  • Operator OR (|) zwraca 1, jeśli przynajmniej jeden z bitów to 1.
  • Operator XOR (^) zwraca 1 tylko wtedy, gdy jeden z dwóch bitów to 1, ale nie oba.

Tim dalej wyjaśnia zasady dla każdego porównania bitów:

  • 1 XOR 0 = 1
  • 0 XOR 1 = 1
  • 1 XOR 1 = 0
  • 0 XOR 0 = 0

To oznacza, że XOR działa jako detektor różnic między dwiema wartościami.

Prezentacja XOR w kodzie C#

Tim przechodzi do praktycznego przykladu, definiujac zmienna uint, ktora przechowuje wynik operacji XOR dla dwoch wartosci:

// 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'));

Następnie wypisuje wynik na konsolę i zauważa wyjściową wartość:

0000 0011
Text

Ten wynik podkreśla, że XOR zachowuje tylko te bity, gdzie jedna z oryginalnych wartości miała 1, ale nie obie.

Używanie XOR do porównywania wartości

Teraz Tim demonstruje jedno praktyczne zastosowanie XOR: sprawdzanie, czy dwie wartości są identyczne.

O 3:00 zmienia wartosci tak, aby val1 i val2 byly dokladnie takie same:

// 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'));

Kiedy wykonuje operację XOR, wynik jest:

0000 0000
Text

Tim wyjaśnia, że wynik XOR równy 0 oznacza, że wartości były identyczne. To sprawia, że XOR jest szybkim sposobem na porównanie dwóch liczb pod kątem równości.

XOR do identyfikowania różnic

O 4:00, Tim pokazuje inny przypadek, w ktorym val1 i val2 maja niewielkie roznice. Tym razem XOR daje wynik różny od zera, wskazując na różnicę między wartościami.

To podejście jest przydatne przy porównywaniu dużych wartości binarnych efektywnie, ponieważ XOR może wyróżniać różnice w jednym kroku.

XOR do zamiany dwóch zmiennych bez zmiennej tymczasowej

Tim przedstawia klasyczny trik programistyczny: zamianę dwóch liczb bez użycia zmiennej tymczasowej.

O 5:40 wyzwala widzow do zamiany val1 i val2 bez deklarowania dodatkowej zmiennej. Rozwiązanie używa XOR trzy razy:

// 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}");

Przeprowadza przez proces:

  1. val1 przechowuje val1 ^ val2, co oznacza, ze teraz zawiera mix obu wartosci.
  2. val2 jest aktualizowany poprzez ponowne zastosowanie operacji XOR z val1, pozostawiajac tylko oryginalna wartosc val1.
  3. val1 jest ponownie poddawany operacji XOR, pozostawiajac tylko oryginalna wartosc val2.

O 7:30 Tim drukuje zamienione wartosci i potwierdza, ze val1 i val2 pomyslnie zamienily sie wartosciami.

Zrozumienie XOR w reprezentacji binarnej

Aby wzmocnić zrozumienie, Tim uruchamia binarną wersję operacji zamiany, pokazując, jak każdy krok XOR wpływa na bity. Podkreśla, że każdy bit zmienia się tylko wtedy, gdy jest to konieczne, co czyni XOR efektywnym sposobem zamiany wartości.

Wnioski

Tim kończy, wzmacniając kluczowe nauki:

  • XOR zwraca 1 tylko wtedy, gdy dokładnie jeden z bitów to 1.
  • Może być używany do porównywania wartości efektywnie.
  • Pomaga zamieniać dwie wartości bez trzeciej zmiennej, czyniąc go przydatnym trikiem w wyzwaniach programistycznych.

Zachęca widzów do eksperymentowania z XOR i stosowania go do rzeczywistych problemów, aby pogłębić zrozumienie.

Podsumowanie

Wideo Tima Corey'ego dostarcza doskonałego, zwięzłiego wyjaśnienia XOR w C#. Przechodząc krok po kroku przez przykłady, demonstruje użyteczność operatora w porównaniach, różnicach oraz wymianie wartości.

Jeśli jesteś zainteresowany operacjami binarnymi lub trikami bitowymi, jest to wideo, które warto obejrzeć aby wzmocnić zrozumienie manipulacji binarnej w C#.

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!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta