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
Las operaciones binarias son una parte crucial de la programación, sobre todo cuando se trata de optimizaciones de bajo nivel y manipulaciones bit a bit. Una de estas operaciones es el operador OR exclusivo (XOR). En este artículo, exploraremos el operador XOR binario de C# siguiendo el vídeo de Tim Corey, "El operador XOR binario en 10 minutos o menos."
El vídeo de Tim es un excelente desglose de XOR, su sintaxis y sus aplicaciones prácticas. A continuación, analizaremos sus explicaciones y ejemplos haciendo referencia a marcas de tiempo específicas para facilitar la consulta.
Tim comienza el vídeo mencionando que forma parte de su serie Understanding Binary in C#, concretamente de la lección número nueve. Prepara el escenario explicando que en esta sesión enseñará cómo funciona el operador OR exclusivo (XOR) y cómo puede ser útil en varios escenarios.
Tim introduce dos valores, 1 y 2, y los imprime en la consola como referencia. Elimina la representación de 32 bits para mantener el enfoque en la representación binaria estándar de 8 bits.
En el minuto 0:31, explica que XOR se representa con el símbolo de la intercalación (^) en C#. Recuerda a los espectadores que:
Tim explica con más detalle la regla para cada comparación de bits:
Esto significa que XOR actúa como un detector de diferencias entre dos valores.
Tim pasa a un ejemplo práctico definiendo una variable uint que contiene el resultado de hacer XOR entre dos valores:
// 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))A continuación, imprime el resultado en la consola y anota el resultado:
0000 0011
Este resultado pone de relieve que XOR sólo conserva los bits en los que uno de los valores originales tenía un 1, pero no ambos.
Tim demuestra ahora un uso práctico de XOR: comprobar si dos valores son idénticos.
A las 3:00, modifica los valores para que val1 y val2 sean exactamente iguales:
// 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))Cuando ejecuta la operación XOR, el resultado es:
0000 0000
Tim explica que un resultado XOR de 0 significa que los valores eran idénticos. Esto convierte a XOR en una forma rápida de comparar dos números para comprobar su igualdad.
A las 4:00, Tim muestra otro caso donde val1 y val2 tienen pequeñas diferencias. Esta vez, XOR produce un resultado distinto de cero, lo que indica una diferencia entre los valores.
Este enfoque es útil cuando se comparan grandes valores binarios de manera eficiente, ya que XOR puede resaltar las diferencias en un solo paso.
Tim presenta un truco de programación clásico: intercambiar dos números sin utilizar una variable temporal.
A las 5:40, desafía a los espectadores a intercambiar val1 y val2 sin declarar una variable adicional. La solución utiliza XOR tres veces:
// 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}")Recorre el proceso:
val1 almacena val1 ^ val2, lo que significa que ahora contiene una mezcla de ambos valores.val2 se actualiza haciendo XOR con val1 nuevamente, dejando solo el valor original val1.val1 se hace XOR nuevamente, dejando solo el valor original val2.A las 7:30, Tim imprime los valores intercambiados y confirma que val1 y val2 han intercambiado valores con éxito.
Para consolidar la comprensión, Tim ejecuta una versión binaria de la operación de intercambio, mostrando cómo cada paso de XOR afecta a los bits. Destaca que cada bit se invierte solo cuando es necesario, lo que convierte a XOR en una forma eficaz de intercambiar valores.
Tim concluye reforzando los puntos principales:
Anima a los espectadores a experimentar con XOR y aplicarlo a problemas del mundo real para construir una comprensión más profunda.
El vídeo de Tim Corey ofrece un desglose excelente y conciso de XOR en C#. A través de ejemplos paso a paso, demuestra la utilidad del operador en comparaciones, diferencias e incluso intercambio de valores.
Si te interesan las operaciones binarias o los trucos bitwise, este es un vídeo imprescindible para reforzar tu comprensión de la manipulación binaria en C#.
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