Operadores lógicos binarios (bit a bit)
Son operadores que actúan sobre números binarios a nivel de sus bits individuales.
Operadores lógicos binarios | |
---|---|
& | AND bit a bit |
| | OR bit a bit |
^ | XOR bit a bit |
~ | NOT bit a bit |
<< | Desplazamiento de bit a la izquierda |
>> | Desplazamiento de bit a la derecha |
&
El operador «&» corresponde a la operación lógica «AND» compara los bits uno a uno, si ambos son «1» el resultado es «1», en caso contrario «0».
Ejemplo
int a = 92; // en binario: 0000000001011100 int b = 101; // en binario: 0000000001100101 int c = a & b; // resultado: 0000000001000100, o 68 en decimal.
|
El operador «|» toma dos números enteros y realiza la operación OR inclusivo en cada par correspondiente de bits. El resultado en cada posición es 1 si el bit correspondiente de cualquiera de los dos operandos es 1, y 0 si ambos bits son 0, por ejemplo:
Ejemplo
int a = 92; // en binario: 0000000001011100 int b = 101; // en binario: 0000000001100101 int c = a | b; // resultado: 0000000001111101, o 125 en decimal.
^
El operador «^» toma dos números enteros y realiza la operación OR exclusivo en cada par correspondiente de bits. El resultado en cada posición es 1 si el par de bits son diferentes y 0 si el par de bits son iguales.
Ejemplo
int x = 12; // binario: 1100 int y = 10; // binario: 1010 int z = x ^ y; // binario: 0110, o decimal 6
~
El operador «~» es una operación que realiza la negación lógica en cada bit, invirtiendo los bits del número, de tal manera que los 0 se convierten en 1 y viceversa.
Ejemplo
int a = 103; // binario: 0000000001100111 int b = ~a; // binario: 1111111110011000 = -104
<< y >>
Son los operadores de desplazamiento binario (bit shift operators) que te permiten desplazar los bits de una variable a una cierta posición antes de trabajar con ellos. El primer operador desplaza los bits hacia la izquierda y el segundo a la derecha.
Ejemplos
int a = 5; // binario: 0000000000000101 int b = a << 3; // binario: 0000000000101000, o 40 en decimal
int a = 40; // binario: 0000000000101000 int b = a >> 3; // binario: 0000000000000101, o 5 en decimal
Deja un comentario