«Hay 10 tipos de personas…»
…las que entienden binario y las que no. El chiste funciona porque «10» no siempre significa diez: en base 2 vale dos, en base 8 vale ocho y en base 16, dieciséis. La base de un sistema numérico es cuántos símbolos usa y, sobre todo, cuánto vale cada posición: en decimal cada cifra multiplica por una potencia de 10; en binario, por una potencia de 2. Los ordenadores funcionan con dos estados eléctricos —apagado y encendido—, así que todo lo que procesan acaba escrito con ceros y unos. El octal y el hexadecimal existen para que las personas podamos leer ese binario sin dejarnos la vista.
De decimal a binario: las divisiones sucesivas
El método clásico para pasar un número a otra base es dividir una y otra vez entre la base de destino apuntando los restos. Convirtamos 173 a binario:
- 173 ÷ 2 = 86, resto 1
- 86 ÷ 2 = 43, resto 0
- 43 ÷ 2 = 21, resto 1
- 21 ÷ 2 = 10, resto 1
- 10 ÷ 2 = 5, resto 0
- 5 ÷ 2 = 2, resto 1
- 2 ÷ 2 = 1, resto 0
- 1 ÷ 2 = 0, resto 1
Se leen los restos del último al primero: 10101101. La comprobación inversa es sumar las potencias de 2 donde hay un 1: 128 + 32 + 8 + 4 + 1 = 173. El mismo procedimiento sirve para cualquier base: dividiendo entre 8 obtienes el octal y entre 16, el hexadecimal.
Dónde te cruzas con cada base
Permisos de Unix y Linux (octal)
En una orden como chmod 755, cada dígito octal condensa tres bits: leer, escribir y ejecutar. El 7 es 111 (todo permitido) y el 5 es 101 (leer y ejecutar, sin escribir). Tres cifras describen los permisos del propietario, del grupo y del resto de usuarios.
Colores web (hexadecimal)
Un color como #ff6600 son tres bytes en hexadecimal: ff de rojo (255), 66 de verde (102) y 00 de azul. Si quieres ir más allá de los números, el conversor de color traduce entre HEX, RGB y HSL.
Direcciones de memoria y huellas digitales
Los depuradores muestran las direcciones de memoria en hexadecimal, las tarjetas de red se identifican con una MAC de seis pares hexadecimales y las huellas que produce un generador de hash se escriben también en base 16: es la manera más compacta de mostrar bits en bruto.
El puente de los 4 bits
La razón de tanto hexadecimal es aritmética: como 16 = 2⁴, cada dígito hexadecimal equivale exactamente a cuatro bits, y un byte completo cabe en dos caracteres. El 10101101 de antes se trocea en 1010 y 1101, es decir, A y D: 173 en decimal es AD en hexadecimal. Con el octal pasa lo mismo agrupando de tres en tres desde la derecha (10·101·101 → 255). Por eso los programadores tratan el hexadecimal como un «binario abreviado»: se convierte de cabeza, sin calculadora.
Exactitud garantizada
Este conversor opera con BigInt, la aritmética de enteros arbitrarios de JavaScript, de modo que el resultado es exacto aunque pegues un número de cientos de dígitos. Si te interesa cómo se representan los datos, sigue con texto a binario, con los números romanos —otra forma histórica de escribir cantidades— o con el conversor de timestamp. Tienes el catálogo completo en herramientas.