Como leer numeros hexadecimales y binarios – Guia completa
Quien quiera introducir caracteres especiales puede hacerlo a traves del codigo hexadecimal o del codigo decimal Unicode, este ultimo en formato &0000; a menudo tambien denominado como entidades HTML. Los ordenadores, en …
Como se leen los numeros hexadecimales y binarios?
Quien quiera introducir caracteres especiales puede hacerlo a traves del codigo hexadecimal o del codigo decimal Unicode, este ultimo en formato � a menudo tambien denominado como entidades HTML. Los ordenadores, en cambio, calculan en el sistema dual o binario, es decir, solo con ceros y unos. Hay que orientarse primero. … arroja luz sobre el asunto.
Quien trabaja mucho con colores en su profesion sabe lo dificil que suele ser convertir los valores de color RGB, frecuentemente anotados en hexadecimal, a numeros decimales, es decir, de base 16 a base 10. El negro puro o el blanco siguen siendo sencillos con la codificacion HTML #00 00 00 (0 0 0 para rojo, verde, azul) y #FFFFFF (255 255 255). Pero con la plata y su codigo hexadecimal #C0C0C0 (192 192 192) se complica, sobre todo porque los tres colores RGB presentan una saturacion del 79,29 % cada uno. Numero curioso.
Los ordenadores calculan con signos + y –
Las letras hexadecimales representan los valores decimales del 10 al 15. Y luego con C0 solo hay que considerar los valores posicionales para llegar al decimal 192. En el sistema decimal, los valores posicionales comienzan con la posicion de las unidades o del respectivo valor numerico a la izquierda de la coma y con la posicion de las decimas o a la derecha de la coma. El numero 75,5 podria escribirse tambien como . Este metodo puede aplicarse igualmente a otros sistemas de numeracion posicional. El numero binario puede traducirse por lo tanto como o .
Expresado en binario -o en el sistema dual- se necesitarian 24 digitos binarios (binary digits o bits) para FFFFFF o C0C0C0. Seria incluso mejor anteponer al menos un 0, ya que los ordenadores generalmente calculan con signo (signed) y no sin signo (unsigned). El primer bit en una cadena indica como Most Significant Bit (MSB) si se trata de un valor positivo (0) o negativo (1) del respectivo valor posicional.
Si se introduce por ejemplo FFFFFF en la calculadora de Windows para programadores, aparece el valor binario sin signo y el valor decimal correspondiente 16.777.215 (2²³+2²²…2⁰). Con signo, sin embargo, habria que restar el 1 inicial como 2²³ o 8.388.608 para obtener un valor completamente diferente, tal como los ordenadores leen la cadena.
Unicode ha reunido todos los idiomas
Convertir hexadecimal a binario y viceversa es relativamente sencillo, ya que cuatro bits juntos representan cada uno un valor hexadecimal. Solo es necesario conocer los valores posicionales dentro de cada bloque de 4 bits, donde F o el numero binario representa es decir, 15. La conversion de hexadecimal a decimal y viceversa es mas complicada, pero tampoco es cosa del otro mundo, como se vera mas adelante.
Primero, otro tema en el que ocasionalmente hay que convertir entre hexadecimal y decimal: la introduccion de caracteres especiales y otros caracteres. Segun el entorno y el metodo de entrada, hay que conocer a veces el codigo hexadecimal, a veces el codigo decimal.
El estandar Unicode ha simplificado mucho las cosas y ha puesto mas o menos fin al enredo en el que, por ejemplo, los textos chinos -segun la codificacion- aparecian como una mezcolanza de letras o de numeros. El actual estandar Unicode 15.0 de septiembre de 2022 reune practicamente todos los idiomas vivos y muertos del mundo y abarca casi 150.000 caracteres diferentes. Teoricamente, en 17 planos con 2¹⁶ o 65.536 puntos de codigo cada uno, podria haber mas de 1,1 millones de letras, numeros, comandos y caracteres sobre caracteres. Los ordenadores solo conocen estados binarios (encendido o apagado, 1 o 0). Y los caracteres ASCII, tal como se utilizan todavia hoy hasta el punto de codigo 255, tambien estan codificados en binario.
ASCII no es igual a ASCII
Pero para representar solo el signo de exclamacion, el primer caracter ASCII imprimible, habria que escribir en lugar de hexadecimal 21 o decimal 33. Por eso los numeros Unicode, tal como los designa el Consorcio Unicode segun el esquema U+0000, se indican generalmente en forma hexadecimal.
Debajo o al lado, en formato �, se encuentra tambien a menudo la entidad HTML generalmente designada en decimal. Si se conoce esta secuencia de digitos decimales, es facil en Microsoft Word introducir caracteres menos comunes mediante la tecla ALT y el teclado numerico. A veces, sin embargo, tambien hay que colocar un 0 antes de la secuencia de digitos segun la disposicion del teclado ingles, ya que ALT+190 en Word para Windows produce, por ejemplo, el simbolo monetario japones ¥, mientras que ALT+0190 produce el signo de tres cuartos ¾.
Esto se debe a que el codigo ASCII, ampliado de 128 a 256, no es uniforme sino que depende de la pagina de codigos o de la tabla de caracteres. En la pagina de codigos 437 de IBM, introducida en 1981, por ejemplo, 190 es el elemento de recuadro ╛, que en el juego de caracteres Unicode solo ocupa la posicion U+255B y segun la entidad HTML la posicion 9563. Por eso puede ser necesario cambiar la codificacion de algunos textos en idiomas extranjeros, aunque Unicode y UTF-8 ya se hayan establecido en todo el mundo.
CONSEJO: Si se ha visto un caracter en Internet y se quiere encontrar el numero Unicode y viceversa, basta con copiarlo a Microsoft Word y utilizar la combinacion de teclas ALT+c justo despues. U+FDFD, por ejemplo, con o sin el U+ precedente, es el numero Unicode de la ligadura arabe ﷽, escrita en extenso (« Bismillah arahman arahim », en espanol « En el nombre de Dios, el Misericordioso »), uno de los caracteres Unicode mas complejos que existen. Si aparece y como aparece en pantalla depende del juego de caracteres subyacente. Los caracteres no representables aparecen con un marcador de posicion como un rectangulo tachado.
Como convertir de un sistema de numeracion posicional a otro
Pasemos ahora a la cuestion de como convertir de hexadecimal a decimal y viceversa. En el sistema hexadecimal o de base 16, los digitos no van solo del 0 al 9, sino del 0 al 9 y de la A a la F, donde las letras representan los numeros decimales del 10 al 15. Como en todo sistema de numeracion posicional, los digitos hexadecimales a la izquierda de la coma representan cada uno el multiplo X del respectivo valor posicional.
ABCDEF16 se lee por lo tanto como .
Asi que solo hay que sumar los resultados individuales de las multiplicaciones para llegar al numero decimal 11.259.375. A la inversa, se puede hacer lo mismo si se conocen las potencias de 16:
Este ultimo numero es 256 × 256 × 256 y recuerda no por casualidad a la profundidad de color de 24 bits aun muy extendida hoy en dia con 3 veces 8 bits o 2²⁴, es decir, aproximadamente 16,78 millones de colores representables, tambien conocidos como True Color. Si se quiere convertir de otros sistemas de numeracion posicional al sistema decimal, se puede descomponer el numero en los multiplos de los respectivos valores posicionales. El numero binario se lee entonces como 2⁴ + 2³ + 2⁰ o 16 + 8 + 1, lo que da 25.
Una tabla puede ayudar
Otra posibilidad para convertir de otro sistema de numeracion posicional al sistema decimal es el uso del llamado esquema de Horner. Se comienza multiplicando el digito mas a la izquierda (sin ceros a la izquierda) por la base respectiva, luego se suma el siguiente digito y se multiplica la suma de nuevo por la base (base 2 para numeros binarios y base 16 para numeros hexadecimales). Se continua asi hasta que no haya nada mas que sumar:
Tomemos como ejemplo el hexadecimal 73CC16:
7 × 16 + 3 = 115 × 16 + 12 = 1.852 × 16 + 12 = 29.64410
Como se puede ver, el numero decimal es algo mas largo, y en binario con es incluso cuatro veces mas largo. Esta es la razon por la que en el procesamiento de datos a menudo se trabaja con hexadecimal en lugar de con numeros binarios o decimales.
Convertir numeros hexadecimales a numeros binarios es comparativamente sencillo, mientras que convertir numeros hexadecimales a numeros decimales es un reto mayor. Pero con el mencionado esquema de Horner, generalmente ni siquiera se necesita una calculadora para ello; lo contrario es mas probable. Lo bueno es que cada resultado intermedio ya es el equivalente decimal de los digitos hasta ese punto. 7316, por ejemplo, es, como se ve arriba, el decimal 115.
Para convertir numeros decimales a otros sistemas de numeracion posicional, se puede descomponer el numero en los multiplos de los respectivos valores posicionales o aplicar el metodo de division con restos enteros.
por ejemplo se puede descomponer en , lo que da el numero hexadecimal 137B16. B representa el numero 11.
Si se divide continuamente 4.987 entre 16 y se leen los restos enteros de abajo hacia arriba, se llega al mismo resultado:
| 4.987 ÷ 16 =
311 ÷ 16 = 19 ÷ 16 = 1 ÷ 16 = |
311
19 1 0 |
R11 (B)
R7 R3 R1 |
A partir de los restos leidos de abajo hacia arriba o de atras hacia adelante, se obtiene de nuevo el numero hexadecimal buscado 137B16. La conversion de hexadecimal a binario es por lo tanto sencilla, ya que el 1 del principio corresponde al binario 0001, el 3 al binario 0011, el 7 al binario 0111 y el B al binario 1011, en conjunto por lo tanto .
Los numeros binarios se presentan generalmente en grupos de 4 para mayor claridad, como aqui, que tambien se denominan nibbles o medio bytes. Si se forman grupos de 3 en su lugar, es a su vez facil convertir el numero binario al sistema octal (base 8), donde el primero de los tres bits cuenta como 2², el segundo como 2¹ y el tercero como 2⁰, es decir, 1.
Para quienes esten mareados de tantas conversiones, se recomienda la siguiente tabla de conversion ampliada con numeros duodecimales (base 12):
| Tabla de conversion para los sistemas de numeracion posicional mas comunes |
||||
| DEC | HEX | OCT | DDC | BIN |
| 0 | 0 | 0 | 0 | 0000 |
| 1 | 1 | 1 | 1 | 0001 |
| 2 | 2 | 2 | 2 | 0010 |
| 3 | 3 | 3 | 3 | 0011 |
| 4 | 4 | 4 | 4 | 0100 |
| 5 | 5 | 5 | 5 | 0101 |
| 6 | 6 | 6 | 6 | 0110 |
| 7 | 7 | 7 | 7 | 0111 |
| 8 | 8 | 10 | 8 | 1000 |
| 9 | 9 | 11 | 9 | 1001 |
| 10 | A | 12 | T | 1010 |
| 11 | B | 13 | E | 1011 |
| 12 | C | 14 | 10 | 1100 |
| 13 | D | 15 | 11 | 1101 |
| 14 | E | 16 | 12 | 1110 |
| 15 | F | 17 | 13 | 1111 |
| 16 | 10 | 18 | 14 | 1 0000 |
En lugar de T y E (Ten y Eleven), tambien se puede escribir A y B o ↊ y ↋ para 10 y 11 en el sistema duodecimal. Este ultimo es por cierto muy antiguo y se encuentra entre otras cosas en nuestra division del tiempo y del calendario en 12 horas y 12 meses, asi como en valores numericos como la docena y en las unidades de medida inglesas y otras unidades mas antiguas. Una pulgada inglesa (inch), por ejemplo, corresponde a un doceavo o 12⁻¹ de un pie ingles (foot), y una onza inglesa a un doceavo de una libra inglesa (pound).
Calcular es como contar en otros sistemas de numeracion posicional
Como se puede ver, los numeros o mas exactamente los digitos decimales, hexadecimales, octales y duodecimales hasta el 7 inclusive son todos iguales. A partir del decimal 8, las opiniones divergen y hay que calcular hacia abajo o hacia arriba segun el sistema de numeracion posicional. Asi, del decimal 8 resulta un octal 10 y del hexadecimal 10 resulta un decimal 16 y un octal 20. Para los numeros binarios, es mejor anteponer al menos un 0, ya que el primer 1 podria contarse como el valor negativo del respectivo valor posicional.
Explicar como se calcula en binario, hexadecimal, octal o decimal iria demasiado lejos aqui. Pero si se sabe que la base en cada sistema de numeracion posicional es 10, solo hay que contar hacia arriba y hacia abajo a lo largo de la tabla de arriba para poder sumar o restar respectivamente.
Quien no sepa de memoria cuanto es 7 + 8, por ejemplo, quizas reste inconscientemente la diferencia entre 7 y 10 (es decir, 3) de 8 y coloque el acarreo 1 bajo la siguiente posicion de digito. De la misma manera se puede calcular A + F en hexadecimal. La diferencia entre A (el decimal 10) y el hexadecimal 10 (el decimal 16) es 6, y si se resta 6 de F (es decir, 15), se obtiene 9 y un acarreo de 1. A + F es por lo tanto 19 en el sistema hexadecimal y 16 + 9 o 25 en el sistema decimal, 31 en el sistema octal, 21 en el sistema duodecimal y en el sistema binario.

