csharp-operadores-bitwise

Operadores de bitwise en C#

Los operadores bitwise permiten realizar operaciones directamente sobre los bits de los operandos. En lugar de trabajar con valores enteros en su totalidad, los operadores bitwise tratan cada bit de los operandos por separado.

C# proporciona varios operadores bitwise, cada uno con su propia funcionalidad específica.

OperadorSímbolo
AND Bitwise&
OR Bitwise|
XOR Bitwise^
NOT Bitwise~
Desplazamiento a la Izquierda<<
Desplazamiento a la Derecha>>

Tipos de Operadores Bitwise en C#

AND Bitwise (&)

El operador AND bitwise realiza una operación lógica AND entre cada par de bits correspondientes de dos operandos. El resultado es 1 solo si ambos bits son 1; de lo contrario, el resultado es 0.

int a = 12; // 1100 en binario
int b = 10; // 1010 en binario
int result = a & b; // 1000 en binario, que es 8 en decimal
Console.WriteLine(result); // Output: 8

OR Bitwise (|)

El operador OR bitwise realiza una operación lógica OR entre cada par de bits correspondientes de dos operandos. El resultado es 1 si al menos uno de los bits es 1; de lo contrario, el resultado es 0.

int a = 12; // 1100 en binario
int b = 10; // 1010 en binario
int result = a | b; // 1110 en binario, que es 14 en decimal
Console.WriteLine(result); // Output: 14

XOR Bitwise (^)

El operador XOR bitwise realiza una operación lógica XOR (exclusiva) entre cada par de bits correspondientes de dos operandos. El resultado es 1 si uno y solo uno de los bits es 1; de lo contrario, el resultado es 0.

int a = 12; // 1100 en binario
int b = 10; // 1010 en binario
int result = a ^ b; // 0110 en binario, que es 6 en decimal
Console.WriteLine(result); // Output: 6

4NOT Bitwise (~)

El operador NOT bitwise realiza una negación bitwise de su operando, invirtiendo cada bit del operando (los 0 se convierten en 1 y los 1 se convierten en 0).

int a = 12; // 1100 en binario
int result = ~a; // 0011 en binario, que es -13 en decimal (en complemento a dos)
Console.WriteLine(result); // Output: -13

Desplazamiento a la Izquierda (<<)

El operador de desplazamiento a la izquierda desplaza los bits de su operando a la izquierda un número específico de posiciones, rellenando con ceros los bits vacíos en la parte derecha.

int a = 3; // 0011 en binario
int result = a << 2; // 1100 en binario, que es 12 en decimal
Console.WriteLine(result); // Output: 12

Desplazamiento a la Derecha (>>)

El operador de desplazamiento a la derecha desplaza los bits de su operando a la derecha un número específico de posiciones. Los bits vacíos en la parte izquierda se rellenan con el bit de signo (para números negativos) o con ceros (para números positivos).

int a = 12; // 1100 en binario
int result = a >> 2; // 0011 en binario, que es 3 en decimal
Console.WriteLine(result); // Output: 3