Sistemas de numeración.
Los seres humanos usamos como referencia para contar, un sistema de numeración basado en el número diez (10). Este sistema de numeración es conocido como sistema DECIMAL, y tiene su origen en la utilización de los dedos de las manos como principales auxiliares de conteo. Para numero mayores de diez, el sistema decimal, aunque un poco errático al principio (once, doce, etc.), se regulariza posteriormente, con el uso de grupos consecuentes (veinte, veintiuno…, treinta, treinta y uno, y así…..).
En el caso de los computadores, como equipos eléctricos al fin, la forma de conteo es algo distinta debido a que sus limitaciones solo le permiten distinguir estados de un componente tal como un suiche con sus posiciones de apagado y encendido.
De esta manera, tenemos que la representación convencional utilizada para la interpretación de estos estados, es utilizar el numero 0 para simbolizar el estado de apagado, y el numero 1 para el estado de encendido.
A este sistema de numeración que basa su principio en la utilización de dos dígitos, le llamaremos sistema BINARIO, y desde este momento debemos aceptarlo como la única forma de comunicación “directa” que entiende un computador cualquiera.
Veamos ahora como se efectúa la interpretación numérica, por parte de un computador, utilizando este sistema elemental de numeración.
Anteriormente habíamos definido a la memoria del computador como una serie de casillas compuestas por grupos de BITS (ocho en nuestro caso), y a las que llamábamos BYTES. Cada uno de estos BITS podía tomar uno cualquiera de los valores 0 y 1, permitiéndonos obtener “palabras” como por ejemplo:
00011001
Desde el punto de vista del sistema de numeración BINARIO, esta palabra es conocida como “cadena de dígitos binarios”, y le corresponde un valor equivalente en el sistema de numeración DECIMAL.
La correspondencia en el sistema decimal, de cualquier número binario, se obtiene aplicando el concepto de BASE NUMERICA. En general, para cualquier sistema de numeración, podemos definir como BASE NUMERICA al número que da origen al principio del conteo. Así, para el sistema DECIMAL podemos hablar de BASE 10, para el sistema BINARIO utilizaremos BASE 2, etc.
Por ejemplo, el número decimal 743 puede representarse como:
(7X102) + (4X101) + (3X100)
= 700 + 40 + 3
= 743
De igual manera, un número binario como el representado por la cadena 00011001 puede ser llevado a su decimal equivalente usando el mismo principio:
(1X24) + (1X23) + (0X22) + (0X21) + (1X20)
= 16 + 8 + 0 + 0 + 1
= 25
Como podemos observar, los sistemas BINARIO y DECIMAL trabajan de forma similar, solo que la cantidad de dígitos requeridos para expresar un número cualquiera, es mayor en el caso de que lo hagamos con dígitos binarios. Efectivamente, si hubiéramos utilizado dígitos decimales para la expresión del número 25, solo habríamos tenido que utilizar 2, en tanto que para expresar este mismo número utilizando dígitos binarios (11001) requerimos 5.
Obviamente, a pesar de que los computadores solo entienden y operan con números binarios, su gran ventaja sobre los seres humanos es la velocidad a la que realizan enormes cantidades de operaciones por segundo, aun trabajando con esas largas cadenas de ceros y unos que para nosotros son tan difíciles de entender y mucho mas, de memorizar.
Debido a esto, el hombre ha ideado diversos sistemas de notación que contribuyan a una más fácil comunicación con los computadores. Uno de estos sistemas se basa en el uso del sistema de numeración HEXADECIMAL, el cual consiste en la utilización de la base numérica 16.
En la tabla siguiente, se indican los elementos que conforman al sistema de numeración hexadecimal, así como su correspondencia con los elementos de los sistemas de numeración decimal y binario.
HEX. DEC. BIN.
0…………………………… 0……………………. 0000
1……………………………. 1…………………….. 0001
2…………………………… 2…………………….. 0010
3……………………………. 3…………………….. 0011
4……………………………. 4……………………. 0100
5……………………………. 5……………………. 0101
6……………………………. 6……………………. 0110
7……………………………. 7…………………….. 0111
8…………………………….. 8…………………… 1000
9……………………………. 9……………………..1001
A……………….…………..10……………………… 1010
B…………………….……..11……………….……… 1011
C……………………………12……………….……… 1100
D……………………………..13……………………… 1101
E……………………………..14……………………… 1110
F……………………………..15……………………… 1111
TABLA 1
Veamos un ejemplo de representación numérica para el caso del número hexadecimal 2F:
2F = (2 X 16¹) + (FX16°)
= 32 + (Fx1)
= 32 + 15
= 47 en decimal.
El número 47 decimal se representa como 101111 en binario, y es evidente que la utilización de 2F es mucho más fácil de visualizar y entender.
Si bien es cierto que la numeración a través del uso de hexadecimales tampoco puede ser entendida directamente por el computador, no lo es menos que los operadores pueden facilitar su trabajo de conversión debido a la peculiaridad de la relación entre ambos sistemas, que consiste en lo siguiente:
- La base del sistema binario es 2
- La base del sistema hexadecimal es 16
- La cuarta potencia de 2 es 16.
Unidos al hecho de que un byte puede ser dividido en dos grupos de 4 bits, y que estos grupos permiten la aplicación de las siguientes reglas:
- Para convertir hexadecimal en binario, hay que convertir cada digito hexadecimal por los cuatro bits correspondientes en binario (ver tabla 1).
- Para convertir binario en hexadecimal, hay que dividir el número binario en grupos de cuatro bits (de derecha a izquierda) y luego sustituir cada uno de los grupos por el digito hexadecimal correspondiente.
De esta manera, y si tomamos en consideración que en nuestro caso tenemos como unidad de referencia el byte (grupo de ocho bits), tendremos que “casualmente”, el mayor numero expresado en binario dentro de ese byte (11111111), coincide con el mayor numero expresado por un numero hexadecimal de dos dígitos (FF), y es el 255, el mayor número posible expresado seria 1111111111111111 (16 números uno) y esto sería representado en hexadecimal como FFFF, que no es más que 65536.
Como podemos observar, existe una curiosa relación entre estos números con los que hemos querido ejemplificar. Por ejemplo, al referirnos a la capacidad de memoria de un computador, habíamos dicho que esta se media en kilobytes y en sus múltiplos, y que estos no eran más que un grupo de múltiplos de 1024 bytes. Esto indica, que si hablamos de un computador con 64K nos estamos refiriendo a una capacidad real de 1024X64=65536 bytes…
Todas estas “coincidencias” tienen una explicación lógica, pero entrar con más profundidad en este tipo de explicaciones, implicaría alejarnos demasiado del objetivo de este sitio web, por lo cual las dejaremos para una posterior oportunidad.