Altbilgi içeriğine atla
Iron Academy Logo
C# Öğrenin
C# Öğrenin

Diğer Kategoriler

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

[{academy-video-youtube{"vid": "h4W3ywVWns", "start_time": "0", "title": "Binary in C#: Binary XOR Operator in 10 minutes or less", "creator": "Tim Corey", "length": "5m 54s"}}]

İkili işlemler, özellikle düşük seviyeli optimizasyonlar ve bitwise manipülasyonlarla uğraşırken programlamanın önemli bir parçasıdır. Bu işlemlerden biri, dışlayıcı OR (XOR) operatörüdür. Bu makalede, Tim Corey'nin "10 Dakikadan Daha Kısa Sürede İkili XOR Operatörü" videosuna eşlik ederek C#'ın İkili XOR operatörünü keşfedeceğiz.

Tim'in videosu, XOR'un, sözdiziminin ve pratik uygulamalarının mükemmel bir açıklamasıdır. Aşağıda, anlatımlarını ve örneklerini analiz ederken, kolay başvuru için belirli zaman damgalarına atıfta bulunacağız.

XOR'a Giriş

Tim, videoya C#'da Binary Anlamayı serisinin dokuzuncu dersi olduğunu belirtir. Bu oturumda dışlayıcı OR (XOR) operatörünün nasıl çalıştığını ve çeşitli senaryolarda nasıl faydalı olabileceğini öğreteceğini açıklayarak konuyu başlatır.

XOR Operatör Sözdizimi ve Temel Açıklama

Tim, referans için 1 ve 2 sayısını tanıtır ve konsola yazdırır. Seriye devam etmek için 32-bit temsilini kaldırır ve odak noktası olarak standart 8-bit ikili temsili üzerinde durur.

0:31 noktası itibariyle, XOR'un C#'da çatı sembolü (^) ile temsil edildiğini açıklar. İzleyicilere şunu hatırlatıyor:

  • VE operatörü (&) 1 döndürmek için her iki bitin de 1 olmasını gerektirir.
  • VEYA operatörü (|) en az bir bit 1 olduğunda 1 döndürür.
  • XOR operatörü (^) yalnızca iki bitten biri 1 olduğunda ve ikisi birden olmadığında 1 döndürür.

Tim ayrıca her bir bit karşılaştırması için kuralı açıklar:

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

Bu, XOR'un iki değer arasında bir fark dedektörü olarak işlev gördüğü anlamına gelir.

C# Kodunda XOR Uygulaması

Tim, iki değerin XOR'u sonucunu 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'));
// 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'));

Daha sonra sonucu konsola yazdırır ve çıktıyı not eder:

0000 0011

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

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

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

3:00'de, val1 ve val2 tam olarak aynı olacak şekilde değerleri değiştirir:

// 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
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 gerçekleştirdiğinde, sonuç:

0000 0000

Tim, bir XOR sonucunun 0 olmasının değerlerin aynı olduğu anlamına geldiğini açıklar. Bu, XOR'un iki sayının eşitliğini kontrol etmek için hızlı bir yol olması anlamına gelir.

Farkları Belirlemek İçin XOR

4:00'de, Tim val1 ve val2 arasında küçük farklılıkların olduğu başka bir durumu gösterir. 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, XOR'un sadece bir adımda farklılıkları vurgulayabilmesi nedeniyle büyük ikili değerleri verimli bir şekilde karşılaştırırken kullanışlıdır.

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

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

5:40'da, izleyicilere ekstra bir değişken tanımlamadan val1 ve val2 değiştirin diye meydan okur. Çö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}");
// 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}");

İşlemin adımlarını açıklıyor:

  1. val1, val1 ^ val2 saklar, yani şimdi her iki değerin bir karışımını içerir.
  2. val2 tekrar val1 ile XOR yapılarak güncellenir, sadece orijinal val1 değeri kalır.
  3. val1 tekrar XOR yapılarak sadece orijinal val2 değeri kalır.

7:30'da, Tim değiştirilen değerleri yazdırır ve val1 ile val2 başarıyla değerlerini değiş tokuş ettiklerini doğrular.

İkili Temsilde XOR'u Anlamak

Anlamayı pekiştirmek için Tim, değiştirme işleminin ikili bir versiyonunu çalıştırır ve her bir XOR adımının bitleri nasıl etkilediğini gösterir. Her bir bitin sadece gerektiğinde döndüğünü vurgular, bu da XOR'u değerleri değiştirmek için verimli bir hale getirir.

Sonuç

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

  • XOR sadece biri 1 olduğunda 1 döner.
  • Bu, değerleri verimli bir şekilde karşılaştırmak için kullanılabilir.
  • Üçüncü bir değişken olmadan iki değeri değiştirmeye yardımcı olur, bu da kodlama zorluklarında elverişli bir hile yapar.

İzleyicileri, XOR ile denemeler yapmaya ve gerçek dünya problemlerine uygulamaya davet ediyor, böylece daha derin bir anlayış geliştirebilirler.

Son Düşünceler

Tim Corey'nin videosu, C# dilindeki XOR'un mükemmel, kısa bir özetini sunar. Adım adım örnekler üzerinden giderek, operatörün karşılaştırmalarda, farklılıklarda ve hatta değer değişiminde nasıl kullanılabileceğini gösterir.

İkili işlemler veya bit düzeyinde hilelerle ilgileniyorsanız, C# ikili manipülasyon hakkındaki anlayışınızı güçlendirmek için bu mutlaka izlenmesi gereken bir video.

Hero Worlddot related to C#'ta İkili XOR Operatörünü Anlama
Hero Affiliate related to C#'ta İkili XOR Operatörünü Anlama

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara