Contar en hexadecimal

Posted on Friday, December 22, 2006 in Curiosidades, Ciencia, Programación

Contar en hexadecimal

En la última tira cómica de Raulito el friki se cita la numeración hexadecimal y varios lectores se lamentan de no dominarla. Aquí voy a explicarlo.

La numeración decimal empieza en el 0 y cuando llega al 9, la última cifra, el siguiente es 0 llevándonos 1 para sumárselo a la siguiente cifra de mayor peso, es decir, si al número 9 le sumamos 1 el resultado es 0 y le sumamos 1 a las decenas: 10.

En hexadecimal las cifras no se acaban en el 9, después de éste vienen A, B, ..., F y sólo despues de F es cuando volvemos al 0 y le incrementamos 1 a la siguiente cifra. Los 17 primeros números en hexadecimal serían: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10.

Si por ejemplo tenemos el número 39, el siguiente sería el 3A. El que va después del 99, el 9A. Después del 4F el 50. Y tras el 9F el A0. Espero que se entienda.

Para hacer operaciones (suma y multiplicación) o convertir entre decimal y hexadecimal lo más fácil es pasar por binario. En binario sólo se usan el 1 y el 0 y el peso de cada cifra es 2posición. Así, en el número 11001 los pesos serían:

2423222120
11001

Por lo que 11001BIN = 1*24 + 1*2³ + 0*2² + 0*2¹ + 1*20 = 8 + 4 + 0 + 1 = 13DEC. Ya hemos pasado de binario a decimal.
El proceso inverso, pasar de decimal a binario, es también bastante sencillo, sólo hay que escribir el número en potencias de 2 sin repetir ninguna, el exponente de las potencias será la posición de los unos y el resto todo ceros:
28DEC = 24 + 2³ + 2² = 11100BIN.

Y ahora vamos por fin a ver como pasar de decimal a hexadecimal pasando por binario. En primer lugar hay que pasar el número decimal a binario y con el binario resultante tomamos los bits de cuatro en cuatro y representamos su valor en hexadecimal. Vamos a verlo con un ejemplo.

303DEC = 25 + 24 + 2³ + 2² + 2¹ + 20 = 100101111 BIN = 0001 0010 1111 BIN
0001BIN = 1HEX
0010BIN = 2HEX
1111BIN = FHEX
303DEC = 12FHEX

Para pasar de hexadecimal a binario, el proceso inverso: se escribe cada uno de los dígitos hexadecimales con su representación binaria de cuatro dígitos y luego se calcula la representación decimal del número binario que se obtiene.

En el chiste hablaban de los colores en hexadecimal. En HTML los colores se representan por un número hexadecimal de 6 dígitos, en los que los dos primeros corresponden al rojo, los dos del medio al verde y los dos últimos al azul. Siendo FFHEX = 255DEC el valor máximo que pueden tomar.

837BA5 = (Rojo = 83HEX, Verde = 7BHEX, Azul = A5HEX) = (Rojo =   131DEC, Verde =   123HEX, Azul =   165HEX) =