IRONSOFTWAREHOME

C#'ta İkili XOR Operatörünü Anlama

C#'ta İkilik: Binary XOR Operatörü 10 dakika veya daha kısa sürede

Tim Corey

5m 54s

İkili işlemler, programlamanın önemli bir parçasıdır, özellikle düşük seviyeli optimizasyonlar ve bit düzeyinde manipülasyonlarla uğraşırken. Bu tür işlemlerden biri "exclusive OR" (XOR) operatörüdür. Bu makalede, Tim Corey'nin "10 Dakikada veya Daha Kısa Sürede İkili XOR Operatörü." videosunu takip ederek C#'ın İkili XOR operatörünü inceleyeceğiz.

Tim'in videosu, XOR'un yapısı, sözdizimi ve pratik uygulamaları hakkında mükemmel bir analizdir. Aşağıda, kolay referans için belirli zaman damgalarına atıfta bulunarak açıklamalarını ve örneklerini analiz edeceğiz.

XOR'a Giriş

Tim, videoya, bunun C#'ta İkiliyi Anlama serisinin bir parçası ve özellikle dokuzuncu ders olduğunu belirterek başlar. Bu oturumda, özel VEYA (XOR) operatörünün nasıl çalıştığını ve çeşitli senaryolarda nasıl faydalı olabileceğini öğreteceğini anlatarak sahneyi hazırlar.

XOR Operatörü Söz Dizimi ve Temel Açıklama

Tim, iki değeri tanıtır: 1 ve 2, ve bunları referans olması için konsola yazdırır. 32 bitlik temsili kaldırarak odak noktasını standart 8 bitlik ikili temsilde tutuyor.

0:31'de, C# dilinde XOR'un şapka sembolü (^) ile temsil edildiğini açıklıyor. O, izleyicilere şunları hatırlatıyor:

  • AND operatörü (&) hem bitin 1 olmasını gerektirir ki 1 döndürebilsin.
  • OR operatörü (|) bitlerden en az birisi 1 ise 1 döndürür.
  • XOR operatörü (^) yalnızca iki bitten biri 1 olduğunda, fakat her ikisi de 1 olmadığında 1 döndürür.

Tim, her bit karşılaştırması için kuralı daha fazla açıklar:

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

Bu demektir ki XOR, iki değer arasında bir fark algılayıcı gibi çalışır.

C# Kodunda XOR'u Gösterme

Tim, iki değeri XOR'layarak elde edilen sonucu tutan bir uint değişkeni tanımlayarak pratik bir örneğe geçiyor:

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

Ardından sonucu konsola yazdırır ve çıktıyı not eder:

0000 0011
Text

Bu çıktı, XOR'un yalnızca orijinal değerlerden birinin 1 olduğu ancak her ikisinin de 1 olmadığı durumlarda bitleri koruduğunu vurgular.

Değer Karşılaştırması için XOR Kullanımı

Tim şimdi XOR'un pratik bir kullanımını gösteriyor: iki değerin aynı olup olmadığını kontrol etmek.

Saat 3:00'te, val1 ve val2'ün tamamen aynı olması için değerleri değiştiriyor:

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

XOR işlemini yürüttüğünde sonuç şöyle olur:

0000 0000
Text

Tim, bir XOR sonucunun 0 olması durumunda değerlerin aynı olduğunu açıklar. Bu, XOR'u iki sayıyı eşitlik açısından karşılaştırmak için hızlı bir yol yapar.

Farklılıkları Belirlemek İçin XOR

Saat 4:00'te, Tim, val1 ve val2 arasında hafif farklar olan başka bir durumu gösteriyor. Bu sefer, XOR sıfırdan farklı bir sonuç üretir, bu da değerler arasında bir fark olduğunu gösterir.

Bu yaklaşım, büyük ikili değerleri verimli bir şekilde karşılaştırırken kullanışlıdır çünkü XOR, farkları sadece bir adımda ortaya çıkarabilir.

Geçici Değişken Olmadan İki Değişkeni Değiştirmek için XOR

Tim, geçici bir değişken kullanmadan iki sayıyı değiştirme konusunda klasik bir programlama hilesini sunar.

Saat 5:40'ta, izleyicilere ekstra bir değişken ilan etmeden val1 ve val2'yi değiştirmeleri için meydan okuyor. Çözüm, XOR'u üç kez kullanır:

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

Süreci adım adım anlatıyor:

  1. val1, val1 ^ val2'yi saklar, bu da artık her iki değerin bir karışımını tuttuğu anlamına gelir.
  2. val2, tekrar val1 ile XOR'lanarak güncellenir, sadece orijinal val1 değerini bırakır.
  3. val1 tekrar XOR'lanır, sadece orijinal val2 değerini bırakır.

Saat 7:30'da, Tim değiştirilen değerleri yazdırır ve val1 ve val2'un başarıyla değerlerini değiştirdiğini teyit eder.

İkili Temsilde XOR'u Anlamak

Anlayışı pekiştirmek için, Tim, her bir XOR adımının bitleri nasıl etkilediğini gösteren değiş-tokuş işleminin ikili bir sürümünü çalıştırır. Her bitin yalnızca gerektiğinde değiştiğini vurguluyor, bu da XOR'u değerleri değiştirmek için verimli bir yöntem yapıyor.

Sonuç

Tim, ana çıkarımları pekiştirerek sonlandırıyor:

  • XOR yalnızca bitlerden biri tam olarak 1 olduğunda 1 değerini döndürür.
  • Değerleri karşılaştırmak için verimli bir şekilde kullanılabilir.
  • Üçüncü bir değişken olmadan iki değeri değiştirmeye yardımcı olur, bu da kodlama meydan okumalarında kullanışlı bir hile yapar.

İzleyicileri XOR'u deneyimlemeye ve derin bir anlayış geliştirmek için gerçek dünya problemlerine uygulamaya teşvik ediyor.

Son Düşünceler

Tim Corey'nin videosu, C#'deki XOR işlemi hakkında mükemmel, özlü bir açıklama sunar. Örnekleri adım adım inceleyerek, operatörün karşılaştırmalarda, farklarda ve hatta değer değişiminde nasıl yararlı olduğunu göstermektedir.

Eğer ikili işlemler veya bit tabanlı numaralar ile ilgileniyorsanız, C# ikili manipülasyonunuzu güçlendirmek için izlemeniz gereken bir video var.

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

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez