apuntes

Anuncio
SISTEMAS DIGITALES Y REPRESENTACIÓN DE LA
INFORMACIÓN
1. Representación de la información en los sistemas digitales
El término digital se deriva de la forma en que los ordenadores realizan las operaciones:
contando dígitos. Durante muchos años, las aplicaciones de la electrónica digital se limitaba a
los sistemas informáticos. Hoy en día, la tecnología digital tiene aplicación en prácticamente
todas las áreas.
1.1 Magnitudes analógicas y digitales
Una magnitud analógica es aquella que toma valores continuos. Por ejemplo, la temperatura
varía dentro de un rango continuo de valores. A lo largo del día, la temperatura no varía de
20ºC a 25ºC de forma instantánea sino que alcanza todos los infinitos valores que hay en ese
intervalo. Uno de los problemas que tenemos es que cualquier “ruido” (interferencia), hace
que los datos sean poco fiables. Otros inconvenientes:
- Almacenar
- Procesar
- Transmitir
Una magnitud digital es aquella que toma un conjunto de valores discretos (finitos). Por
ejemplo, podríamos ir tomando la temperatura cada 5 minutos.
1.2 Representación de la información digital
La electrónica digital utiliza sistemas y circuitos en los que sólo existen dos posibles
estados: Alto (HIGH) y Bajo (LOW).
Estos estados se pueden representar de diferentes formas:
- niveles de tensión (el más habitual)
- niveles de corriente
- interruptores abiertos o cerrados
- lámparas encendidas o apagadas
- …
1
1.2.1 Dígitos binarios
El sistema de numeración de dos estados se denomina binario, y los dos dígitos que emplea
son el 0 y el 1.
Un dígito binario se denomina bit.
Si asociamos el estado Alto=1 y Bajo=0 estamos trabajando con lógica positiva que es la que
utilizaremos a lo largo del curso.
Los grupos de bits, llamados códigos, se utilizan para representar:
- números
- símbolos
- caracteres alfabéticos
- instrucciones
- cualquier otro tipo de información
1.2.2 Niveles lógicos
Las tensiones que se utilizan para representar los 1´s y los 0´s reciben el nombre de niveles
lógicos.
Como hemos dicho antes, a lo largo de este curso vamos a trabajar con lógica positiva, es
decir, asociamos el estado Alto con el 1 y el Bajo con el 0. Decíamos también que los estados
se pueden representar de diferentes formas, pero el más habitual y el que usaremos en este
curso es el de asociarlo a niveles de tensión.
Supongamos entonces que el 1 lógico equivale a 5V (depende también de la familia que
estemos usando), y el 0 lógico equivale a 0V. Esto sería el caso ideal, ya que en la práctica, el
tipo de circuito, las interferencias, … hacen que el 1 lógico se asigne a un intervalo de tensión
que puede ir desde 2V a 5V, y el 0 lógico se asigne a un intervalo de tensión que puede ir
desde 0V a 0,8V. En este curso vamos a considerar sólo el caso ideal: 1 = 5V y 0 = 0V.
1.2.3 Formas de onda digital
Las señales digitales consisten en niveles de tensión que varían entre los estados alto y bajo.
Se denomina impulso positivo cuando la tensión pasa de su estado a nivel bajo hasta el nivel
alto, y luego retorna al nivel bajo.
1
0
Se denomina impulso negativo cuando la tensión pasa de su estado a nivel alto hasta el nivel
bajo, y luego retorna al nivel alto.
1
0
La mayoría de las señales que podemos encontrar en los sistemas digitales se componen de
series de impulsos (algunas veces llamados también trenes de impulsos) y pueden clasificarse
en periódicas y no periódicas.
2
Un tren de impulsos periódico es aquel que se repite a intervalos de tiempo fijos, este
intervalo de tiempo fijo se denomina periodo (T). La frecuencia (f) es la velocidad a la que se
repite (f = 1/T) y se mide en hertzios (Hz).
T1
T2
T3
Periodo = T1 = T2 = T3 = …
Un tren de impulsos no periódico es aquel que no se repite a intervalos de tiempo fijos, y
puede estar compuesto por impulsos de distintos anchos y/o impulsos que tienen intervalos
diferentes de tiempo entre ellos.
No periódico
La información binaria que manejan los sistemas digitales se transmite a través de trenes de
impulsos que representan secuencias de bits.
En muchos sistemas digitales, todas las señales se sincronizan con una señal de tiempo
denominada reloj. El reloj es una señal periódica en la que su periodo equivale a la duración
del bit.
Cronograma o diagrama de tiempos es una gráfica de ondas digitales que muestra como van
variando las ondas a través del tiempo.
reloj
A
1
0
1
0
0
1
B
1
1
0
0
1
1
En el primer intervalo de tiempo,
tanto A como B valen 1. En el
siguiente, B mantiene su valor
pero A pasa a valer 0. En el
siguiente, A vuelve a valer 1 y B
pasa a valer 0, …
Cronograma
3
2. El sistema de numeración binario
2.1
Sistemas de numeración
Todos estamos familiarizados con el sistema de numeración decimal porque usamos los
números decimales cada día.
El sistema binario es simplemente otra forma de representar magnitudes. Este sistema es
menos complicado que el sistema decimal ya que sólo tiene dos dígitos.
El sistema decimal con sus diez dígitos es un sistema en base 10, el sistema binario con sus
dos dígitos es un sistema en base 2. Los dos dígitos binarios (bits) son 1 y 0.
Además de estos dos sistemas de numeración también estudiaremos otros dos que nos van a
ser muy útiles, el sistema de numeración octal (base 8) y el hexadecimal (base 16).
Como es fácil construir circuitos digitales que reconozcan y manipulen sólo 0´s y 1´s ,
nuestro objetivo en el diseño de sistemas es realizar todas las operaciones usando
únicamente estos dos dígitos. En consecuencia, todos los números y datos de un computador
tienen que representarse en esta forma binaria.
Los datos que podemos encontrar en un sistema digital se pueden clasificar en 3 categorías
generales que incluyen:
1. Números que se usan en operaciones aritméticas.
2. Letras del alfabeto que se usan en procesamiento de datos.
3. Una serie de símbolos discretos para diversos usos.
Estos tres tipos de datos se representan en computadores en código binario.
Los sistemas de numeración que estudiaremos en esta sección tienen una estructura de
pesos, es decir que un mismo dígito tiene diferentes valores dependiendo la posición que
ocupe.
2.1.1 Sistema decimal
Aunque ya estamos muy familiarizados con este sistema de numeración, nos interesa
comprender su estructura de pesos, lo que nos ayudará a entender a los otros sistemas de
numeración.
Este sistema utiliza diez dígitos (base 10) desde el 0 hasta el 9.
Puede expresar cantidades hasta 9 antes de quedarse sin dígitos. Si se desea expresar una
cantidad mayor, se usan dos o más dígitos, y la posición de cada uno de ellos dentro del
número le dice la magnitud que representa.
105 = 1x102 + 0x101 + 5x100 = 100 + 0 + 5
Peso = 10i, donde i es la posición que ocupa el dígito.
4
Los pesos para los números enteros son potencias positivas de diez que aumentan de derecha
a izquierda, comenzando por 100 = 1.
Para números fraccionarios, los pesos son potencias negativas de diez que aumentan de
izquierda a derecha, comenzando por
10-1 = 0,1.
… 102 101 100, 10-1 10-2 10-3 …
coma fraccionaria
El valor de un número decimal es la suma de los dígitos después de haber multiplicado cada
dígito por su peso (como vimos en el ejemplo del 105).
2.1.2 Sistema binario
También es un sistema con pesos, donde lo único que varía respecto al decimal es su base.
Para contar en binario se hace igual que en decimal con la única diferencia que ahora sólo
contamos con dos dígitos (bits), el 0 y el 1. Si se quiere expresar una cantidad mayor hemos
de ir añadiendo dígitos.
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
…
Binario
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
…
Para aprender a contar en binario hay que observar
como contamos en el sistema decimal.
Empezamos en 0 y contamos hasta 9
antes de quedarnos sin dígitos.
Luego comenzamos con otra posición
de dígitos (a la izquierda) y
contamos desde 10 hasta 99.
Es necesaria otra posición para
contar desde 100 hasta 999. Y así
sucesivamente.
En binario es similar:
Con un solo bit contamos de 0 a 1.
Necesitamos otro bit a la izquierda
para contar de 2 a 3.
Con el tercer bit podemos contar de
4 a 7.
Con el cuarto, de 8 a 15. Y así
sucesivamente.
5
El bit más a la derecha es el bit menos significativo: LSB (Least Significant Bit) y tiene un
peso de 20 = 1.
Los pesos de los respectivos bits crecen de derecha a izquierda según las potencias de 2.
… 23 22 21 20
El bit más a la izquierda es el bit más significativo: MSB (Most Significant Bit) y su peso
depende del tamaño del número binario.
Los números con parte fraccionaria también se pueden representar en binario con pesos que
van desde 2-1 hasta 2-n, donde n es el número de bits a partir de la coma fraccionaria.
… 22 21 20, 2-1 2-2 2-3 … = … 4 2 1, 0,5 0,25 0,125 0,0625 …
coma fraccionaria
Recordar:
2-1 = 0,5
2-2 = 0,25
2-3 = 0,125
2-4 = 0,0625
2-5 = 0,03125
2-6 = 0,015625
…
Conversión binario a decimal:
n-1
∑ 2i
i= -m
1010011100(2 = 29 + 27 + 24 + 23 + 22 = 512 + 128 + 16 + 8 + 4 = 660(10
1001.101(2 = 23 + 20, 2-1 + 2-3 = 8 + 1, 0,5 + 0,125 = 9,625(10
Conversión decimal a binario:
Existen principalmente dos métodos:
-
Suma de pesos
Divisiones sucesivas
6
Suma de pesos:
-
Al número se le resta la mayor potencia de 2 que no lo sobrepase.
Sucesivamente, se irá restando a lo que nos quede las potencias de 2 hasta llegar a
0.
Se asignará un 1 al peso de las potencias de 2 que hemos utilizado.
9,625(10 = 1001,101(2
Parte entera
9
-8 -> 23
1
-1 -> 20
0
Parte fraccionaria
0,625
-0,5 -> 2-1
0,125
-0,125 -> 2-3
0
En este caso, la parte fraccionaria ha sido
exacta pero en la mayoría de los casos esto
no ocurre, por lo que tendremos que poner
un límite al número de bits que queramos
aproximar al igual que ocurre en el sistema
decimal.
Divisiones sucesivas:
Parte entera
- El número se divide por dos.
- Sucesivamente se irán dividiendo los cocientes por dos hasta que el resto sea 0 o 1.
- El último cociente será el MSB. El resto de bits lo formarán todos los restos que
hemos ido obteniendo, siendo el LSB el primer resto obtenido.
9 2
LSB 1 4 2
0 2 2
0 1 MSB
Parte fraccionaria
-
El número se multiplica por dos. La parte que queda como entera se extrae como
bit. Éste será el MSB.
Sucesivamente se irá multiplicando la parte fraccionaria por dos hasta que ésta
sea 0 o se llegue al límite de bits.
0,625 x 2 = 1,25 -> 1 (MSB)
0,25 x 2 = 0,5
-> 0
0,5 x 2 = 1,0
-> 1 (LSB)
7
Otro ejemplo: 25,7187(10. Limitar la parte fraccionaria a 6 bits
25,7187(10 = 11001,101101(2
Parte entera
Parte fraccionaria
25
-16 -> 24
9
-8 -> 23
1
-1 -> 20
0
25 2
LSB 1 12 2
0 6 2
0 3 2
1 1 MSB
0,7187
-0,5
-> 2-1
0,2187
-0,125 -> 2-3
0,0937
-0,0625 -> 2-4
0,0312
-0,015625 -> 2-6
0,015575
0,7187 x 2 = 1,4374 -> 1 (MSB)
0,4374 x 2 = 0,8748 -> 0
0,8748 x 2 = 1,7496 -> 1
0,7496 x 2 = 1,4992 -> 1
0,4992 x 2 = 0,9984 -> 0
0,9984 x 2 = 1,9968 -> 1
2.1.3 Sistemas octal y hexadecimal
Los números binarios largos son difíciles de leer y escribir ya que es fácil omitir o
transponer un bit.
Puesto que los computadores sólo entienden los 1´s y los 0´s, es necesario emplear estos
dígitos cuando se programa en lenguaje máquina.
Si, por ejemplo, tenemos que escribir una instrucción de 60 bits existe una probabilidad alta
de equivocarnos, así que trabajaremos con otro sistema más sencillo.
Una posibilidad sería trabajar en decimal y luego pasarlo a binario, pero hemos visto que la
conversión no es directa, así que buscaremos algún sistema donde la conversión sea directa.
Solución: Utilizar los sistemas octal y hexadecimal, que al ser potencias de 2, la conversión
es muy sencilla.
8
El sistema octal necesita 8 dígitos (base 8): 0, 1, 2, 3, 4, 5, 6 y 7.
El sistema hexadecimal, 16 dígitos (base 16): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F.
Conversión binario a octal:
Se agrupan los bits de 3 en 3, ya que 8 = 23
668(10 = 1010011100(2 = 1234(8
1 2 3 4
Conversión binario a hexadecimal: Se agrupan los bits de 4 en 4, ya que 16 = 24
668(10 = 1010011100(2 = 29C(16
2 9 C
La equivalencia sería:
DECIMAL
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BINARIO
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
10000
OCTAL
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
HEXADECIMAL
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
Conversión octal, hexadecimal a binario:
Se realiza el proceso inverso, es decir,
vamos sustituyendo cada dígito por sus
correspondientes bits (3 en octal y 4 en
hexadecimal).
Conversión octal, hexadecimal a decimal:
Es equivalente a como lo hacíamos en binario. Lo único que cambia es la base.
Tener en cuenta también en hexadecimal que A equivale a 10, …, y F a 15.
n-1
∑ ai bi
i= -m
Octal:
a: 0..7
Hexadecimal: a: 0..F
b=8
b = 16
1234(8 = 1x83 + 2x82 + 3x81 + 4x80 = 1x512 + 2x64 + 3x8 + 4x1 = 668(10
29C(16 = 2x162 + 9x161 + Cx160 = 2x256 + 9x16 + 12x1 = 668(10
9
Conversión decimal a octal y hexadecimal:
La suma de pesos sólo sirve en binario porque cada peso se multiplica por 1. Por lo tanto
utilizaremos:
-
Divisiones sucesivas.
Conversión a binario y de aquí a octal o hexadecimal.
72541(10 = 11B5D(16
72541 16
13 4533 16
5 283 16
11 17 16
1 1
2.2 Números enteros con signo
A partir de ahora, consideramos que el formato de almacenamiento de los números dentro
de un ordenador tiene un tamaño fijo. Supongamos 8 bits.
El hecho de almacenar nuestros números en tamaño fijo de bits nos puede provocar dos
posibles situaciones:
-
Overflow (desbordamiento): Se puede producir cuando al operar con dos números,
sobrepasamos la capacidad de lo que podemos almacenar, tanto en la parte positiva
como la negativa.
En el caso de la suma, sólo puede pasar con números del mismo signo.
-
Carry (acarreo): Se puede producir cuando al sumar dos números generamos un bit
de más en la última suma parcial.
Para la representación de los números binarios con signo, estudiaremos tres posibilidades:
-
Signo y magnitud
Exceso n
Complemento a 2
10
2.2.1 Signo y magnitud
Los números positivos y negativos se representan de la misma forma, pero cambiando su
signo, que es el bit de más a la izquierda (MSB).
Si estamos considerando números de 8 bits, tendremos 1 bit para el signo y 7 para la
magnitud.
-
Magnitud: indica el valor del número
Signo: indica si el número es positivo o negativo
o Positivo: MSB = 0
o Negativo MSB = 1
Rango de representación:
Con 8 bits ( 1 para el signo y 7 para la magnitud => 27-1 = 127) podremos representar en
decimal desde el –127 hasta el 127)
1 1111111
01111111
-> -127
-> 127
Signo Magnitud
Conversión a decimal:
La magnitud es la misma que en los números positivos por tanto, se calcula exactamente igual
(utilizando únicamente la mantisa) y se le cambia el signo.
1 0 0 1 1 0 0 1 = -(24 + 23 + 20) = -(16 + 8 + 1) = -25
Operaciones aritméticas:
Suma/resta: Se ha de comparar tanto el signo, como la magnitud de los operandos.
- Mismo signo: se suman las magnitudes y se le pone el signo de los operandos.
- Diferente signo: se resta siempre a la magnitud mayor la más pequeña, y se le pone
al resultado el signo de la magnitud mayor.
Inconvenientes de esta representación:
- Necesita operación de resta.
- Es un sistema muy lento, ya que requiere comparar signos y magnitudes.
11
2.2.2 Exceso n
Rango de representación:
Con 8 bits podremos representar en decimal desde el –n hasta el (2n-1) - n = 255 - n
Conversión a decimal:
Todos los números se calculan como hasta ahora. Al resultado se le resta n.
Por ejemplo, con exceso 31
1 1 1 0 0 1 1 1 = (27 + 26 + 25 + 22 + 21 + 20) -31 = (128 + 64 + 32 + 4 + 2 + 1)-31 = 200
Operaciones aritméticas
Presenta los mismos inconvenientes que cuando trabajábamos con signo y magnitud.
2.2.3 Complemento a 2
Los números positivos se representan de la misma forma que los positivos de signo y
magnitud.
Los números negativos se representan mediante el complemento a 2 del número positivo.
Complemento a 2: Complemento a 1 + 1.
Complemento a 1: Cambiar 1´s por 0´s y 0´s por 1´s.
0 0 0 1 1 0 0 1 -> 25
1 1 1 0 0 1 1 0 -> complemento a 1
1
1 1 1 0 0 1 1 1 -> -25
Método alternativo para hallar el complemento a 2:
-
Se empieza por el bit de más a la derecha (LSB) y vamos recorriendo hacia la
izquierda, dejándolos como están hasta que encontremos el primer 1 (incluido).
A partir de aquí se hace el complemento a 1 del resto.
0 1 0 1 0 0 -> 20
1 0 1 1 0 0 -> -20
1 0 1 0 1 1 complemento a 1
1
101100
12
Rango de representación:
Con 8 bits podremos representar en decimal desde el –128 hasta el 127)
1 0 0 0 0 0 0 0 -> -128
0 1 1 1 1 1 1 1 -> 127
Conversión a decimal:
Los números positivos se convierten igual que hasta ahora.
Los números negativos (MSB = 1):
-
Se asigna valor negativo al peso del MSB
El resto de bits, se calculan tal y como lo hemos hecho anteriormente.
1 1 1 0 0 1 1 1 = -27 + 26 + 25 + 22 + 21 + 20 = -128 + 64 + 32 + 4 + 2 + 1 = -25
Operaciones aritméticas
- Overflow (desbordamiento): Se puede producir cuando al operar con dos números,
sobrepasamos la capacidad de lo que podemos almacenar. En nuestro caso (8 bits)
si el resultado es > 127 o < 128.
En el caso de la suma, sólo puede pasar con números del mismo signo. En este caso
el resultado es de signo contrario a los operandos y por tanto, incorrecto.
- Carry (acarreo): Se puede producir cuando alguno de los operandos (o los dos), son
negativos. El hecho de representar los números en complemento a 2 hace que el
resultado tenga 1 bit más de lo que podemos almacenar (9 en nuestro caso). Esto no
es un error y sencillamente despreciamos este bit de acarreo.
Resta: La resta se realiza mediante la suma del complemento a 2 del número que queremos
restar: a – b = a + (-b) por tanto, le sumamos a “a” el complemento a 2 de “b”.
2.3 Formato de representación en coma flotante
Para representar números enteros muy grandes, son necesarios muchos bits.
También se produce un problema cuando se necesita representar números con parte entera
y parte fraccionaria como 22,315.
El sistema de numeración en coma flotante permite representar números muy grandes y
números muy pequeños sin aumentar el número de bits, y también sirve para representar
números con parte fraccionaria y parte entera.
13
Un número en coma flotante (número real) tiene dos partes más un signo.
- Signo
- Mantisa: es la parte que representa la magnitud
- Exponente: es la parte que representa el número de lugares que se va a desplazar
el punto decimal.
241.506.800 = 0,2415068 x 109
signo = 0 (positivo)
mantisa = 2415068
exponente = 9
Para los números en coma flotante binarios, el formato puede tener tres formas:
Simple precisión (32 bits)
Doble precisión (64 bits)
Precisión ampliada (80 bits)
Vamos a estudiar únicamente los de simple precisión
32 bits
S (E) Exponente (F) Mantisa (parte fraccionaria)
1
8
23
-
Realmente la mantisa consta de 24 bits, ya que en cualquier número binario, el bit
más a la izquierda (más significativo) es siempre 1. Por tanto, este 1 se entiende
que estará allí aunque no ocupe una posición de bit real.
-
Los 8 bits de los que consta el exponente representan un exponente desplazado
que se ha obtenido sumándole 127 al exponente real (exceso 127). De esta forma
podemos definir números muy grandes y muy pequeños.
-
Casos especiales:
o El valor -127 (00000000) del exponente se reserva para dos casos
especiales:
ƒ Si la mantisa es también cero, se está representando el cero.
ƒ Si la mantisa es distinta de cero, se trata de un número no
normalizado, es decir, supondremos que el bit implícito de la parte
entera o es 1 sino 0, y el exponente es -126
14
o El valor 128 (11111111) del exponente se reserva para dos casos especiales:
ƒ Si la mantisa es cero, se está representando el infinito.
ƒ Si la mantisa es distinta de cero, se está representando el resultado
de una operación inválida, es decir, el valor no es un número (NaN –
Not a Number)
3. Codificación de información en binario
3.1
Códigos binarios para números decimales. Código BCD 8421
De hecho, todos los sistemas estudiados hasta ahora: decimal, binario, octal y hexadecimal
son códigos con pesos, donde la posición de cada dígito tiene un peso igual a la base elevada a
la posición que ocupa.
Hemos visto que es muy fácil la conversión de binario a octal o hexadecimal o viceversa. Sin
embargo, no lo es tanto si queremos hacer la conversión a decimal al cual estamos más
acostumbrados, por ello podemos utilizar un sistema de fácil conversión al decimal, el BCD:
Binary Coded Decimal.
El código decimal binario es un código que permite expresar cada uno de los dígitos
decimales con un código binario.
En el BCD, existen diferentes códigos, de los cuales el más utilizado es el 8421, llamado así
porque utiliza 4 dígitos para representar los números decimales y el peso que se asigna a
cada uno de ellos es precisamente 8, 4, 2, 1 = 23, 22, 21, 20
A partir de ahora, nos referiremos siempre a este código por lo que tanto dará nombrarlo
como BCD o como 8421.
Con 4 dígitos se pueden representar 16 números: 0000 .. 1111 pero el código 8421 sólo utiliza
10 (0 .. 9), del 0000 al 1001
Decimal
0
1
2
3
4
5
6
7
8
9
8421
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
15
Para convertir a BCD un número decimal, basta con reemplazar cada dígito por los
correspondientes 4 bits. La operación contraria nos serviría para la conversión de BCD a
decimal.
35
2469
00110101
0010010001101001
Representación de los números en BCD con signo
Para la representación de los números en BCD con signo, estudiaremos dos posibilidades:
- Signo y magnitud
- Complemento a 10
Signo y magnitud:
- El signo se representa en una cadena de 4 bits.
- No nos interesa porque implica realizar la operación de resta.
Complemento a 10:
- Restar al número, la potencia de 10 correspondiente.
- Tiene que tener también un bit de signo.
0011110001001
789
1000
1 0 0 1 0 0 0 0 1 0 0 0 1 -789
-789
signo
211
3.2 Códigos alfanuméricos. Código ASCII
Para la comunicación, no sólo se necesitan números sino también letras y otros símbolos.
Los códigos alfanuméricos representan números y caracteres alfabéticos. Aunque la mayoría
de estos códigos también representan otros caracteres tales como símbolos y distintas
instrucciones necesarias para la transferencia de información.
Como mínimo un código alfanumérico debe representar los diez dígitos decimales y las 26
(27 en España) letras del alfabeto => 36 elementos.
25 = 32 -> necesitamos 6 bits 26 = 64, por lo que 28 (64 – 36) elementos no se utilizan. Pero
siempre hacen falta otros símbolos: punto, coma, interrogante, ...
16
Código ASCII: American Standard Code for Information Interchange.
Código alfanumérico universalmente aceptado, que se usa en la mayoría de las computadoras
y equipos electrónicos.
La mayor parte de los teclados se estandarizan de acuerdo con el código ASCII, y cuando se
pulsa una letra, un número o un comando de control, es el código ASCII el que se introduce
en el ordenador.
El código ASCII dispone de 128 caracteres que se representan mediante un código binario
de 7 bits, aunque realmente son 8 con el bit de más a la izquierda igual a cero. MSB = 0.:
-
Los primeros 32 caracteres son comandos no gráficos (no se imprimen ni salen por
pantalla) y son de control (CR, ESC, ...)
Decimal: 0 .. 31
binario: 00000000 .. 00011111
hexadecimal: 00 .. 1F
-
Los demás caracteres son símbolos gráficos que pueden imprimirse o mostrase por
pantalla, e incluyen las letras del alfabeto (mayúsculas y minúsculas), los diez
dígitos decimales, los signos de puntuación, y otros símbolos comúnmente
utilizados.
Decimal: 32 .. 127
binario: 00100000 .. 01111111
hexadecimal: 20 .. 7F
ASCII extendido: Además de los 128 caracteres ASCII estándar, existen otros 128
caracteres adicionales (MSB = 1) que fueron adoptados por IBM para utilizar en sus PC´s.
Debido a la popularidad del PC, estos caracteres especiales se han extendido a otras
aplicaciones, convirtiéndose en un estándar no oficial.
Los nuevos caracteres que van en decimal desde 128 a 255 o en hexadecimal de la 20 a FF,
están formados por:
-
Caracteres alfabéticos no ingleses (ñ, ...)
Símbolos no ingleses
Letras griegas
Símbolos matemáticos (±, ÷, ...)
Caracteres para gráficos
Caracteres gráficos de barras
Caracteres sombreados
17
3.3 Códigos para la detección de errores
En un sistema digital, la información se transmite mediante 0´s y 1´s, que equivale a subidas
y bajadas de tensión.
Estas señales eléctricas se pueden ver alteradas a causa de fallos físicos (subidas de
tensión , ruidos, ...), por lo que se producen diferencias entre los datos transmitidos y los
recibidos.
Para detectar un error de 1 bit es necesario que como mínimo añadamos 1 bit a los bits que
transmitimos.
Método de paridad para la detección de errores.
Muchos sistemas emplean 1 bit de paridad como medio para la detección de errores de 1 bit.
Cualquier grupo de bits contiene un número par o impar de 1´s.
Un bit de paridad se añade al grupo de bits para hacer que el número total de 1´s sea
siempre par (paridad par), o impar (paridad impar).
Un determinado sistema puede trabajar con paridad par o impar, pero no con ambas.
Paridad par: nº de 1´s par
Paridad impar: nº de 1´s impar
bit de paridad par
bit de paridad impar
00000
10001
10010
00011
10000
00001
00010
10011
Con este método sólo podemos detectar errores en un nº impar de bits.
Se suele utilizar en ASCII.
18
Descargar