Aunque en el ecosistema Javascript no es algo que se utilice de forma frecuente, existen los denominados operadores a nivel de bit o «bitwise». Se trata de una serie de operadores que nos permiten realizar operaciones o cálculos básicos, pero trabajando a un nivel más bajo.
Operadores bitwise
Los operadores bitwise permiten realizar operaciones que se hacen más «cerca de la máquina», por lo que son más eficientes. Esto es ideal si necesitamos realizar operaciones intensivas de forma masiva, ya que al llamarlas gran cantidad de veces, una mejora de rendimiento se vuelve notable.
Veamos algunos de estos operadores:
Nombre | Operador | Descripción |
---|---|---|
Operador AND | a & b | Devuelve 1 si ambos operandos son 1 . |
Operador OR | a | b | Devuelve 1 si al menos un operando es 1 . |
Operador XOR (OR exclusivo) | a ^ b | Devuelve 1 si ambos operandos son diferentes. |
Operador NOT (unario) | ~a | Invierte los bits del operando (ej: 000101 -> 111010). Trunca a 32 bits. |
Operador double NOT (unario) | ~~a | Trunca los decimales del número, convirtiéndolo en entero. Sólo 32 bits. |
Operador LEFT SHIFT | a << b | Desplazamiento de bits hacia la izquierda. Ej: 11 (3) pasa a 110 (6). |
Operador RIGHT SHIFT | a >> b | Desplazamiento de bits hacia la derecha. Ej: 11 (3) pasa a 1 (1). |
Operador RIGHT SHIFT sin signo | a >>> b | Desplazamiento de bits hacia la derecha, como un operador sin signo. |
Por ejemplo, los tres primeros suelen ser los más habituales, donde podríamos crear las llamadas tablas de verdad. En las columnas a
y b
tenemos los valores de dos operandos. A la derecha, tenemos el resultado de realizar la operación AND
, OR
, XOR
, etc. con esos dos operandos:
a b AND OR XOR NOT AND NOT OR NOT XOR
--- --- ----- ----- ----- --------- -------- ---------
0 0 0 0 0 1 1 1
0 1 0 1 1 1 0 0
1 0 0 1 1 1 0 0
1 1 1 1 0 0 0 1
Por ejemplo, la operación 1 AND 1
, es decir, 1 & 1
toma como resultado 1
, mientras que la operación 0 OR 0
, es decir, 0 | 0
toma como resultado 0
.
Sin embargo, ten en cuenta que los operadores a nivel de bit son más complejos y pueden utilizarse en Javascript con valores diferentes de
0
y1
.
Asignación a nivel de bit
De la misma forma que anteriormente vimos que tenemos a nuestra disposición unos operadores de asignación compactos para realizar tareas más verbosas, tenemos de la misma forma una serie de operadores de asignación a nivel de bit.
Son los siguientes:
Nombre | Operador | Descripción |
---|---|---|
Desplazamiento a la izquierda y asignación | a <<= b | Es equivalente a a = a << b . |
Desplazamiento a la derecha y asignación | a >>= b | Es equivalente a a = a >> b . |
Desplazamiento a la derecha sin signo y asignación | a >>>= b | Es equivalente a a = a >>> b . |
Operación AND y asignación | a &= b | Es equivalente a a = a & b |
Operación OR y asignación | a |= b | Es equivalente a a = a | b |
Operación XOR y asignación | a ^= b | Es equivalente a a = a ^ b |
Existen muchos otros operadores en Javascript, pero los iremos viendo poco a poco en siguientes artículos temáticos.