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
İ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.
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.
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:
Tim, her bit karşılaştırması için kuralı daha fazla açıklar:
Bu demektir ki XOR, iki değer arasında bir fark algılayıcı gibi çalışır.
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
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))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.
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
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))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.
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.
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
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}")Süreci adım adım anlatıyor:
val1, val1 ^ val2'yi saklar, bu da artık her iki değerin bir karışımını tuttuğu anlamına gelir.val2, tekrar val1 ile XOR'lanarak güncellenir, sadece orijinal val1 değerini bırakır.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.
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.
Tim, ana çıkarımları pekiştirerek sonlandırıyor:
İzleyicileri XOR'u deneyimlemeye ve derin bir anlayış geliştirmek için gerçek dünya problemlerine uygulamaya teşvik ediyor.
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.
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