# De decimal a hexadecimal

Hay dos formas de convertir de decimal a hexadecimal o hex. Al igual que para el caso binario que ya analizaste, aquí se verán ambas. Una de las formas es un poco más engorrosa, aunque es más clara respecto a lo que se está haciendo. La otra forma, al ser una serie de operaciones, es más directa pero menos clara. Sin embargo, entender la primera forma te permitirá conocer el por qué del algoritmo más directo que te permite cambiar de decimal a hexadecimal.

## Invirtiendo el método para convertir de decimal a hexadecimal

Cuando convertiste de hexadecimal a decimal notaste que hay que hacer una suma de potencias sucesivas de \(16^n\) con \(n\) el índice del dígito empezando a contar en cero de derecha a izquierda. El proceso para pasar de decimal a hexadecimal debe ser justo lo opuesto. En lugar de tomar potencias de 16, ahora debemos fijarnos en qué suma de potencias de 16 (es decir, 16 elevado a qué exponente) mejor representa el número.

Toma como ejemplo el número 196 en decimal. ¿A qué exponente debes elevar 16 para que no rebase el valor de 196, pero que sea el exponente más grande que se le aproxime? \(16^0=1\). \(16^1=16\). \(16^2=256\) y ya rebasamos el valor de 196. Así que el exponente es 1. Siguiendo el proceso inverso de cuando convertimos de hexadecimal a decimal, ahora sabemos que debemos poner algún valor o símbolo en el segundo dígito en hexadecimal. ¿Y por qué se coloca en el segundo dígito si el exponente es 1? Recuerda que empiezas a contar el dígito del extremo derecho como el cero-ésimo y no como el primero.

El valor que habrá de colocarse en dicho dígito es el número de veces que \(16^1\) cabe entero en 196; es decir, el entero de \(\frac{196}{16^1}\), que es 12. Pero recuerda que 12 en decimal corresponde a C en hexadecimal. Así que en ese dígito debe colocarse C. Pero falta considerar parte del valor en decimal, que es \(196-12\times16=4\). Si repites el proceso para este residuo, te darás cuenta que el exponente ahora es 0. Así que debes colocar el residuo en el dígito del extremo derecho en el hexadecimal. 196 en decimal corresponde, así pues, a C4 en hexadecimal.

Nota que aquí se marca una diferencia con el binario. En el caso binario, la representación de un número está dada por \(2^n\) si el valor del dígito correspondiente era 1, o 0 si era 0. ¡Claro! En binario sólo hay la opción 1 o 0. En el hexadecimal, el valor de un cierto dígito está dado por \(r\times16^n\), con \(r\) el valor del dígito en cuestión, y \(r\) puede ir de 0 hasta F.

El siguiente interactivo te permitirá abordar la conversión de decimal a hexadecimal como se expuso anteriormente. Es similar al binario, pero considerando la base 16. Presta atención a las instrucciones en la pantalla inicial del interactivo para saber cómo usarlo.

Para pasar de hexadecimal a decimal es necesario usar potencias de 16. Para pasar de decimal a hexadecimal es necesario tomar las potencias de 16 para ver cuál cabe dentro del número en decimal, representar la potencia en hexadecimal (con valores entre 0 y F), y luego abordar el residuo hasta que la totalidad del número decimal esté representada.

De alguna forma, esto es el proceso inverso de cuando se convierte de hexadecimal a decimal, lo cual es esperado. Sin embargo, puede ser algo engorroso estar buscando la potencia de 16 que es igual o queda debajo de tal o cual número, y que es más cercana a éste.

## El algoritmo para conversión de decimal a hexadecimal

Así pues, debe haber alguna receta un poco más directa para encontrar el número en hexadecimal sin necesidad de ir tanteando el resultado. A este tipo de procesos directos se les conoce como algoritmos. La razón por la que no se presentó el algoritmo de forma inmediata es para que pudieras notar el por qué de dicho algoritmo, y no lo memorices como sólo una receta que genera un resultado.

Ahondemos un poco en la razón del algoritmo. Cuando convertiste de hexadecimal a decimal, sumaste potencias del número 16, cada una multiplicada por el valor del dígito en hexadecimal abordado. Recuerda que una potencia no es más que una multiplicación sucesiva de un número por sí mismo. Para hacer el proceso inverso (ir de decimal a hexadecimal), tenemos que hacer divisiones sucesivas entre la base en cuestión (en este caso 16), indicar de alguna forma el residuo que dejó, y abordar el resto del número hasta completar el número en decimal.

Como ejemplo, considera el número 213 en decimal. Lo dividimos entre la base y observamos su residuo: \(\frac{213}{16}=13\) y tenemos un residuo de 5. El 13 lo escribimos como en hexadecimal, es decir, como D. Sabemos que el residuo de 1 lo podemos representar como \(5\times16^0\), por lo que implicaría que hay que poner un 5 en el dígito de hasta la derecha. Como notas, es muy similar al caso binario, pero en este caso la base es mayor. Ello implica que en cada dígito no sólo pones 0 o 1, sino el valor que multiplica a la potencia base 16 en cada caso.

En el siguiente interactivo puedes poner en práctica este nuevo abordaje o algoritmo. Sigue las instrucciones en la pantalla que se presenta inicialmente en el interactivo para saber cómo usarlo.

Como seguro notaste, éste método ya no requiere estar tanteando el número como una potencia. Directamente te da un procedimiento a seguir para encontrar el número. Pero es notorio como su funcionamiento depende de divisiones sucesivas por la base, que es equivalente a ir encontrando las potencias.

Otra cosa interesante es que en este algoritmo los dígitos se van llenando de derecha a izquierda. En el método inicial, los dígitos se van llenando de izquierda a derecha. Esta diferencia se debe a que al ir dividiendo por 16 cada vez generas potencias más altas de 16, y los exponentes de las potencias crecen de derecha a izquierda.

©
×

# Créditos

Diseño del contenido | Alejandro Radillo Díaz, LITE
Diseño funcional | Alejandro Radillo Díaz, LITE
Programación | Alejandro Radillo Díaz, LITE
Asesoría de programación | Oscar Escamilla González, LITE
Diseño gráfico | Francisco Varela Fuentes
Coordinación | Leticia Montserrat Vargas Rocha

Los contenidos de esta unidad didáctica interactiva están bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual.

La unidad didáctica fue creada con Arquímedes, una herramienta de código abierto.

La unidad didáctica contiene escenas elaboradas con Descartes, una herramienta de código abierto.

LITE - UnADM 2014