¿Alguna vez te has sentido limitado para formar números con sólo 10 cifras numéricas? ¿O has querido representar números grandes con menos dígitos? ¿O identificar fácilmente los valores de los bytes sin tener que mirar la hipnótica cadena de 1 y 0 de un binario? Para este tipo de aplicaciones, el hexadecimal suele ser el sistema numérico elegido por los ingenieros.

El hexadecimal -también conocido como hex o base 16- es un sistema que podemos utilizar para escribir y compartir valores numéricos. En ese sentido, no es diferente del más famoso de los sistemas numéricos (el que usamos todos los días): el decimal. El decimal es un sistema numérico de base 10 (perfecto para seres con 10 dedos), y utiliza una colección de 10 dígitos únicos, que pueden combinarse para representar números.
El hexadecimal, al igual que el decimal, combina un conjunto de dígitos para crear números grandes. Sucede que el hexadecimal utiliza un conjunto de 16 dígitos únicos, utiliza el estándar 0-9, pero también incorpora seis dígitos adionales que denotaremos con las letras: A, B, C, D, E y F.
Hay muchos (¡infinitos!) otros sistemas numéricos. El binario (base 2) también es popular en el mundo de la ingeniería, porque es el lenguaje de los ordenadores. El sistema de base 2, binario, utiliza sólo dos dígitos (0 y 1) para representar los números.
El hexadecimal, junto con el decimal y el binario, es uno de los sistemas numéricos más comunes en el mundo de la electrónica y la programación. Es importante entender cómo funciona el hexadecimal, porque, en muchos casos, tiene más sentido representar un número en base 16 que con binario o decimal.
En este tutorial
Este tutorial cubre todo lo relacionado con los números hexadecimales que puedes encontrar en la electrónica o la programación. Está dividido en las siguientes secciones:
- Fundamentos de Hex — Una visión general del hexadecimal. Esta página cubre los 16 dígitos del número, cómo representamos los números hexadecimales, y cómo contar en hexadecimal.
- Conversión a/desde decimal — Esta página cubre nuestros métodos preferidos de conversión entre hex y decimal.
- Convertir a/desde binario — Esta página muestra cómo se puede convertir entre binario y hexadecimal.
- Calculadoras de conversión — Aquí encontrarás una calculadora sencilla y automática para cambiar entre hex, binario y decimal.
Lecturas recomendadas
Deberías saber un par de cosas sobre los números decimales antes de adentrarte en este tutorial. ¿Recuerdas la división larga? ¿Los restos? ¿Los cocientes? ¿Productos? ¿Suma? ¿Exponentes? Todo eso te vendrá a la cabeza cuando aprendas sobre el hexadecimal y su relación con el decimal.
Te recomendamos leer el siguiente tutorial antes de continuar para entender el sistema de números binario
Conceptos básicos de hexadecimal
Esta sección cubre los fundamentos del hexadecimal, incluyendo una visión general de los dígitos que usamos para representar números hexadecimales y las herramientas que usamos para indicar que un número es un valor hexadecimal. También cubrimos una conversión “decimal-a-hex” muy simple en forma de conteo hexadecimal.
Los dígitos: 0-9 y A-F
El hexadecimal es un sistema numérico de base-16. Esto significa que hay 16 dígitos posibles para representar números. 10 de los valores numéricos que probablemente estés acostumbrado a ver en números decimales: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9; esos valores siguen representando el mismo valor al que estás acostumbrado. Los seis dígitos restantes están representados por A, B, C, D, E y F, que corresponden a los valores 10, 11, 12, 13, 14 y 15.

Probablemente encontrarás representaciones de la A-F tanto en mayúsculas como en minúsculas. Ambas funcionan. No hay mucha norma en cuanto a mayúsculas y minúsculas. A3F es el mismo número que a3f es el mismo número que A3f.
Subíndices
El decimal y el hexadecimal tienen 10 dígitos en común, por lo que pueden crear muchos números de aspecto similar. Pero el 10 en hexadecimal es un número totalmente diferente al de decimal. De hecho, el 10 hexadecimal es equivalente al 16 decimal. Necesitamos una forma de indicar explícitamente si un número del que estamos hablando es de base 10 o de base 16 (o de base 8, o de base 2). Introduce los subíndices de base:

