Operadores lógicos binarios (bit a bit)

  0 comentarios

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 &lt;&lt; 3; // binario: 0000000000101000, o 40 en decimal
int a = 40;     // binario: 0000000000101000
int b = a &gt;&gt; 3; // binario: 0000000000000101, o 5 en decimal

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
*
*