Desarrollo

Binario, hexadecimal y decimal: el mismo número escrito de tres formas

La base solo decide cómo se escribe una cantidad. Cuál conviene usar depende de si la lee una persona o un circuito.

Binario, hexadecimal y decimal son tres maneras de escribir el mismo número. La base es simplemente cuántos dígitos tiene el sistema antes de agotarlos y abrir una columna nueva: dos en binario, diez en decimal, dieciséis en hex. 11111111, 255 y FF son una sola cantidad escrita de tres formas. En decimal cuenta la gente, el binario es lo que el hardware guarda físicamente, y el hex existe porque un dígito hexadecimal equivale exactamente a cuatro dígitos binarios: es binario que puedes leer sin perder el hilo.

Qué significa la base de un número

Una base es la cantidad de símbolos disponibles para los dígitos. El decimal tiene diez, de 0 a 9. El binario tiene dos, así que los agota enseguida y las columnas se acumulan rápido. El hex necesita dieciséis símbolos y, como solo heredamos diez, se reclutaron las letras A a F para representar del 10 al 15.

Cada columna vale la base por la columna que tiene a su derecha. El 507 decimal es 5×100 más 0×10 más 7×1. El 101 binario es 1×4 más 0×2 más 1×1, es decir, cinco. El 1F4 hexadecimal es 1×256 más 15×16 más 4×1, es decir, quinientos. La cantidad nunca se mueve. Lo único que cambia es la notación, y por eso “convertir a binario” es una expresión algo engañosa: no se intercambia nada, como pasaría con una moneda. Estás reescribiendo un número que ya estaba ahí.

Los tres son sistemas posicionales, y un sistema posicional necesita un cero para marcar una columna vacía. Eso es justo lo que los números romanos nunca tuvieron: sin valor posicional no hay columna vacía, y sin columna vacía no hace falta un símbolo que signifique ninguno.

Por qué las computadoras usan binario

Porque dos estados son lo más fácil de construir y lo más difícil de malinterpretar. Un cable está por encima de un umbral de voltaje o por debajo; una celda de memoria está cargada o no lo está. La distancia entre ambos es amplia, así que el ruido tiene que ser enorme para que un 0 parezca un 1. Meter diez niveles en un solo cable exigiría nueve umbrales, y cada umbral es un lugar más donde equivocarse.

Sí se usan más de dos niveles donde la densidad compensa la molestia. Una celda de memoria flash guarda varios bits manteniendo uno de muchos niveles de carga, y la Ethernet gigabit sobre cobre envía cinco niveles de voltaje por símbolo. Pero eso es señalización y almacenamiento. La lógica que hace la aritmética sigue siendo binaria.

Se intentó de la otra manera. La ENIAC contaba en decimal con contadores de anillo de diez posiciones cada uno, y la IBM 650 y la 1620 también eran máquinas decimales. El decimal tampoco desapareció después: los procesadores mainframe y POWER de IBM implementan punto flotante decimal en hardware, porque las fracciones binarias no pueden representar 0,01 de forma exacta y eso importa cuando los números son montos de dinero. Lo que cambió son los cimientos. Todo lo que está por encima del silicio —tus enteros, tu texto, tus JPEG— es una convención montada sobre interruptores que solo saben de encendido y apagado.

Bits, bytes y por qué el 255 aparece en todas partes

Un dígito binario es un bit. Ocho bits son un byte, y ocho bits tienen dos elevado a ocho, o sea 256, combinaciones posibles: del 0 al 255. Ese único dato explica una enormidad de trivialidades que de otro modo parecerían arbitrarias. Un canal de color de 8 bits va de 0 a 255. Cada parte de una dirección IPv4 va de 0 a 255. Un sinfín de límites de “longitud máxima” en formatos de archivo antiguos está en 255 porque la longitud se guardaba en un solo byte.

Por qué existe el hex en lugar de usar binario a secas

