Calculadora hexadecimal gratuita: convierte entre hex, decimal, binario y octal, con aritmética exacta y operaciones AND, OR, XOR, NOT y desplazamientos.
Automático usa tantos bits como necesite el valor. Un ancho fijo rellena el patrón e informa del desbordamiento.
Un dígito hexadecimal es exactamente un nibble, así que el hexadecimal y el binario se convierten por consulta y no por cálculo.
| Hex | Decimal | Bits |
|---|---|---|
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 2 | 2 | 0010 |
| 3 | 3 | 0011 |
| 4 | 4 | 0100 |
| 5 | 5 | 0101 |
| 6 | 6 | 0110 |
| 7 | 7 | 0111 |
| 8 | 8 | 1000 |
| 9 | 9 | 1001 |
| A | 10 | 1010 |
| B | 11 | 1011 |
| C | 12 | 1100 |
| D | 13 | 1101 |
| E | 14 | 1110 |
| F | 15 | 1111 |
| Hex | Decimal | Qué es |
|---|---|---|
| F | 15 | Un nibble con todos los bits a uno: el mayor dígito hexadecimal |
| 7F | 127 | El mayor byte con signo, y el último punto de código ASCII |
| 80 | 128 | Solo el bit de signo de un byte: el primer valor negativo de un int8 |
| FF | 255 | Un byte entero a uno, y el mayor valor que cabe en un uint8 |
| FFFF | 65535 | Dos bytes a uno: el tope de un uint16 y de un número de puerto TCP |
| FFFFFF | 16777215 | El blanco en CSS, y la cantidad de colores del RGB de 24 bits |
| 7FFFFFFF | 2147483647 | El mayor entero con signo de 32 bits, donde empieza el desbordamiento |
| FFFFFFFF | 4294967295 | Cuatro bytes a uno: un uint32 al máximo, y una máscara de difusión IPv4 |
| DEADBEEF | 3735928559 | Un patrón de relleno de depuración, elegido por ser legible en un volcado hex |
| CAFEBABE | 3405691582 | Los primeros cuatro bytes de todo archivo .class de Java compilado |
| FFFFFFFFFFFFFFFF | 18446744073709551615 | Ocho bytes a uno: un uint64 al máximo, más de lo que un número de JavaScript guarda exacto |
Toda operación más ancha es esta misma tabla aplicada columna a columna.
| A | B | AND | OR | XOR | NOT A |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 |
También podrías encontrar útiles estas calculadoras
Aritmética binaria y conversión de bases, exacta más allá de 64 bits
Texto a binario, hex, decimal u octal — y de vuelta, en UTF-8 real
Genera y verifica hashes SHA-256, MD5, SHA-1, SHA-512 y SHA-3
Convierte entre unidades de almacenamiento digital
El hexadecimal es la forma en que los ordenadores muestran los bytes a las personas. Esta calculadora hace los tres trabajos que eso conlleva: convertir un valor entre las bases 16, 10, 2 y 8; sumar, restar, multiplicar y dividir en cualquiera de ellas; y enmascarar bits con AND, OR, XOR, NOT y desplazamientos en el tamaño de palabra que elijas. Cada respuesta es exacta, incluso por encima de los 64 bits, y una máscara nunca devuelve un número negativo.
El hexadecimal es la base 16. Usa los diez dígitos del 0 al 9 y luego las letras de la A a la F para los valores del diez al quince, de modo que un solo dígito cubre exactamente dieciséis valores. Esa es toda la razón de ser de la notación: dieciséis es dos elevado a cuatro, así que un dígito hexadecimal representa exactamente cuatro bits, un nibble. Dos dígitos son un byte, seis son un color RGB y ocho son una palabra de 32 bits. Un byte escrito en binario es 11011110; ese mismo byte en hexadecimal es DE. Convertir entre ambos no requiere ninguna operación, solo la tabla de dieciséis filas que encontrarás más abajo. Para leer un número hexadecimal en decimal, multiplica cada dígito por el valor de su posición y suma los resultados.
Valor posicional en base 16
Un color hexadecimal son tres bytes: rojo, verde y azul. Convertir 1E90FF da 30, 144 y 255, que es la forma rgb() de ese mismo color. Un cuarto byte lleva la transparencia.
Los depuradores, las trazas de pila y los desensambladores imprimen las direcciones en hexadecimal porque los dígitos encajan con el bus de direcciones. Restar dos direcciones da el desplazamiento entre ellas.
El código empotrado y de controladores activa, borra y comprueba bits sueltos. Un AND con una máscara lee un campo, un OR lo activa, un XOR lo invierte y un desplazamiento lo coloca en su sitio.
Los primeros bytes de un archivo identifican su formato: CAFEBABE en una clase de Java, 89504E47 en un PNG, 25504446 en un PDF. Leerlos es leer hexadecimal.
Las direcciones MAC, las direcciones IPv6, los indicadores TCP y las sumas de verificación se escriben en hexadecimal, y enmascarar es como se extrae un campo de una cabecera.
Cada carácter tiene un punto de código hexadecimal —U+1F600— y convertirlo a decimal es lo que necesita una entidad numérica de HTML o una consulta a una base de datos.
Los valores se guardan como enteros de precisión arbitraria, así que FFFFFFFFFFFFFFFF se convierte en 18446744073709551615 y no en un redondeado 18446744073709552000. La mayoría de las herramientas del navegador pasan el hexadecimal por un número de coma flotante, que solo es exacto hasta unos quince dígitos.
AND, OR y XOR se calculan sobre patrones de bits en el ancho que elijas, así que FFFFFFFF OR 0 es FFFFFFFF. Los operadores de bits de JavaScript convierten antes sus operandos en un entero de 32 bits con signo, y por eso tantas herramientas en línea responden -1 a esa misma pregunta.
Elige 8, 16, 32 o 64 bits y la respuesta se rellena y se ajusta a ese registro. Un byte que se desborda lo dice, y un desplazamiento que expulsa todos los bits de la palabra también, en lugar de devolver cero en silencio.
Los mismos 32 bits son 4294967295 sin signo y -1 con signo. Se muestran ambas y ambas van etiquetadas, para que veas cuál te va a dar tu lenguaje en vez de adivinar cuál eligió imprimir la herramienta.
Las conversiones muestran una fila por dígito con sus cuatro bits y su aportación al total. Las sumas muestran los acarreos columna a columna. Las operaciones de bits alinean ambos operandos sobre el resultado, para que puedas leer la operación bajando por cualquier columna.
Introduce un decimal negativo y obtienes su patrón en complemento a dos con un ancho real —el -5 en un byte es FB— en lugar de una casilla vacía o un signo menos pegado a un dígito hexadecimal.
Multiplica cada dígito por 16 elevado a su posición, contando desde cero por la derecha, y suma los resultados. Para 2AF: 2×16² son 512, 10×16¹ son 160 y 15×16⁰ son 15, que suman 687. La pestaña Convertir hace esto y muestra la tabla dígito a dígito, para que puedas comprobar la operación en lugar de fiarte de ella.
4294967295. Son cuatro bytes con todos los bits a uno, el mayor valor que cabe en un entero de 32 bits sin signo. Leídos como entero de 32 bits con signo, esos mismos bits son -1, y por eso una herramienta que no te dice qué lectura ha usado parece dar dos respuestas distintas.
FF. La pregunta también se hace al revés: 255 leído como número hexadecimal, 0x255, son 597 en decimal. Son preguntas distintas con respuestas distintas, así que comprueba en qué base está escrito el 255 antes de convertirlo.
La base 16 necesita dieciséis dígitos distintos y el sistema decimal solo aporta diez. Las letras de la A a la F cubren el hueco para los valores del diez al quince. Elegir letras es un convenio, no una regla de las matemáticas —los primeros sistemas probaron otros símbolos—, pero hoy la A a la F es universal.
Cuatro bits, o medio byte. Un dígito hexadecimal es exactamente un nibble, y por eso el hexadecimal y el binario se convierten entre sí consultando una tabla en vez de calculando: 1101 es D, siempre, aparezca donde aparezca dentro de un número más largo.
Marca como hexadecimal el número que le sigue, de modo que un compilador lea 0x10 como dieciséis y no como diez. Lo introdujo C y la mayoría de los lenguajes lo copiaron. Existen otras notaciones: 0b para binario, 0o para octal, una h final en ensamblador y una almohadilla delante para los colores. Esta calculadora acepta las más comunes y las ignora al analizar el valor.
Casi seguro porque la herramienta o el lenguaje convirtió antes tus operandos en un entero de 32 bits con signo. JavaScript especifica justo eso: sus operadores de bits aplican la operación abstracta ToInt32, así que 0xFFFFFFFF pasa a ser -1 antes incluso de ejecutar el AND. Esta calculadora trabaja sobre patrones sin signo en el ancho que elijas, e indica la lectura con signo aparte en vez de ponerla en lugar de la respuesta.
Haz un AND con una máscara que tenga unos donde quieras conservar bits y ceros donde quieras descartarlos. DEADBEEF AND FFFF0000 es DEAD0000, que conserva los dos bytes altos. Para bajar el campo extraído hasta el final de la palabra, desplázalo a la derecha tantos bits como hayas enmascarado.
Es la forma en que se guardan los enteros negativos. Con un ancho dado, un valor negativo se representa con el patrón que resulta de restarlo a dos elevado a ese ancho, así que el -5 en ocho bits es FB y en dieciséis bits es FFFB. El ancho forma parte de la respuesta: sin él, un número negativo no tiene ningún patrón de bits.
El lógico introduce ceros por arriba; el aritmético copia el bit de signo, de modo que un número negativo sigue siendo negativo. Esta calculadora trata sus operandos como patrones sin signo, así que su desplazamiento a la derecha es lógico. En C la diferencia depende del tipo del operando, y en JavaScript los dos operadores se escriben distinto.
La mitad de bytes que dígitos tiene, porque cada dígito son cuatro bits. Ocho dígitos son cuatro bytes y treinta y dos dígitos son dieciséis bytes. Un número impar de dígitos significa que el valor se escribió sin el cero inicial, y casi todos los analizadores lo rellenan por la izquierda.
Un patrón de relleno que los depuradores y los asignadores de memoria escriben en las zonas que aún no deberían leerse, para que un error salte como un valor evidentemente absurdo y no como un dato verosímil. Son 3735928559 en decimal. CAFEBABE, que abre todo archivo .class de Java compilado, viene de la misma costumbre de elegir palabras que puedan escribirse con dígitos hexadecimales.
Solo con BigInt. Un número normal es un doble, exacto hasta 2⁵³, así que parseInt sobre una cadena hexadecimal de dieciséis dígitos pierde los dígitos bajos, y los operadores de bits se quedan en 32 bits de todos modos. Por eso los mismos dos defectos aparecen a la vez en tantas herramientas hexadecimales del navegador.
Esa es otra operación: cada byte se consulta como un código de carácter en lugar de leerse como parte de un único número grande. 48656C6C6F no es una cantidad, son los cinco bytes ASCII que deletrean Hello. Usa el conversor ASCII para ese trabajo; esta página trata una cadena hexadecimal como un solo valor.