Comencemos por los sistemas de numeración que m s utilizaremos al
programar.
El b sico va a ser el sistema hexadecimal, aunque debemos de explicar
antes el binario, el sistema de numeración que utiliza el ordenador.
Los números que conocemos est n escritos en base 10. Esto significa que
tenemos, desde el 0 hasta el 9, diez símbolos para representar cada cifra.
Es decir, cada cifra ir de 0 a 9, y al superar el valor "9", cambiar a
0 y sumar uno a su cifra de la izquierda: 9+1: 10 .
El sistema binario utiliza tan sólo dos símbolos, el "0" y el "1".
Imaginemos que tenemos el número binario "0". Al sumarle una unidad,
‚ste número binario cambiar a "1". Sin embargo, si volvemos a a¤adirle
otra unidad, ‚ste número en formato binario ser el "10" ( aumenta la
cifra a la izquierda, que era 0, y la anterior toma el valor mínimo ).
Sumemos ahora otra unidad: el aspecto del número ser "11" ( tres en
decimal ). Y podríamos seguir:
Binario: 0 ; 1 ; 10 ; 11 ; 100 ; 101 ; 110; 111 ; 1000 ; 1001 ; 1010,...
Decimal: 0 1 2 3 4 5 6 7 8 9 10
Esto nos permite establecer un sistema bastante sencillo de conversión
del binario al decimal;
He aquí los valores siendo n el valor de la cifra:
Cifra menos significativa:
n*2^0 = 1 si n=1 o 0 si n=0
Segunda cifra:
n*2^1 = 2 si n=1 o 0 si n=0
Tercera cifra:
n*2^2 = 4 si n=1 o 0 si n=0
Cuarta cifra:
n*2^3 = 8 si n=1 o 0 si n=0
Etc,...
Y así continuaríamos, aumentando el número al que se eleva 2. Traduzcamos
entonces el número binario '10110111'
2^7+ 0 +2^5+2^4+ 0 +2^2+2^1+2^0 = 128 + 0 + 32 + 16 + 4 + 2 + 1 = 183
1 1 1 1 1 1
De todos modos, ‚sta transformación la he puesto símplemente para que se
comprenda con m s claridad cómo funcionan los números binarios. Es mucho
m s aconsejable el uso de una calculadora científica que permita realizar
conversiones entre decimales, hexadecimales y binarios. Se hace su uso
ya casi imprescindible al programar.
La razón del uso de los números binarios es sencilla. Es lo que entiende
el ordenador, ya que interpreta diferencias de voltaje como activado ( 1 )
o desactivado ( 0 ), aunque no detallar‚ ‚sto. Cada byte de información est
compuesto por ocho dígitos binarios, y a cada cifra se le llama bit. El
número utilizado en el ejemplo, el 10110111, sería un byte, y cada una de
sus ocho cifras, un bit.
Y a partir de ahora, cuando escriba un número binario, lo har‚ con la
notación usual, con una "b" al final del número ( ej: 10010101b )
Ahora me paso al hexadecimal, muy utilizado en ensamblador. Se trata de
un sistema de numeración en base diecis‚is. Por tanto, hay diecis‚is
símbolos para cada cifra, y en vez de inventarse para ello nuevos símbolos,
se decidió adoptar las primeras letras del abecedario. Por lo tanto,
tendremos ahora:
Hex Dec
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
11 --> 17
Etc,...
Como vemos, ‚ste sistema nos planteas bastantes problemas para la
conversión. Repito lo dicho, una calculadora científica nos ser casi
imprescindible para ‚sto.
¨ Por qu‚ utilizar ‚ste sistema ? Bien sencillo. Volvamos al byte, y
traduzcamos su valor m s alto, "11111111". Resulta ser 256. Ahora pasemos
‚sta cifra al sistema hexadecimal, y nos resultar "FF". Obtenemos un
número m s comprensible que el binario ( difícil de recordar ), y ante todo
mucho m s compacto, en el que dos cifras nos representar n cada byte.
Podremos adem s traducir f cilmente el binario a hexadecimal con ‚sta
tabla; cada cuatro cifras binarias pueden traducirse al hexadecimal:
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º Binario º Hexadecimal º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
0000 º
0001 º 1
0010 º 2
0011 º 3
0100 º 4
0101 º 5
0110 º 6
0111 º 7
1000 º 8
1001 º 9
1010 º A
1011 º B
1100 º C
1101 º D
1110 º E
1111 º F
Por ejemplo, el número binario:
1111001110101110
En hexadecimal sería:
1111 0011 1010 1110
F 3 A E
Para referirnos a un número hexadecimal sin especificarlo, usaremos la
notación que se suele usar al programar, con un 0 al principio ( necesario
cuando hay letras ) y una h al final, por ejemplo, el número anterior sería
0F3AEh