Como verás más adelante, los subíndices no son la única forma de indicar explícitamente la base de un número. Los subíndices son sólo el sistema más literal que podemos utilizar.
Contar en hexadecimal
Contar en hexadecimal es muy parecido a contar en decimal, excepto que hay seis dígitos más con los que lidiar. Una vez que el lugar de un dígito es mayor que “F”, se pasa ese lugar a “0” y se incrementa el dígito de la izquierda en 1.
Vamos a contar un poco:
Decimal | Hexadecimal | … | Decimal | Hexadecimal |
0 | 0 | 8 | 8 | |
1 | 1 | 9 | 9 | |
2 | 2 | 10 | A | |
3 | 3 | 11 | B | |
4 | 4 | 12 | C | |
5 | 5 | 13 | D | |
6 | 6 | 14 | E | |
7 | 7 | 15 | F |
Una vez que hayas llegado a F16, al igual que rodaría de 910 a 1010 en decimal, rodará hasta 1016
Decimal | Hexadecimal | … | Decimal | Hexadecimal |
16 | 10 | 24 | 18 | |
17 | 11 | 25 | 19 | |
18 | 12 | 26 | 1A | |
19 | 13 | 27 | 1B | |
20 | 14 | 28 | 1C | |
21 | 15 | 29 | 1D | |
22 | 16 | 30 | 1E | |
23 | 17 | 31 | 1F |
Y una vez que hayas llegado a 1F16, pasa a 2016 y sigue batiendo el dígito más a la derecha de 0 a F.
Identificadores hexadecimales
Para evitar situaciones confusas, normalmente verás un número hexadecimal precedido (o sufijado) por uno de estos identificadores:
Identifier | Example | Notes |
0x | 0x47DE | Este prefijo aparece mucho en UNIX y en los lenguajes de programación basados en C (¡como Arduino!) |
# | #FF7734 | Referencias de color en programas de edición de imágenes y HTML. |
% | %20 | A menudo se utiliza en las URL para expresar caracteres como “Espacio” (%20). |
\x | \x0A | A menudo se utiliza para expresar códigos de control de caracteres como “Retroceso” (\x08), “Escape” (\x1B) y “Avance de línea” (\x0A). |
&#x | Ω | Se utiliza en HTML, XML y XHTML para expresar caracteres unicode (por ejemplo, Ω imprime una Ω). |
0h | 0h5E | Prefijo utilizado por muchas calculadoras gráficas programables (por ejemplo, TI-89). |
Numera/Texto Subscript | BE3716, 13Fhex | Se trata más bien de una representación matemática de los números de base 16. Los números decimales se pueden representar con un subíndice 10 (base 10). El binario es de base 2. |
Hay una variedad de otros prefijos y sufijos que son específicos de ciertos lenguajes de programación. Los lenguajes ensambladores, por ejemplo, pueden utilizar un sufijo “H” o “h” (por ejemplo, 7Fh) o un prefijo “$” ($6AD). Consulta los ejemplos si no estás seguro de qué prefijo o sufijo debes utilizar con tu lenguaje de programación.
El prefijo “0x” es uno de los que verás a menudo, especialmente si estás haciendo alguna programación en Arduino. Lo usaremos a partir de ahora en este tutorial.
En resumen: ¿DECAF? Una horrible abominación de café. ¿0xDECAF? Un número hexadecimal de 5 dígitos perfectamente aceptable.
Convertir a/desde Decimal
A estas alturas, ya sabemos cómo convertir unos 16 valores entre decimal y hexadecimal. Para convertir números más grandes, aquí hay algunos trucos que utilizamos.
Conversión de decimal a hexadecimal
La conversión de decimal a hexadecimal implica un montón de divisiones y residuos. Si has eliminado la división larga de tu cerebro, wikipedia siempre estará ahí para ayudarte a repasar.
Los pasos para convertir un número, llamémoslo N, de decimal a hexadecimal son los siguientes
- Dividir N entre 16. El resto de esa división es el primer dígito (el menos significativo/más a la derecha) de tu número hexadecimal. Lleva el cociente (el resultado de la división) al siguiente paso. Nota: si el resto es 10, 11, 12, 13, 14 o 15, entonces se convierte en el dígito hexadecimal A, B, C, D, E o F.
- Divide de nuevo el cociente del último paso entre 16. El resto de esta división es el segundo dígito de su valor hexadecimal (el segundo por la derecha). Lleva el cociente de esta división al siguiente paso.
- Divide el cociente del paso 2 entre 16 de nuevo. El resto de esta división es el tercer dígito de su conversión hexadecimal. ¿Notas un patrón?
- Sigue dividiendo tu cociente del último paso entre 16, y almacenando el resto hasta que el resultado de la división sea 0. El resto de esa división es el dígito más significativo de la izquierda de tu valor hexadecimal.
Ejemplo de conversión de decimal a hexadecimal: Convertir 61453
Basta de hablar de matemáticas, vamos a trabajar con un ejemplo. Convirtamos 6145310 a hexadecimal:
- Divida 61453 entre 16. El resultado es un cociente de 3840, y un resto de 13. Ese resto se convierte en nuestro primer dígito hexadecimal, el más a la derecha, el menos significativo: D. Lleva 3840 al siguiente paso.

