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.