Operaciones de JavaScript bit a bit

Operadores bit a bit

Operador Nombre Descripción
& AND Establece cada bit en 1 si ambos bits son 1
| OR Establece cada bit en 1 si uno de los dos bits es 1
^ XOR Establece cada bit en 1 si solo uno de los dos bits es 1
~ NOT Invierte todos los bits
<< Zero fill left shift se desplaza a la izquierda presionando ceros desde la derecha y deja que los bits de la izquierda se caigan
>> Signed right shift Se desplaza a la derecha empujando copias del bit más a la izquierda desde la izquierda, y deja que los bits más a la derecha se caigan
>>> Zero fill right shift Se desplaza a la derecha presionando ceros desde la izquierda y deja que los bits de la derecha se caigan

Ejms

Operación Resultado Igual que Resultado
5 & 1 1 0101 & 0001  0001
5 | 1 5 0101 | 0001  0101
~ 5 10  ~0101  1010
5 << 1 10 0101 << 1  1010
5 ^ 1 4 0101 ^ 0001  0100
5 >> 1 2 0101 >> 1  0010
5 >>> 1 2 0101 >>> 1  0010

JavaScript utiliza operandos bit a bit de 32 bits

JavaScript almacena números como números de coma flotante de 64 bits, pero todas las operaciones bit a bit se realizan en números binarios de 32 bits.

Antes de realizar una operación bit a bit, JavaScript convierte números en enteros de 32 bits con signo.

Una vez realizada la operación bit a bit, el resultado se vuelve a convertir a números JavaScript de 64 bits.

Los ejemplos anteriores utilizan números binarios sin signo de 4 bits. Debido a esto ~ 5 devuelve 10.

Dado que JavaScript utiliza enteros de 32 bits con signo, no devolverá 10. Devolverá -6.

00000000000000000000000000000101 (5)

11111111111111111111111111111010 (~ 5 = -6)

Un entero con signo usa el bit más a la izquierda como signo menos.