Tutorial JS

JS INICIO JS Introducción JS Dónde Salida JS Declaraciones JS Sintaxis JS Comentarios JS Variables JS JS Vamos Constante JS Operadores JS Aritmética JS Tarea JS Tipos de datos JS Funciones JS Objetos JS Eventos JS Cadenas JS Métodos de cadena JS Búsqueda de cadenas JS Plantillas de cadena JS Números JS Métodos numéricos JS Matrices JS Métodos de matriz JS Clasificación de matriz JS Iteración de matriz JS Constante de matriz JS Fechas JS Formatos de fecha JS Métodos de obtención de fecha JS Métodos de configuración de fechas JS Matemáticas JS JS al azar Booleanos JS Comparaciones JS Condiciones JS Interruptor JS Bucle JS para Bucle JS para entrada Bucle JS para de Bucle JS mientras descanso JS Iterables JS Conjuntos JS Mapas JS JS Tipo de Conversión de tipo JS JS bit a bit JS expresión regular Errores JS Alcance JS JS Elevación Modo estricto JS JS esta palabra clave Función de flecha JS Clases JS JSJSON Depuración JS Guía de estilo JS Prácticas recomendadas de JS Errores JS Rendimiento JS Palabras reservadas de JS

Versiones JS

Versiones JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Borde Historia de JS

Objetos JS

Definiciones de objetos Propiedades del objeto Métodos de objetos Visualización de objetos Accesores de objetos Constructores de objetos Prototipos de objetos Objeto iterables Conjuntos de objetos Mapas de objetos Referencia de objeto

Funciones JS

Definiciones de funciones Parámetros de función Invocación de funciones Llamada de función Función Aplicar Cierres de funciones

Clases JS

Introducción a la clase Herencia de clase Clase estática

JS asíncrono

Devoluciones de llamada JS JS asíncrono Promesas JS JS asíncrono/espera

JS HTML DOM

Introducción al DOM Métodos DOM Documento DOM Elementos DOM DOM HTML Formularios DOM DOM CSS Animaciones DOM Eventos DOM Oyente de eventos DOM Navegación DOM Nodos DOM Colecciones DOM Listas de nodos DOM

Lista de materiales del navegador JS

Ventana JS Pantalla JS Ubicación de JS Historia de JS Navegador JS Alerta emergente JS Tiempo JS Galletas JS

API web de JS

Introducción a la API web API de formularios web API de historial web API de almacenamiento web API de trabajo web API de búsqueda web API de geolocalización web

JS AJAX

Introducción a AJAX AJAX XMLHttp Solicitud AJAX Respuesta AJAX Archivo XML AJAX AJAXPHP Ajax ASP Base de datos AJAX Aplicaciones AJAX Ejemplos de AJAX

JSJSON

Introducción JSON Sintaxis JSON JSON frente a XML Tipos de datos JSON Análisis JSON Cadena JSON Objetos JSON Matrices JSON Servidor JSON JSONPHP JSONHTML JSON JSONP

JS frente a jQuery

Selectores jQuery HTML de jQuery CSS de jQuery DOM de jQuery

Gráficos JS

Gráficos JS Lienzo JS JS Trazado Gráfico JS.js Gráfico de Google JS JS D3.js

Ejemplos de JS

Ejemplos de JS JS HTML DOM Entrada HTML JS Objetos JS HTML Eventos JS HTML Navegador JS Editor JS Ejercicios JS Prueba JS Certificado JS

Referencias JS

Objetos JavaScript Objetos HTML DOM


Operaciones bit a bit de JavaScript


Operadores bit a bit de JavaScript

Operator Name Description
& AND Sets each bit to 1 if both bits are 1
| OR Sets each bit to 1 if one of two bits is 1
^ XOR Sets each bit to 1 if only one of two bits is 1
~ NOT Inverts all the bits
<< Zero fill left shift Shifts left by pushing zeros in from the right and let the leftmost bits fall off
>> Signed right shift Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off
>>> Zero fill right shift Shifts right by pushing zeros in from the left, and let the rightmost bits fall off

Ejemplos

Operation Result Same as Result
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 los números en enteros con signo de 32 bits.

Después de realizar la operación bit a bit, el resultado se vuelve a convertir en números de 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 usa enteros con signo de 32 bits, no devolverá 10. Devolverá -6.

000000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

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



Y bit a bit

