Los operadores bitwise de C# 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. Aquí tenéis una tabla de resumen.
Operador | Sí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
NOT 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 viceversa).
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