Operadores de bits de JavaScript
- Página anterior Desestructuración JS
- Página siguiente Expresiones regulares JS
Operadores de bits de JavaScript
Operador | Nombre | Descripción |
---|---|---|
& | AND | Establecer cada bit en 1 si ambos son 1 |
| | OR | Establecer cada bit en 1 si uno de los dos es 1 |
^ | XOR | Establecer cada bit en 1 si solo uno de los dos es 1 |
~ | NOT | Invertir todos los bits |
<< | Desplazamiento a la izquierda con relleno de ceros | Al desplazarse a la izquierda introduciendo ceros desde la derecha y eliminando el bit más a la izquierda. |
>> | Desplazamiento a la derecha con signo | Al desplazarse a la derecha introduciendo una copia del bit más a la izquierda y eliminando el bit más a la derecha. |
>>> | Desplazamiento a la derecha con relleno de ceros | Al desplazarse a la derecha introduciendo ceros desde la izquierda y eliminando el bit más a la derecha. |
Ejemplo
Operación | Resultado | es equivalente | Resultado |
---|---|---|---|
5 & 1 | 1 | 0101 & 0001 | 0001 |
5 | 1 | 5 | 0101 | 0001 | 0101 |
5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
~ 5 | 10 | ~0101 | 1010 |
5 << 1 | 10 | 0101 << 1 | 1010 |
5 >> 1 | 2 | 0101 >> 1 | 0010 |
5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
JavaScript utiliza números de bits de 32 bits
JavaScript almacena los números como números de coma flotante de 64 bits, pero todas las operaciones de bits se realizan con números binarios de 32 bits.
Antes de realizar la operación de bits, JavaScript convierte los números en enteros signados de 32 bits.
Después de realizar la operación de bits, el resultado se convierte nuevamente en un número de JavaScript de 64 bits.
El ejemplo anterior utiliza números binarios sin signo de 4 bits. Por lo tanto, ~ 5 devuelve 10.
Dado que JavaScript utiliza enteros signados de 32 bits, JavaScript devuelve -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
Los enteros signados utilizan el bit más a la izquierda como signo negativo.
Operación de bits AND
Cuando se realiza una operación de bits AND entre un par de dígitos, si todos los dígitos son 1, devuelve 1.
Ejemplo de unidad:
Operación | Resultado |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Ejemplo de 4 bits:
Operación | Resultado |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Operación de bits OR
Cuando se realiza una operación de bits OR entre un par de dígitos, si uno de ellos es 1, devuelve 1:
Ejemplo de unidad
Operación | Resultado |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Operación de 4 bits:
Operación | Resultado |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Operación de bits XOR
Cuando se realiza una operación de bits XOR entre un par de dígitos, si los dígitos son diferentes, devuelve 1:
Ejemplo de unidad:
Operación | Resultado |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Ejemplo de 4 bits:
Operación | Resultado |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
Operación de bits AND (&) en JavaScript
Si todos los bits son 1, la operación de bits AND devuelve 1:
Decimal | Binario |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
Ejemplo
var x = 5 & 1;
Operación de bits OR (|) en JavaScript
Si uno de los bits es 1, la operación OR de bits devuelve 1:
Decimal | Binario |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
Ejemplo
var x = 5 | 1;
Operación XOR (^) de bits en JavaScript
Si los bits son diferentes, XOR devuelve 1:
Decimal | Binario |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
Ejemplo
var x = 5 ^ 1;
Operación NOT (~) de bits en JavaScript
Decimal | Binario |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Ejemplo
var x = ~5;
Desplazamiento a la izquierda (<<)(relleno cero) en operaciones de bits de JavaScript
Esto es un desplazamiento a la izquierda con relleno cero. Un o más bits cero se introducen desde la derecha, y el bit más a la izquierda se elimina:
Decimal | Binario |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Ejemplo
var x = 5 << 1;
Desplazamiento a la derecha (>>)(con signo) en operaciones de bits de JavaScript
Esto es un desplazamiento a la derecha que mantiene el signo. El bit más a la izquierda se introduce desde la izquierda, y el bit más a la derecha se elimina:
Decimal | Binario |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Ejemplo
var x = -5 >> 1;
Desplazamiento a la derecha (>>>)(relleno cero) en JavaScript
Esto es un desplazamiento a la derecha con relleno cero. Un o más bits cero se introducen desde la izquierda, y el bit más a la derecha se elimina:
Decimal | Binario |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
Ejemplo
var x = 5 >>> 1;
Entero de 32 bits con signo (número binario)
La comprensión de un entero de 32 bits con un solo bit establecido es muy sencilla:
Representación binaria | Valor decimal |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Añadir más位数揭示了二进制的模式:
Representación binaria | Valor decimal |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000101000 | 40 (32 + 8) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
Los números negativos son el complemento binario de los números positivos más 1:
Representación binaria | Valor decimal |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
11111111111111111111111111011001 | -41 |
Convertir de decimal a binario
Ejemplo
function dec2bin(dec){ return (dec >>> 0).toString(2); }
Convertir de binario a decimal
Ejemplo
function bin2dec(bin){ return parseInt(bin, 2).toString(10); }
- Página anterior Desestructuración JS
- Página siguiente Expresiones regulares JS