En este artículo aprenderemos a pasar de base decimal a base hexadecimal y también en sentido contrario. Ello nos ayudará a entender los colores en el mundo de la informática, ya que generalmente se expresan en código hexadecimal. No se requieren conocimientos avanzados en matemáticas.
¿Qué es la base hexadecimal?
Primeramente, la base diez usa 10 símbolos para representar los números, la base decimal solo usa dos y, aunque hay más, la base hexadecimal usa 16 símbolos. Cuando estamos en una base inferior a 10, con los símbolos de siempre es suficiente, pero cuando tenemos más, debemos recurrir a las letras. En el caso de la base hexadecimal los símbolos son: 0,1,…,9, A, B, C, D, E, F.
En segundo lugar, la manera de contar con esta base es igual que siempre: cuando llegamos al último símbolo, yuxtaponemos dos siguiendo el orden. Esto es:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2A, 2B, 2C, 2D, 2E, 2F, 30…
De ese modo tenemos la siguiente tabla:
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
A | 10 |
B | 11 |
C | 12 |
D | 13 |
E | 14 |
F | 15 |
10 | 16 |
… |
Ahora que ya sabemos contar en base 16, hexadecimal, pasemos a ver cómo cambiar de base. Para ello, nos será útil conocer la expresión polinómica de un número.
Expresión polinómica de los números
Todo número en base 10 se puede expresar como suma de potencias de 10. Así tenemos que 4 = 4·100, pero en estos casos en que 10 está elevado a 0, evitaremos poner la potencia. De ese modo tenemos que 239 = 200 + 30 + 9 = 2·102 + 3·10+ 9. Fíjate que si cambiamos el 10 por la x, nos da un polinomio. De ahí su nombre. Vamos a por más ejemplos.
Ejemplos
- 5 = 5·100
- 137 = 100 + 30 + 7 = 1·102 + 3·10 + 7
- 24683 = 2·104 + 4·103 + 6·102 + 8·10 + 3
- -137 = – 1·102 – 3·10 – 7
Si por el contrario estamos en base 2, el mecanismo de la notación polinómica será el mismo, pero cambiando el 10 por el 2. Análogamente para base hexadecimal.
Ejemplos
Base binaria
- 101 = 1·22 + 0·2 + 1
- 1001110101 = 1·29 + 0·28 + 0·27 + 1·26 + 1·25 + 1·24+1·23 + 1·22 + 0·2 + 1
Base hexadecimal
- 55 = 5· 16 + 5
- 387 = 3·162 + 8·16 + 7
Pasemos, seguidamente al cambio de notación entre base 10 y 16.
Decimal a hexadecimal
El primer paso consiste en ir dividiendo entre 16 para obtener las potencias de 16 y así expresar el número como potencias de 16. En lo que sigue denotaré que estoy en base 10 de la siguiente manera 423|10 y en base hexadecimal así 378|HEX cuando sea necesario. Veamos un ejemplo para terminarlo de entender.
Ejemplo 1
239|10 =
239:16= 14·16 +15 = EF|HEX , ya que 14|10 = E|HEX y 15|10 = F|HEX
Por tanto, 239|10 = EF|HEX
Ejemplo 2
27813|10 =
27813 = 1738· ·16 + 5, como 1738|10 no sé qué número es en base hexadecimal, vuelvo a dividir entre 16.
1738 = 108 ·16 + 10
Como 108|10 me deja sin saber cuál es, vuelvo a dividir entre 16
108= 6·16 + 12
Entonces tenemos lo siguiente:
27813 = 1738· 16 + 5 = (108· 16 + 10)·16 + 5 = ((6·16 + 12)·16 + 10)·16+5= 6·163 + 12·162 + 10·161+5 = 6CA5|HEX
Por tanto, 27813|10 = 6CA5|HEX
Hexadecimal a decimal
Si antes dividíamos ahora debemos multiplicar por 16 o, como decía, expresar el número en forma polinómica o en potencias de 16, multiplicar y sumar en base 10 y obtendremos el valor buscado en base 10.
Ejemplo
3F5A|HEX = 3 · 163 + 15·162 + 5·161 +10 = 16218|10
Truco: una tabla
En informática, tenemos que los bytes (8 bits) van del valor 0 al valor 255 (recuerda que con dos símbolos elegidos de 8 en 8 tenemos 2⁸ = 256 posibilidades), sin tomar los decimales. Por ello, todo se codifica con números hexadecimales que van de 0 a 255, que en base 16 es de 0 = 00 a FF. Así que esta tabla te será útil.
Ejemplos
- Queremos pasar de 206|10 a Hex, Buscamos el 206 y vemos que esta casilla corresponde a la casilla C de la columna de la izquierda y a la casilla E de la fila superior.
- Buscamos el valor de A9|HEX en base 10. Elegimos A en la columna izquierda y nos desplazamos hasta el 9 de la fila superior, la casilla marca 169.A9|HEX = 169|10 .
- Si olvidamos si es primero la fila o la columna, tenemos el siguiente recurso: 10|HEX = 16|10 por tanto primero la columna y luego la fila superior.
Conclusiones
Una vez sabemos pasar de decimal a hexadecimal y en sentido contrario, nos será más fácil entender la codificación de los colores en informática que se basa en el cubo RGB. En este enlace explico la lógica de este cubo tan famoso en internet, ya que también se usa para los colores HTML y CSS como se puede ver en esta página.
Espero haberte ayudado. De lo contrario puedes dejar tus dudas en los comentarios responderé con mucho gusto.