- Ahora divide 3840 entre 16. El cociente resultante es 240 con un resto de 0. Nuestro segundo dígito hexadecimal es 0, y llevamos 240 al siguiente dígito.

- Divide 240 entre 16, y obtendrás 15 con otro resto 0. Nuestro tercer dígito hexadecimal es 0, y lleva 15 al paso 4.

- Por último, divide 15 entre 16. Eso producirá el cociente 0 que hemos estado esperando, con un resto de 15. Ese resto significa que el dígito hexadecimal para esta posición es F.

Finalmente, combina los cuatro dígitos hexadecimales para crear nuestro valor hexadecimal: 0xF00D.
Conversión de hexadecimal a decimal
Hay una fea ecuación que rige la conversión de hex a decimal:

Hay algunos elementos importantes en esta ecuación. Cada uno de los factores h (hn, hn-1) es un solo dígito del valor hexadecimal. Si nuestro valor hexadecimal es 0xF00D, por ejemplo, h0 es D, h1 y h2 son 0, y h3 es F.
Las potencias de 16 son una parte fundamental del hexadecimal. Los dígitos más significativos (los que están hacia la izquierda del número) se multiplican por potencias de 16 más grandes. El dígito menos significativo, h0, se multiplica por 160 (1). Si un valor hexadecimal tiene cuatro dígitos, el dígito más significativo se multiplica por 163, es decir, por 4096.
Para convertir un número hexadecimal en decimal, hay que introducir los valores de cada uno de los factores h en la ecuación anterior. A continuación, multiplica cada dígito por su respectiva potencia de 16 y suma cada producto. Nuestro enfoque paso a paso es:
- Empieza con el dígito más a la derecha de tu valor hexadecimal. Multiplícalo por 160, es decir: multiplica por 1. En otras palabras, déjalo, pero mantén ese valor a un lado.
- Recuerda convertir los valores hexadecimales alfabéticos (A, B, C, D, E y F) a su equivalente decimal (10, 11, 12, 13, 14 y 15).
- Mueve un dígito a la izquierda. Multiplica ese dígito por 161 (es decir, multiplica por 16). Recuerda ese producto y mantenlo a un lado.
- Mueve otro dígito a la izquierda. Multiplica ese dígito por 162 (256) y guarda ese producto.
- Continúa multiplicando cada dígito incremental del valor hexadecimal por potencias crecientes de 16 (4096, 65536, 1048576, …), y recuerda cada producto.
- Una vez que hayas multiplicado cada dígito del valor hexadecimal por la potencia de 16 adecuada, súmalos todos. Esa suma es el equivalente decimal de tu valor hexadecimal.
Ejemplo de conversión de hex a decimal: Convertir 0xC0DE
Aquí hay un ejemplo de un valor hexadecimal de cuatro dígitos, 0xC0DE, que queremos convertir a decimal. Crear una tabla y ordenar los dígitos en columnas separadas puede facilitar el proceso de conversión:
Notas | |||||
Posición digital(n) | 3 | 2 | 1 | 0 | Estos valores se asignan estáticamente, crecen hacia la izquierda. |
Digitos Hex ordenados | C | 0 | D | E | Esta parte es fácil, introduce tus valores hexagonales de derecha a izquierda. |
Convertir A-F | 12 | 0 | 13 | 14 | Convertir los valores hexadecimales A-F en 10-15. |
Mutiplica por 16n | 12 × 163 | 0 × 162 | 13 × 161 | 14 × 160 | El exponente de 16 es la posición, n. |
Resultados | 49152 | 0 | 208 | 14 | El producto de un dígito hexadecimal por la potencia de 16. |
Suma de todos los productos | 49374 | Nuestro equivalente decimal. |
Ahí lo tienes. C0DE16 = 4937410
Este método de tabla es perfecto para mantener todos los dígitos hexadecimales, posiciones y potencias de 16 en línea. Para convertir números hexadecimales más grandes, sólo tienes que añadir una columna a la izquierda y aumentar n.
Ahora que sabes cómo hacerlo a mano, ahórrate un poco de tiempo y utiliza una calculadora.