Cuando se realiza un AND bit a bit en un par de bits, devuelve 1 si ambos bits son 1.

Un poco de ejemplo:
OperaciónResultado
0 y 00
0 y 10
1 y 00
1 y 11
Ejemplo de 4 bits:
OperaciónResultado
1111 y 00000000
1111 y 00010001
1111 y 00100010
1111 y 01000100

O bit a bit

Cuando se realiza un OR bit a bit en un par de bits, devuelve 1 si uno de los bits es 1:

Un poco de ejemplo:
OperaciónResultado
0 | 00
0 | 1
1 | 01
1 | 11
Ejemplo de 4 bits:
OperaciónResultado
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

XOR bit a bit

Cuando se realiza un XOR bit a bit en un par de bits, devuelve 1 si los bits son diferentes:

Un poco de ejemplo:
OperaciónResultado
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
Ejemplo de 4 bits:
OperaciónResultado
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript bit a bit Y (&)

AND bit a bit devuelve 1 solo si ambos bits son 1:

DecimalBinario
5000000000000000000000000000000101
1000000000000000000000000000000001
5 y 1000000000000000000000000000000001 (1)

Ejemplo

let x = 5 & 1;

JavaScript bit a bit O (|)

Bitwise OR devuelve 1 si uno de los bits es 1:

DecimalBinario
5000000000000000000000000000000101
1000000000000000000000000000000001
5 | 1000000000000000000000000000000101 (5)

Ejemplo

let x = 5 | 1;

JavaScript bit a bit XOR (^)

Bitwise XOR devuelve 1 si los bits son diferentes:

DecimalBinario
5000000000000000000000000000000101
1000000000000000000000000000000001
5 ^ 1000000000000000000000000000000100 (4)

Ejemplo

let x = 5 ^ 1;

JavaScript bit a bit NO (~)

DecimalBinario
5000000000000000000000000000000101
~5111111111111111111111111111111010 (-6)

Ejemplo

let x = ~5;

JavaScript (Zero Fill) Desplazamiento a la izquierda bit a bit (<<)

Este es un desplazamiento a la izquierda de relleno cero. Se empujan uno o más bits cero desde la derecha, y los bits más a la izquierda caen:

DecimalBinario
5000000000000000000000000000000101
5 << 1000000000000000000000000000001010 (10)

Ejemplo

let x = 5 << 1;

JavaScript (conservación de signos) Desplazamiento a la derecha bit a bit (>>)

Esta es una señal que preserva el desplazamiento a la derecha. Las copias del bit más a la izquierda se empujan desde la izquierda y los bits más a la derecha se caen:

DecimalBinario
-5111111111111111111111111111111011
-5 >> 1111111111111111111111111111111101 (-3)

Ejemplo

let x = -5 >> 1;

JavaScript (Zero Fill) Desplazamiento a la derecha (>>>)

Este es un desplazamiento a la derecha de relleno cero. Uno o más bits cero se introducen desde la izquierda y los bits más a la derecha se caen:

DecimalBinario
5000000000000000000000000000000101
5 >>> 1000000000000000000000000000000010 (2)

Ejemplo

let x = 5 >>> 1;

Numeros binarios

Los números binarios con un solo conjunto de bits son fáciles de entender:

Representación binariavalor decimal
0000000000000000000000000000000011
0000000000000000000000000000000102
0000000000000000000000000000001004
0000000000000000000000000000010008
000000000000000000000000000010000dieciséis
00000000000000000000000000010000032
00000000000000000000000000100000064

Establecer algunos bits más revela el patrón binario:

Representación binariavalor decimal
0000000000000000000000000000001015 (4 + 1)
00000000000000000000000000000110113 (8 + 4 + 1)
00000000000000000000000000010110145 (32 + 8 + 4 + 1)

Los números binarios de JavaScript se almacenan en formato de complemento a dos.

Esto significa que un número negativo es el NO bit a bit del número más 1:

Representación binariavalor decimal
0000000000000000000000000000001015
111111111111111111111111111111011-5
0000000000000000000000000000001106
111111111111111111111111111111010-6
00000000000000000000000000010100040
111111111111111111111111111011000-40

Conversión de decimal a binario

Ejemplo

function dec2bin(dec){
  return (dec >>> 0).toString(2);
}

Conversión de binario a decimal

Ejemplo

function bin2dec(bin){
  return parseInt(bin, 2).toString(10);
}