| El
ordenador, internamente, trata cualquier tipo de datos como
una cadena binaria ( ceros y unos). Así los números
se representan en sistema binario de numeración mientras
que los caracteres se convierten a código ASCII,
que son números que se almacenan
por tanto codificados en binario. JavaScript ofrece los operadores típicos
para trabajar con estas cadenas a nivel de bit (cada uno de los ceros o
unos
de las cadenas binarias). Para trabajar con estos operadores es conveniente
tener una idea previa sobre la codificación binaria.
Complementación ~
Complementa, o niega, una cadena binaria conviertiendo los 1 en 0 y los
0 en 1.
Por ejemplo el número 38 escrito en sistema binario es 00100110 si
le aplicamos este operador se convierte en 11011001, o sea el -39 (JavaScript
usa codificación en complemento a 2 para los números negativos).
Desplazamiento izquierda <<
Desplaza los bits a la izquierda los lugares que se le indique rellenando
con ceros por la derecha y desechando los bits de mayor peso, esto equivale
a multiplicar por potencias de 2. Por ejemplo si al 00011010 (26) lo desplazamos
2 a la izquierda tendremos el 01101000 (104).
var num = 26, res;
res = num << 2; /* num contendrá
104 */
Desplazamiento derecha >>
Desplaza los bits a la derecha los lugares que se le indique rellenando
con ceros por la izquierda y desechando los bits de menor peso, esto equivale
a una división entera por potencias de 2. Por ejemplo si al 00011010
(26) lo desplazamos 2 a la derecha tendremos el 00000110 (6).
var num = 26, res;
res = num << 2; /* num contendrá
104 */
AND lógico binario &
Realiza un AND lógico bit a bit entre dos valores. El AND lógico
da como resultado 1 sólo si ambos bits son 1. Por ejemplo
0
1 1 0 1 1 0 1 (109)
AND 0
0 1 0 0 1 1 0 (38)
resultado: 0
0 1 0 0 1 0 0 (36)
var op1 = 109, op2 = 38, res;
res = op1 & op2; /*res
contiene 36 */
OR lógico binario |
Realiza un OR lógico bit a bit entre dos valores. El OR lógico
da como resultado 0 sólo si ambos bits son 0. Por ejemplo
0
0 1 1 1 0 1 0 (58)
OR 0 1 0 1 0 0 1 0 (82)
resultado:
0 1 1 1 1 0 1 0 (122)
En el ejemplo podemos ver la sintaxis del operador
var op1 = 58, op2 = 82, res;
res = op1 | op2; /*res
contiene 122 */
XOR lógico binario ^
Realiza un XOR lógico bit a bit entre dos valores. El XOR lógico
da como resultado 1 si uno sólo de los bits es 1. Por ejemplo
0
0 1 1 1 0 1 0 (58)
OR 0 1 0 1 0 0 1 0 (82)
resultado:
0 0 1 0 1 0 0 0 (40)
En el ejemplo podemos ver la sintaxis del operador
var op1 = 109, op2 = 38, res;
res = op1 ^ op2; /*res
contiene 40*/
|