Conversión a/de binario
¡Respira tranquilo! Ya nos hemos quitado de encima las conversiones difíciles. En la ingeniería eléctrica e informática utilizamos el hexadecimal porque es increíblemente fácil de convertir a y desde el binario, el lenguaje de 1 y 0 de los ordenadores.
Convertir entre hexadecimal y binario es fácil, porque cada dígito de un número hexadecimal se “asigna” a cuatro bits (un bit es un dígito binario individual) de un valor binario. Así, un byte -ocho dígitos binarios- siempre puede representarse con dos dígitos hexadecimales. Esto hace que el hexadecimal sea una forma realmente genial y concisa de representar un byte o un grupo de bytes.
Conversión de binario a hexadecimal
Comencemos por mapear los primeros 16 valores hexadecimales a binarios.
Decimal | Hex | Binary | … | Decimal | Hex | Binary |
00 | 0 | 0000 | 08 | 8 | 1000 | |
01 | 1 | 0001 | 09 | 9 | 1001 | |
02 | 2 | 0010 | 10 | A | 1010 | |
03 | 3 | 0011 | 11 | B | 1011 | |
04 | 4 | 0100 | 12 | C | 1100 | |
05 | 5 | 0101 | 13 | D | 1101 | |
06 | 6 | 0110 | 14 | E | 1110 | |
07 | 7 | 0111 | 15 | F | 1111 |
A medida que crezcas y sigas utilizando el hexadecimal y el binario, estos 16 valores se arraigarán en tu cerebro. Son la clave para convertir entre hex y binario.
Para convertir entre binario y hexadecimal, queremos aprovechar el hecho de que cuatro dígitos binarios (bits) se corresponden con un dígito hexadecimal. Sigue estos pasos para convertir de binario a hexadecimal.
- Divida un valor binario en grupos de cuatro, empezando por el lado derecho.
- Para cada grupo de cuatro, consulta la tabla anterior para encontrar el valor hexadecimal correspondiente y sustituye los grupos de cuatro dígitos binarios por el valor hexadecimal.
Ya está. Vamos a probarlo.
Ejemplo de conversión de binario a hexadecimal: Convertir 0b101111010100001
Para empezar, comience por el extremo derecho del número binario, y ordene los 1’s y 0’s en grupos de cuatro:

Ahora consulte nuestra tabla de dieciséis para convertir los grupos de cuatro a un dígito hexadecimal

¡Y ahí lo tienes! 0b101111010100001 = 0x5EA1.
Convertir de hexadecimal a binario
Convertir de hex a binario es muy parecido a convertir binario a hex. Simplemente toma un dígito hexadecimal y conviértelo en cuatro dígitos binarios. Repítelo hasta que tu número esté lleno de 0’s y 1’s.
Ejemplo de conversión de hex a binario: Convertir 0xDEADBEEF
Para convertir 0xDEADBEEF (un código comúnmente utilizado para indicar un fallo del sistema), comience por ordenar los dígitos en “bins”:

A continuación, convierte cada dígito hexadecimal en cuatro bits:

En otras palabras, 0xDEADBEEF = 0b11011110101101101111101111. Eso es un montón de 1’s y 0’s.
Usar Hex para representar e identificar bytes
Los ejemplos anteriores muestran uno de los mayores poderes del hexadecimal: representar fácilmente los valores de los bytes. El hexadecimal es a menudo más fácil de trabajar porque los valores son más cortos y más memorables que una larga cadena de 1’s y 0’s.

Por ejemplo, el mapa de registros de arriba es del LSM9DS0 (un ingenioso sensor de 9DOF). Enumera las direcciones de los registros, que se utilizan para controlar el sensor, tanto en hexadecimal como en binario. Si quieres acceder al registro CTRL_REG2_G, es mucho más fácil recordar 0x21 que 0b010001, y descubrir un error en el valor hexadecimal es mucho más fácil que en binario. Por esta razón, es mucho más probable que utilicemos valores hexadecimales en nuestro código que sus equivalentes binarios.
Recursos y donde continuar
Entender cómo funciona el hexadecimal es clave para muchas áreas de la electrónica y la programación.
Armado con tu nuevo y brillante conocimiento hexadecimal, aquí hay algunos tutoriales relacionados que puedes querer revisar desde aquí:
Lógica digital y registros de desplazamiento — Estos tutoriales utilizan el hexadecimal como base para conceptos electrónicos más amplios y generales. La lógica digital es el núcleo detrás de toda la toma de decisiones de un ordenador. Los registros de desplazamiento se pueden utilizar para ventilar una sola entrada o salida a 8 o más.
I2C y SPI — Estas interfaces de comunicación casi siempre requieren el uso de hexadecimales de una forma u otra. Los dispositivos que se comunican por SPI o I2C normalmente tienen una lista de registros, que están todos mapeados con direcciones hexadecimales. A los dispositivos I2C se les asignan direcciones únicas de 7 bits, que normalmente se presentan en hexadecimal.