Download sistemas de numeración y codificación

Document related concepts

Código binario wikipedia , lookup

Decimal codificado en binario wikipedia , lookup

Ordenador decimal wikipedia , lookup

Sistema octal wikipedia , lookup

Nibble wikipedia , lookup

Transcript
TICO. Dpto. Tecnología IES Palas Atenea.
Sistemas de numeración y codificación
SISTEMAS DE NUMERACIÓN Y CODIFICACIÓN
EL LENGUAJE DEL ORDENADOR
Todos los elementos electrónicos del ordenador son digitales, es decir, trabajan con dos
estados posibles:
-
El estado de activación supone la existencia de un voltaje eléctrico; a este nivel de
funcionamiento se le asigna el dígito 1.
-
El estado de desactivación significa la ausencia de voltaje eléctrico; a este nivel de
funcionamiento se le asigna el dígito 0.
Como el ordenador utiliza la energía eléctrica para generar impulsos eléctricos que activan o
desactivan los circuitos electrónicos, la informática ha tomado los conceptos del lenguaje
binario para crear el lenguaje informático conocido como CÓDIGO o LENGUAJE MÁQUINA.
Cada uno de los dígitos representativos del sistema binario (0 y 1) recibe el nombre de BIT
(Binary Digit) y constituye la unidad mínima de información.
Pero antes de estudiar el código binario de los ordenadores, es necesario estudiar los sistemas
de numeración.
Un sistema de numeración es el conjunto de símbolos y reglas que permiten representar datos
numéricos. Estas representaciones se basan en sistemas de posicionamiento, en los que el
valor de cada cifra dentro de un número depende de la cifra en sí y del lugar que ocupa en el
número.
SISTEMA DE NUMERACIÓN DECIMAL
Es el sistema que utilizamos habitualmente. Se compone de diez símbolos o dígitos (0, 1, 2,
3,........., 9) a los que se le otorga un valor dependiendo de la posición que ocupe (unidades,
decenas, centenas, ... etc). Por lo tanto es un sistema en base 10, ya que existen diez símbolos
distintos que podemos emplear. El valor de cada dígito está asociado al de una potencia de
base 10, y de exponente igual a la posición que ocupa el dígito (contado desde la derecha)
menos uno.
En este sistema el número 528, por ejemplo, se calcula como:
5·102 + 2·101 + 8·100 = 500 + 20 + 8 = 528
En el caso de números con parte decimal, la representación es análoga, usando potencias
negativas. Representemos por ejemplo el número 8245,97:
8·103 + 2·102 + 4·101 + 5·100 + 9·10-1 + 7·10-2 = 8000+200+40+5+0.9+0.07 = 8245,97
SISTEMA DE NUMERACIÓN BINARIO
Este sistema utiliza sólo dos símbolos que son el 0 y el 1, por lo tanto es un sistema en base
dos.
Los números se van formando igual que en decimal, solo que en lugar de 10 símbolos sólo
disponemos de 2. Primero usamos todos los símbolos individualmente. En este caso, 0, 1.
Como ya los hemos agotado, los vamos combinando de 2 en dos, obteniendo 10, 11. Como ya
no existen más combinaciones, pasamos a agruparlos de 3 en 3: 100, 101, 110, 111. Luego
los agruparíamos de 4 en 4 (del 1000 al 1111) y así sucesivamente.
Conversión de un número binario al sistema decimal.
Para calcular el valor equivalente en decimal de un número binario, se procede de la misma
forma que en decimal, multiplicando cada cifra por una potencia de la base (en este caso 2)
elevado a un exponente que depende de la posición del dígito en cuestión. Por ejemplo,
calculemos el valor decimal del 1011(2)
1·23 + 0·22 + 1·21 + 1·20 = 8 + 0 + 2 + 1 = 11(10)
1
1 Dado que la única potencia impar de 2 es 20, es fácil averiguar, antes de realizar el cálculo correspondiente, si un
1
TICO. Dpto. Tecnología IES Palas Atenea.
Sistemas de numeración y codificación
Si el número tiene parte decimal, usaremos potencias negativas. Por ejemplo, calculemos el
valor decimal del 10010,01(2)
1·24 + 1·21 + 1·2-2 = 16 + 2 + 0,25 = 18,25(10)
Conversión de un número decimal al sistema binario.
Parte entera:
Para calcular la parte entera, tendremos que ir dividendo el número decimal por dos, hasta
encontrar un cociente de valor 1. Este cociente será la primera cifra del número binaria. Las
demás las obtendremos de los restos de las divisiones, empezando por el último y acabando
con el primero. Como ejemplo, calculemos el valor binario del número 159 2
Cociente
Resto
159:2
79
1
79:2
39
1
39:2
19
1
19:2
9
1
9:2
4
1
4:2
2
0
2:2
1
0
Si tomamos el último cociente y los restos leídos de abajo hacia arriba obtenemos:
159(10) = 10011111(2)
Parte decimal
En este caso, procedemos a la inversa; en vez de dividir, multiplicamos por dos. Reservamos la
parte entera del número obtenido, y multiplicamos la parte decimal obtenida por dos,
repitiendo el proceso hasta que tengamos una parte decimal nula. El resultado lo obtendremos
leyendo las partes enteras de arriba hacia abajo (ojo, que es al contrario de lo que hacemos en
la parte entera)
Calculemos el valor binario de 0,625
P. Entera
P. decimal
0,625 · 2
1
0,25
0,25 · 2
0
0,5
0,5 · 2
1
0
Si leemos las partes enteras de arriba hacia abajo obtenemos:
0,625(10) = 0,101(2)
CODIFICACIÓN BINARIA
Como se ha mencionado antes, la razón por la que los ordenadores usan el sistema binario se
número binario es par o impar. Si acaba en 0, la potencia 2 0 no contribuye a la suma, por lo que el resultado será par.
Si acaba en 1, obtendremos una suma en la que sólo habrá un sumando impar. El número resultante deberá ser impar.
2 Que sabemos deberá acabar en 1, al ser impar.
2
TICO. Dpto. Tecnología IES Palas Atenea.
Sistemas de numeración y codificación
debe al hecho de que es muy sencillo hacer corresponder un 1 a la presencia de voltaje y un 0
a su ausencia. Sin embargo, esto, por si solo, no es suficiente para poder establecer un sistema
de comunicación satisfactorio con la máquina. Necesitamos establecer un código de tal forma
que a cada cifra en decimal de 0 a 9 se le asigne un conjunto de unos y ceros predeterminado
y fijo, de tal forma que sea el mismo para todas las máquinas.
Hasta ahora hemos visto que, pasando de decimal a binario no nos hemos preocupado del
número de cifras que necesitábamos. Así, el 2 en decimal es 10 en binario, con dos cifras, el 5
es el 101, con tres, y el 8 1000, con cuatro.
Si en vez de pasar el número dos a binario queremos codificarlo, no sólo es necesario hacer el
cambio de base, sino que además necesitamos decidir cuántas cifras (cuántos bits) vamos a
usar para representarlo.
Código BCD natural
Los códigos BCD (digital codificado en binario) son los más usados, y dentro de ellos el más
sencillo es el BCD natural. En él, cada cifra de 0 a 9 se representa en base dos, completando
con ceros a la izquierda si es necesario.
El número de bits usado para representar las cifras vendrá dado por el número de bits
necesario para pasar a base 2 la cifra mayor. Aquí, 9 (10)=1001(2). Por tanto, los códigos BCD
usarán 4 bits. En el caso particular del código BCD natural, la codificación se muestra en la
siguiente tabla:
Nº
BCD NATURAL
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
-
1010
-
1011
-
1100
-
1101
-
1110
-
1111
Como hemos necesitado 4 bits para codificar el 8 y el 9, obtenemos 2 4 = 16 posibles
3
TICO. Dpto. Tecnología IES Palas Atenea.
Sistemas de numeración y codificación
combinaciones, de las cuales usamos diez3.
Antes de continuar, debemos prestar atención a dos diferencias entre la codificación de un
número en BCD y su expresión en base 2:
1. Si el número decimal es de una única cifra, la cantidad de cifras que usaremos en base
dos será la mínima que necesitemos, mientras que en BCD debemos usar
obligatoriamente 4 bits. Así, el 2 se expresa como 10 en base 2, pero su codificación
será 0010.
2. Para codificar números decimales de más de una cifra, sustituiremos cada una de ellas
por su correspondiente codificación, usando 4 bits para cada cifra. En el ejemplo que
hemos hecho anteriormente, el 159 se expresaba en base 2 como 10011111. Sin
embargo, codificado en BCD natural sería 000101011001.
Otros códigos BCD
Dado que la codificación BCD consiste en asignar una secuencia de 4 bits a cada una de las 10
cifras de 0 a 9, no existe ninguna obligación de hacer corresponder esas secuencias con la
equivalencia entre el número decimal y su valor en base 2, como se hace para formar el BCD
natural. Así, podemos generar una cantidad enorme de códigos. Entre los más usados aparte
del natural podemos destacar tres:
1. Código Aiken. Se asignan las 5 primeras combinaciones a los números de 0 a 5 y las
cinco últimas a los números de 6 a 9. Las 6 intermedias no se asignan.
2. BCD exceso 3. En este caso, las tres primeras y las tres últimas combinaciones no se
asignan, y se usan las 10 intermedias.
3. Códigos Gray. Entre un número y el siguiente, sólo se cambia el valor de un bit. Se
usan mucho en sistemas de detección de errores.
Nº
BCD natural
Código Aiken
BCD exceso 3
Código Gray
0
0000
0000
0011
0000
1
0001
0001
0100
0001
2
0010
0010
0101
0011
3
0011
0011
0110
0010
4
0100
0100
0111
0110
5
0101
1011
1000
0111
6
0110
1100
1001
0101
7
0111
1101
1010
0100
8
1000
1110
1011
1100
9
1001
1111
1100
1101
Volviendo al ejemplo del 159, podemos ver cómo se expresaría en
binarios que hemos visto:
los diferentes sistemas
Decimal
Base 2
BCD natural
Código Aiken
Exceso 3
Código Gray
159
10011111
000101011001
000110111111
010010001100
000101111101
3 Como regla general, con n bits tendremos 2n combinaciones posibles.
4
TICO. Dpto. Tecnología IES Palas Atenea.
Sistemas de numeración y codificación
SISTEMA DE NUMERACIÓN HEXADECIMAL.
Como se acaba de ver, para codificar los números 8 y 9 en binario se necesitan 4 bits, lo que
da lugar a 16 combinaciones de unos y ceros, de las cuales dejamos 6 sin utilizar. En
informática resulta muy interesante no desaprovechar esas combinaciones, y usar un sistema
de numeración hexadecimal, que usa una base 16. Al igual que en decimal formamos todos
los números a partir de 10 cifras básicas (de 0 a 9) y en binario a partir de dos (0 y 1), en
hexadecimal necesitaremos una base de 16 cifras: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F.
Cuando agotamos estas 16 cifras, las agruparemos de 2 en 2. Así, después de F vendrán los
números 10, 11, 12, …, 19, 1A, 1B, …, 1F, 20, 21, …, 29, 2A, …, 99, 9A, …, 9F, A0, …, FF.
Luego los agruparemos de 3 en 3, desde el 100 hasta el FFF, y así sucesivamente.
La tabla de correspondencias entre números binarios, hexadecimales y BCD natural será
entonces:
Decimal
Hexadecimal
BCD Natural
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
Conversión de un número hexadecimal a decimal.
Se procede exactamente igual que en el caso de un número binario, multiplicado cada cifra por
una potencia de la base (16, en este caso) elevada a un exponente que depende de la posición
de la cifra. Si queremos pasar el 2B8E(16) a decimal:
2B8E = 14 · 160 + 8 · 161 + 11 · 162 + 2 · 163 = 14 + 128 + 2816 + 8192 = 11150(10)
Conversión de un número decimal a hexadecimal.
También se procede como en el caso de decimal a binario: tendremos que ir dividendo el
5
TICO. Dpto. Tecnología IES Palas Atenea.
Sistemas de numeración y codificación
número decimal por 16, hasta encontrar un cociente menor que este número. Este cociente
será la primera cifra del número hexadecimal. El resto las obtendremos de los restos de las
divisiones, empezando por el último y acabando con el primero, teniendo en cuenta que para
restos mayores de 9 habrá que usar una letra entre A y F.
Por ejemplo, pasemos el 42198(10) a hexadecimal.
Cociente
Resto
42198:16
2637
6
2637:16
164
D (13)
164:16
A (10)
4
Tomando el último cociente y los restos de abajo hacia arriba obtenemos:
42198(10) = A4D6(16)
Conversión de un número hexadecimal a binario.
Es extraordinariamente sencillo, ya que se trata de sustituir cada cifra del número hexadecimal
por su correspondiente codificación en BCD natural:
C70(16) = 110001110000(2)
Conversión de un número binario a hexadecimal.
Dividimos el número binario en grupos de 4, de derecha a izquierda (completando con ceros a
la izquierda si es necesario) y se sustituye cada grupo por su valor hexadecimal:
10101011000101(2) = 0010 1010 1100 0101 = 2AC5(16)
CÓDIGO o LENGUAJE MÁQUINA.
Cada uno de los dígitos representativos del sistema binario (0 y 1) recibe el nombre de BIT
(Binary Digit) y constituye la unidad mínima de información. Un grupo de 8 bits se denomina
BYTE, y a partir de ahí se obtienen los diversos múltiplos:
8 bits = 1 byte
1024 bytes = 1 Kilobyte
1024 kilobytes = 1 Megabyte
1024 Megabytes = 1 Gigabyte
1024 Gigabytes = 1 Terabyte
El motivo por el que la proporción entre los distintos múltiplos es 1024 se debe a que ésta es la
cantidad en potencias de base 2 que más se aproxima a la proporción 1000 (2 10 = 1024).
El ordenador necesita recibir los datos codificado en forma binaria, es decir, convertidos en
ceros y unos. Por tanto, todos los caracteres (letras, números, símbolos) deben ser “traducidos”
al lenguaje binario mediante un cierto código. Existen varios tipos de códigos que cumplen esta
función entre los que destaca el código ASCII (American Standard Code for Information
Interchange). En el código ASCII a cada carácter se le asigna un byte. Como cada byte está
formado por 8 bits, tendremos 28 = 256 caracteres diferentes. La tabla completa del código
se muestra en la siguiente página. Cada carácter tiene asignado un número entre 0 y 255,
además de su equivalente hexadecimal. De esta forma, es sencillo escribir el código ASCII de
cualquier texto, ya que sólo es necesario buscar el código hexadecimal de cada símbolo y
escribir su equivalente BCD, respetando que cada carácter siempre se codifica a 8 bits.
Por ejemplo, escribamos Informática. en código ASCII
6
TICO. Dpto. Tecnología IES Palas Atenea.
Sistemas de numeración y codificación
Letra
(hex)
ASCII
Letra
(hex)
ASCII
Letra
(hex)
ASCII
Letra
(hex)
ASCII
I (49)
01001011
o (6F)
01101111
á (A0)
10100000
c (63)
01100011
n (6E)
01101110
r (72)
01110010
t (74)
01110100
a (61)
01100001
f (66)
01100110
m (6D)
01101101
i (69)
01101001
. (2E)
00101110
Si lo escribimos seguido, Informática. en ASCII quedaría:
010010110110111001100110011011110111001001101101101000000111010001101001011
000110110000100101110
Que es en realidad lo que procesa un ordenador al escribir la palabra en el teclado.
Hay que notar que para el ordenador no son iguales las mayúsculas y las minúsculas. Por
tanto, el código para I no es igual que el de i. Lo mismo ocurre para las vocales sin acentuar y
acentuadas.
Si el texto tuviese espacios en blanco, también habría que introducir su carácter ASCII
correspondiente.
7