Desarrolladores

Cómo Convertir Números Entre Bases (Binario, Octal, Decimal y Hex)

9 min de lectura

Para convertir un número decimal a otra base, se divide reiteradamente entre esa base y se anotan los restos: leídos de abajo hacia arriba, esos restos forman el número en la base nueva. El decimal 202, por ejemplo, es 11001010 en binario, 312 en octal y CA en hexadecimal. El proceso inverso, de vuelta a decimal, se resuelve multiplicando cada dígito por la potencia de la base que le corresponde según su posición.

Qué significa realmente una base numérica

Una base numérica, o radix, define cuántos dígitos únicos usa un sistema de numeración posicional antes de tener que “llevar” a la siguiente columna. El sistema decimal, base 10, usa diez dígitos (0 al 9). El binario, base 2, usa solo dos (0 y 1). El octal, base 8, usa ocho (0 al 7). El hexadecimal, base 16, necesita dieciséis símbolos, así que toma prestadas las letras A a F para representar los valores 10 a 15.

Lo que hace que estos sistemas sean comparables es la notación posicional: cada posición de un dígito vale una potencia de la base, y el valor total del número es la suma de cada dígito multiplicado por el peso de su posición. En el decimal 202, el dígito 2 de la izquierda está en la posición de las centenas, así que vale 2 × 10² = 200. Esa misma lógica, cambiando el 10 por el 2, el 8 o el 16, es la que hace funcionar cualquier conversión entre bases.

Convertir decimal a binario, octal y hexadecimal a mano

Tomemos el decimal 202 como ejemplo de referencia. Hay dos maneras de convertirlo, y vale la pena conocer ambas porque cada una se adapta mejor a una base distinta.

Método de resta por valor posicional (ideal para binario). Se busca la mayor potencia de 2 que quepa en el número, se resta, y se repite con lo que queda hasta llegar a cero. Cada potencia que se usó marca un bit en 1; las que no, un bit en 0.

Potencia de 2¿Cabe en el resto?Resto tras restarBit
128Sí (202 ≥ 128)741
64Sí (74 ≥ 64)101
32No100
16No100
8Sí (10 ≥ 8)21
4No20
2Sí (2 ≥ 2)01
1No00

Leyendo la columna de bits de arriba hacia abajo se obtiene 11001010. Se puede comprobar sumando las potencias marcadas con 1: 128 + 64 + 8 + 2 = 202, exactamente el número de partida.

Método de división y resto (funciona para cualquier base, incluida octal y hex). Se divide el número entre la base destino, se guarda el resto, y se sigue dividiendo el cociente hasta llegar a 0. Los restos, leídos de abajo hacia arriba, son el número convertido.

Para octal (base 8):

DivisiónCocienteResto
202 ÷ 8252
25 ÷ 831
3 ÷ 803

Leyendo los restos de abajo hacia arriba: 312. Ese es 202 en octal.

Para hexadecimal (base 16):

DivisiónCocienteResto
202 ÷ 161210 (A)
12 ÷ 16012 (C)

Los restos, leídos de abajo hacia arriba, son C y A, es decir CA. Nótese que un resto de 10 se escribe como la letra A y uno de 12 como C, siguiendo la misma correspondencia que usa el hexadecimal para los valores del 10 al 15.

Un detalle curioso: cuando el número de partida es una potencia de dos, las tres bases suelen dar resultados “redondos”. El decimal 4096 (que es 2¹²) es 1000000000000 en binario, 10000 en octal y 1000 en hexadecimal. Es un buen número para verificar que se entendió el método, porque el patrón de ceros salta a la vista.

Leer octal y hexadecimal de vuelta a decimal

La conversión inversa, de una base distinta a decimal, se resuelve multiplicando cada dígito por el peso de su posición y sumando. Un caso que cualquier persona que use Linux termina encontrando tarde o temprano es el modo de permisos de un archivo, casi siempre expresado en octal. El valor clásico 755 (el que deja a chmod con lectura, escritura y ejecución para el propietario, y lectura más ejecución para grupo y otros) es un buen ejemplo real, no solo un número inventado para el tutorial.

Para pasar el octal 755 a decimal, cada dígito se multiplica por la potencia de 8 que le toca, empezando por 8⁰ en el dígito más a la derecha:

7 × 8² + 5 × 8¹ + 5 × 8⁰
= 7 × 64 + 5 × 8 + 5 × 1
= 448 + 40 + 5
= 493

Entonces 755 en octal equivale a 493 en decimal. Para llevarlo a binario, existe un atajo que evita repetir todo el método de división: cada dígito octal se traduce directamente a un grupo de exactamente 3 bits, porque 2³ = 8. El dígito 7 es 111, el 5 es 101, así que 755 se agrupa como 111 101 101, o sin espacios, 111101101. Y en hexadecimal, 755 octal es 1ED.

