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": "C#'ta İkilik: Binary XOR Operatörü 10 dakika veya daha kısa sürede", "creator": "Tim Corey", "length": "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'));
// 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

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

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

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 ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

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