Dieciséis es dos elevado a cuatro, así que un dígito hexadecimal cubre exactamente cuatro bits y nunca queda a caballo entre dos grupos. Pasar de uno a otro es consultar una tabla, no hacer cuentas: cambias cada grupo de cuatro bits por un solo carácter y listo. Esa es la única razón por la que el hex se impuso.

El ahorro es real. Un valor de 32 bits son 32 caracteres en binario u 8 caracteres en hex. Lee 11011110101011011011111011101111 en voz alta y pierdes el hilo; DEADBEEF lo lees una vez y se te queda.

BinarioHexDecimal
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
1010A10
1011B11
1100C12
1101D13
1110E14
1111F15

Esas dieciséis filas son todo el hex que hay. Apréndelas y un dump de memoria se vuelve legible.

Cómo convertir entre ellos a mano

De binario a hex, y al revés

Divide los bits en grupos de cuatro empezando por la derecha, rellena con ceros el grupo más a la izquierda y sustituye cada grupo por su dígito hexadecimal. 110110101 queda como 0001 1011 0101, que en la tabla se lee 1B5. En sentido contrario, expande cada dígito hexadecimal en sus cuatro bits y quita los ceros iniciales.

Empezar por la derecha importa. Agrupa 110110101 desde la izquierda y obtienes DA1, que parece un número hexadecimal perfectamente normal y no es el que pediste.

De decimal a binario

Esta es la dirección incómoda, porque el diez no tiene una relación limpia con el dos. Funcionan dos métodos. Divide repetidamente entre dos y anota los restos, y luego léelos de abajo arriba. O resta repetidamente la mayor potencia de dos que quepa y marca un 1 en cada columna que hayas usado.

Toma el 200. Contiene 128, y quedan 72. Contiene 64, y quedan 8. Contiene 8, y no queda nada. Las columnas 128, 64 y 8 están a uno y el resto a cero, así que 200 es 11001000 —y agrupado de cuatro en cuatro, 1100 1000, que es C8 en hex.

Hacerlo a mano es una buena forma de entender el mecanismo y una forma lenta de sacar trabajo adelante. Escribir el número en un conversor que muestra las cuatro bases a la vez es más rápido, y no redondea a escondidas: usa enteros de precisión arbitraria, así que un valor de 200 dígitos vuelve con todos sus dígitos intactos. Eso sí, solo admite enteros. No convierte 3.75, y se detiene en la base 36 porque no hay un alfabeto acordado más allá de la z.

Dónde aparece cada base en la práctica

El binario en sí casi nunca lo escribes. Aparece cuando cada bit tiene un significado propio: flags de permisos, máscaras de subred, registros de hardware, un bitfield en la cabecera de un protocolo.

¿Por qué sigue existiendo el octal?

Porque ocho es dos al cubo, así que un dígito octal equivale exactamente a tres bits, y los permisos de Unix vienen en grupos de tres. En chmod 755, el 7 es 111: lectura, escritura, ejecución. El 5 es 101: lectura y ejecución, sin escritura. Una vez que ves los bits, 644 y 755 dejan de parecer números mágicos.

Fuera de ese rincón es un residuo. Las máquinas que hicieron normal el octal empaquetaban el texto en caracteres de seis bits, y seis bits son dos dígitos octales exactos frente a un incómodo dígito hexadecimal y medio. La palabra de la IBM 7090 era de 36 bits; la de la PDP-8, de 12. El hex se impuso cuando lo hizo el byte de ocho bits, porque un byte son dos dígitos hexadecimales exactos.

Qué sale mal cuando se mezclan las bases

Un cero a la izquierda puede significar octal. En C, y en JavaScript fuera del modo estricto, 011 es nueve, no once. Python 3 rechaza esa forma y te obliga a escribir 0o11. Los números rellenados con ceros que se pegan desde una hoja de cálculo caen en esto constantemente.

Los enteros grandes pierden dígitos en silencio. Los números de JavaScript son doubles, exactos solo hasta dos elevado a 53: 9007199254740992. Por encima de ahí, parseInt y toString(16) devuelven el valor representable más cercano, sin error y sin aviso. Si estás convirtiendo un snowflake ID o un hash, necesitas aritmética con BigInt o estarás convirtiendo un número parecido al tuyo en vez del tuyo.

