Calculadora de programador y calculadora a nivel de bits

Escriba una expresión usando literales hexadecimales 0x, binarios 0b y octales 0o, los operadores a nivel de bits & | ^ ~, desplazamientos << >> >>>, rotaciones y aritmética normal — el resultado se actualiza en vivo como decimal, hexadecimal, octal y binario con un tamaño de palabra de 8, 16, 32 o 64 bits, con signo o sin signo. Abajo, una cuadrícula de bits pulsable, un panel de bits a dos operandos (AND / OR / XOR / NAND / NOR / NOT / desplazamientos / ROL / ROR) y poner, borrar o alternar un solo bit. Para la conversión de bases simple sin lógica de bits vea el Conversor matemático; para estadística, la Calculadora de estadística.
Tamaño de palabra   Vista   Operadores: & | ^ ~ << >> >>> + - * / % ( ) — solo matemáticas enteras; los resultados se truncan al tamaño de palabra.
DEC
HEX
OCT
BIN
Los bits se muestran del más significativo al menos significativo; las celdas atenuadas están fuera del tamaño de palabra actual.
índice de bit (0 = menos significativo)
A =    B =  A y B admiten expresiones completas (p. ej. 1 << 12).
La tabla de resultados aparece cuando A y B se analizan correctamente. Los desplazamientos y las rotaciones toman el recuento de B.
Pruebe un ejemplo:
Cómo se comportan los desplazamientos: << enmascara de nuevo al tamaño de palabra (los bits que salen por arriba desaparecen). >>> es siempre un desplazamiento lógico (sin signo). >> sigue el selector Vista: aritmético en modo con signo, lógico en modo sin signo. Privacidad: toda la calculadora se ejecuta en esta pestaña — sin servidor, sin almacenamiento.

¿Qué es una calculadora de programador?

Una calculadora de programador hace aritmética tal como la guardan las computadoras: en palabras de bits de anchura fija. En lugar de una recta numérica infinita, una palabra de 8 bits es un círculo de 256 valores, una de 32 bits un círculo de 4 294 967 296. Cada resultado se devuelve a ese círculo, y los mismos bits pueden leerse como un recuento sin signo (0 … 255) o como un valor con signo en complemento a dos (-128 … 127). Las cuatro filas de base de arriba son los mismos bits mostrados de cuatro formas: edite una y las otras tres se actualizan.

Por qué los programadores viven en hexadecimal

Un dígito hexadecimal son exactamente cuatro bits, así que un byte son siempre dos dígitos hexadecimales, y una palabra de 32 bits siempre ocho. El hexadecimal es binario con los ceros reagrupados para el ojo humano:

BinarioHexDecimal
1111 11110xFF255
0001 01100x1622
1000 00000x80128 (o -128 con signo)

Complemento a dos en un párrafo

Para leer una palabra como con signo, mire el bit superior. Si es 0, el valor es simplemente el recuento sin signo. Si es 1, reste el tamaño del círculo: un 0xFF de 8 bits es 255 − 256 = −1. Ese es todo el truco — -x y 0 - x producen exactamente los mismos bits, por eso el mismo hardware sumador sirve para ambos. El cambio de signo es «invertir cada bit y sumar 1»: NOT(0x01) = 0xFE, +1 = 0xFF = −1.

Los operadores de desplazamiento de un vistazo

OperadorNombreEjemplo de 8 bits (a = 0xF0)
a << 1desplazamiento a la izquierda0xE0 — el bit superior sale, entra un cero por abajo
a >> 1 (sin signo)desplazamiento lógico a la derecha0x78 — entran ceros por arriba
a >> 1 (con signo, a = −16)desplazamiento aritmético a la derecha0xF8 = −8 — se copia el bit de signo
a >>> 1siempre lógico0x78 independientemente del selector Vista
rol(a, 1)rotación a la izquierda0xE1 — el bit superior caído vuelve a entrar por abajo

Errores habituales que esta página ayuda a evitar

Desplazamiento aritmético frente a lógico: copiar el bit de signo (aritmético) y rellenar con ceros (lógico) difieren siempre que el bit superior está activado — cambie el selector Vista y vea cómo 0xF0 >> 1 cambia entre 0x78 y 0xF8.
La sorpresa de 53 bits: el tipo Number ordinario de JavaScript es un flotante de 64 bits con solo 53 bits enteros seguros, así que 0xFFFFFFFFFFFFFFFF no puede representarse exactamente — esta página usa aritmética entera exacta de 64 bits internamente, así que cada dígito hexadecimal que ve es fiable.
Trampas de coma flotante: 0.1 + 0.2 da famosamente 0.30000000000000004 en coma flotante; esta calculadora es solo entera por diseño — la división trunca hacia cero, exactamente como el / de C con enteros.
Ceros iniciales: en el C antiguo, un literal como 052 significaba octal. Aquí el decimal son dígitos simples y el octal necesita el prefijo 0o, así que nada es ambiguo.

Preguntas frecuentes

¿Cuál es el número más grande? — 64 bits sin signo: 18 446 744 073 709 551 615 (0xFFFFFFFFFFFFFFFF); con signo: ±9 223 372 036 854 775 808.
¿Por qué 1 << 8 dio 0? — el tamaño de palabra es de 8 bits; el bit 8 no existe, y la máscara lo descarta. Cambie a 16/32/64 bits para conservarlo.
¿Qué hace ~? — NOT a nivel de bits: cada bit se invierte dentro del tamaño de palabra actual, así que ~0 son todos unos (255 / 65535 / −1 …).
¿Hay coma flotante? — no, solo enteros; use la Calculadora científica para flotantes, trigonometría y funciones.
¿Sale algo de mi equipo? — no: sin servidor, sin almacenamiento, sin analítica; cierre la pestaña y todo desaparece.