Ese mismo atajo existe para hexadecimal, pero con grupos de 4 bits en vez de 3, porque 2⁴ = 16. Es la razón práctica por la que el hexadecimal es tan común en programación: cada dígito hex representa exactamente un nibble (medio byte), así que un byte completo cabe en solo dos dígitos hex. Direcciones de memoria, códigos de color como #RRGGBB y valores de byte en volcados de depuración casi siempre se muestran en hex por esta compacidad, mientras que el octal, con su agrupación de 3 bits, sigue vivo sobre todo en la notación de permisos de Unix.

Prueba con tus propios números

Escribe cualquier valor en uno de los cuatro campos (decimal, binario, octal o hex) y observa cómo los otros tres se actualizan al instante con el equivalente correcto.

Conversor de Base Numérica
Gratis, sin registro, funciona en cualquier dispositivo.
Abrir la herramienta completa

Errores comunes y casos límite

Confundir signo-magnitud con complemento a dos. Esta herramienta representa los números negativos anteponiendo un signo menos a la magnitud en cada base, no usando complemento a dos. El decimal -18 se convierte en -10010 en binario, -22 en octal y -12 en hex. Quien esté acostumbrado a programar en C o similares puede esperar ver el complemento a dos, donde -18 como entero con signo de 8 bits sería 11101110, un patrón de bits completamente distinto. Ninguno de los dos enfoques es “el correcto” en abstracto (dependen del contexto), pero conviene saber cuál usa la herramienta antes de comparar el resultado con el de un compilador o un depurador.

Asumir que las mayúsculas importan al escribir hex. Al escribir en el campo hexadecimal, tanto a como A son válidas y producen el mismo resultado. La herramienta, eso sí, siempre muestra su salida hexadecimal en mayúsculas, así que no hay que sorprenderse si se escribe en minúscula y el resultado aparece en mayúscula.

Pensar que los ceros a la izquierda cambian el valor. 00202 decimal, 0011001010 binario y 0CA hex representan exactamente el mismo número que sus versiones sin ceros iniciales. Los ceros a la izquierda son puramente cosméticos en cualquier base.

Olvidar el límite práctico para números muy grandes. La herramienta trabaja con números dentro del rango seguro de enteros de JavaScript, hasta aproximadamente 2⁵³ - 1 (unos 9 mil billones). Por debajo de ese límite todo funciona con precisión exacta; por encima, empiezan a aparecer errores de redondeo, así que para cifras astronómicamente grandes hace falta una librería especializada en enteros de precisión arbitraria.

Escribir prefijos de código en los campos. Muchos lenguajes de programación exigen un prefijo para marcar la base de un literal: 0x para hexadecimal, 0b para binario, 0o (o simplemente un 0 inicial en algunos lenguajes antiguos) para octal. Esta herramienta no los espera ni los necesita: cada campo ya sabe qué base representa por su etiqueta, así que hay que escribir solo los dígitos (CA, no 0xCA).

Preguntas frecuentes

¿Qué es una base numérica y por qué existen varias? Una base numérica define cuántos símbolos distintos usa un sistema para representar cantidades antes de necesitar una columna adicional. El decimal (base 10) es un accidente histórico ligado a que tenemos diez dedos; el binario (base 2) es el lenguaje nativo de los circuitos digitales, que solo distinguen dos estados eléctricos; el octal y el hexadecimal son formas compactas de escribir binario agrupando bits de 3 en 3 o de 4 en 4.

¿Por qué el hexadecimal es tan frecuente en programación? Porque cada dígito hexadecimal equivale exactamente a 4 bits (un nibble), y un byte completo (8 bits) cabe en solo dos dígitos hex. Escribir FF en vez de 11111111 ahorra espacio y reduce errores de lectura, por eso aparece en direcciones de memoria, códigos de color web y volcados de depuración.

¿Cómo convierto binario a decimal a mano, paso a paso? Se multiplica cada bit por la potencia de 2 que corresponde a su posición, contando desde la derecha empezando en 2⁰, y se suman los resultados. Para 1101: (1×8) + (1×4) + (0×2) + (1×1) = 8 + 4 + 0 + 1 = 13. Es el mismo principio que se usó arriba con 202, solo que en sentido inverso.

¿Cuál es el número más grande que admite esta herramienta? Trabaja con precisión exacta dentro del rango de enteros seguros de JavaScript, hasta 2⁵³ - 1 (unos 9 mil billones). Números mayores requieren una librería de enteros grandes aparte.

¿Admite números negativos? Sí. Basta con anteponer un signo menos a cualquiera de los cuatro campos, por ejemplo -202, y las otras tres bases muestran el equivalente negativo usando representación de signo-magnitud, no complemento a dos (ver el ejemplo del -18 más arriba).

¿Puedo compartir la herramienta con mis valores ya cargados? Sí. La URL se actualiza automáticamente mientras escribes, así que copiarla desde la barra de direcciones o usar el botón Compartir envía tus valores exactos a quien abra el enlace, listos para usar sin volver a teclear nada.

BinarioHexadecimalSistemas NuméricosProgramación
Conversor de Base Numérica
Ahora pruébalo tú mismo con la herramienta completa.
Probar ahora