El hex por sí solo no te dice el signo. En 8 bits, FF es 255 sin signo y −1 con signo, y los bits son idénticos en ambos casos. El complemento a dos guarda un negativo dando la vuelta al ancho del dato, que es también la razón por la que un byte con signo va de −128 a 127 y no de −128 a 128: el cero ocupa una de las posiciones positivas.

Base64 no es base 64. Es una codificación de texto que corta un flujo de bytes en grupos de seis bits y asigna a cada uno un carácter imprimible. Nunca trata la entrada como un número, así que un conversor de bases no puede producirlo y un decodificador Base64 es una herramienta distinta que resuelve un problema distinto.

Entonces, ¿cuál deberías usar?

Decimal cuando una persona lee una cantidad: precios, recuentos, duraciones. Hex cuando el valor es en realidad un montón de bits y quieres verlos: bytes, direcciones, colores, cualquier cosa volcada desde la memoria. Binario cuando cada bit tiene un significado propio y necesitas comprobar uno en concreto.

Y etiquétalo siempre. 0x para hex, 0b para binario, 0o para octal, en todos los lenguajes que lo acepten. 10 escrito sin prefijo podría ser dos, ocho, diez o dieciséis, y la diferencia se descubre más tarde, la descubre otra persona, y en producción.

El conversor de bases numéricas de aquí hace las cuatro bases a la vez mientras escribes, muestra el número de bits y de bytes, y mantiene la forma en complemento a dos a 8, 16, 32 y 64 bits en un panel debajo, que suele ser la parte por la que viniste cuando un valor se lee como negativo y no ves por qué. Admite solo enteros, de cualquier longitud.

La otra mitad de leer datos en crudo es saber qué representan los bytes. La codificación de URL es el caso cotidiano: en cuanto sabes leer dos dígitos hexadecimales, un enlace lleno de signos de porcentaje vuelve a ser texto normal.

Preguntas frecuentes

¿Cuál es la diferencia entre binario, hexadecimal y decimal?

Son los mismos números escritos con distinta cantidad de dígitos: dos en binario, diez en decimal y dieciséis en hexadecimal. 11111111, 255 y FF significan una sola cantidad. La base cambia la notación, nunca el valor.

¿Por qué los programadores usan hexadecimal en lugar de binario?

Porque 16 es 2 elevado a 4, así que un dígito hexadecimal equivale exactamente a cuatro bits y la conversión es consultar una tabla en vez de hacer cuentas. Un valor de 32 bits ocupa 32 caracteres en binario y solo 8 en hexadecimal. Es la misma información, cuatro veces más corta y mucho más fácil de leer en voz alta.

¿Cómo convierto binario a hexadecimal rápidamente?

Agrupa los bits de cuatro en cuatro empezando por la derecha, rellena con ceros el grupo más a la izquierda y cambia cada grupo por su dígito hexadecimal. 110110101 queda como 0001 1011 0101, que es 1B5. Agrupar desde la izquierda en vez de la derecha da un resultado equivocado.

¿El hexadecimal es más rápido para una computadora que el decimal?

No. El hardware trabaja en binario sin importar cómo hayas escrito el número, y la notación se descarta en cuanto se parsea el valor. El hexadecimal es una comodidad para quien lee el código, no una decisión de rendimiento.

¿Qué significa 0x delante de un número?

Marca los dígitos que siguen como hexadecimales. 0x10 es dieciséis, no diez, y 0x1F es 31. La misma convención da 0b para binario y 0o para octal. Sin prefijo, una secuencia de dígitos es ambigua, y un cero inicial por sí solo significa octal en varios lenguajes.

¿Por qué 255 es un límite tan común?

Porque es el número más grande que cabe en un byte: ocho bits dan 256 combinaciones, contadas desde 0. Los canales de color, las partes de una dirección IPv4 y un montón de límites de formatos de archivo antiguos se detienen ahí por esa razón.

Última actualización 19 de septiembre de 2026