Codificación de la Información
• Codificación:
– Transformación que representa los elementos de un
conjunto mediante los de otro, de forma tal que a cada
elemento del primer conjunto le corresponda un
elemento distinto del segundo.
• Código binario:
– Utilizado para representar información con dos estados:
“nivel lógico alto” 1 y “nivel lógico bajo” 0 ( 0,1).
• BIT:
– Unidad de información binaria
Codificación de la Información
• Byte: ( 8 bits)
– Número de bits necesarios para representar un
carácter.
• Múltiplos Byte:
– 1 Kilobyte (KB) = 210 bytes = 1024 bytes.=103
– 1 Megabyte (MB)= 220 bytes = 1048576 bytes=106
– 1 Gigabyte (GB)=230 bytes = 1073741824 bytes =109
– 1 Terabyte (TB)=240 bytes = 1012
– 1 Petabyte (PB) =250 bytes =1015
Tipos de Información
– Numérica.
z Enteros, Reales, Ordinales, complejos.
– Alfanumérica.
z Caracteres alfanuméricos {a,b,...z,A,B,...Z}
– Caracteres numéricos {0,1,....9}
– Caracteres especiales {(,),*,+,-,?,....}
– Caracteres de control { fin de línea, carácter de
sincronización, avance de página, ...}
– Caracteres gráficos { ¦ ,~,¦ ,¦ ,...}
– Gráfica.
z Vectoriales
Representación Posicional
…X3 X2 X1 X0 . X-1 X-2 X-3 …
N=...+X3*b3+X2*b2+X1*b1+X0*b0+X-1*b-1+X-2*b-2+X-3*b-3+...
– La base 10 es la que denominamos Decimal:
• Base 2 (b=2): Sistema binario. (0,1)
• Base 8 (b=8): Sistema octal. (0,1,...7)
• Base 16 (b=16): Sistema hexadecimal. (0,..,9,A,..,F)
Conversión de Base b a
Decimal
Multiplicar cada uno de los términos por
potencias crecientes de la base a partir de la
coma decimal y hacia la izquierda, y realizar
la suma de las operaciones. Si el número
posee parte fraccionaria, también se
multiplicarán los términos de la derecha de la
coma hasta el final, con potencias negativas.
Conversión de Decimal a Base b
a) Parte entera:
• Se divide por la base el número original, sin decimales
(parte entera), y se repite el procedimiento para los
cocientes que se obtienen. Los restos de estas divisiones y
el último cociente son las cifras buscadas (entre 0 y b-1). El
último cociente es el dígito más significativo, y el primer
resto el menos significativo.
Ejemplo: El número 77 en binario es: 1 0 0 1 1 0 1
Conversión de Decimal a Base b
b) Parte fraccionaria:
• Se multiplica por la base la parte fraccionaria del número
original, y se repite el procedimiento con las partes
fraccionarias de los números obtenidos. La secuencia de
dígitos que se obtienen es la representación en base b
buscada de la parte fraccionaria del número.
Ejemplo:El número 0.1875 en binario es : 0 , 0 0 1 1
Códigos Octal y Hexadecimal
Decimal Binario Hexadecimal
0 0000 0
Decimal Binario Octal 1 0001 1
0 000 0 2 0010 2
1 001 1 3 0011 3
2 010 2 4 0100 4
3 011 3 5 0101 5
4 100 4 6 0110 6
5 101 5 7 0111 7
6 110 6 8 1000 8
7 111 7 9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
Conversión de Códigos Octal
y Hexadecimal a Binario
Hay que tomar cada cifra en octal o
hexadecimal, buscar su equivalencia en
binario (sobre la tabla) y transcribirla
respetando el orden de las mismas.
• Ejemplos:
• 2 E 8 F (16 --> 0010 1110 1000 1111(2
• 3 0 6 5 (8 --> 011 000 110 101(2
Códigos de Entrada/Salida
–Símbolos alfanuméricos representados en forma binaria para
poder ser materializados en soporte informático.
– Para calcular el cardinal de ese conjunto nos basamos en que
» 2n son las posibles variaciones con repetición de 2
elementos binarios tomados de n en n.
– Por tanto, para representar un conjunto de m símbolos
requerimos un mínimo número de bits n dado por:
longitud de palabras del código=n >= log 2 (m)
Nota: log2 (m) = (log m / log 2)
Códigos de Entrada/Salida
Ejemplo:
– Se desea codificar en binario un conjunto de 10 símbolos.
¿Cuantos bits hacen falta ?
– n >= log2(10) --> n = 3.322 --> n =4
– Efectivamente 24 = 16 > 10, luego sobra código
– Se desea codificar en binario el conjunto de los símbolos
alfanuméricos a,b,...z,A,B,...Z y 0,1,..,9 que son un total de
72 símbolos. ¿Cuantos bits hacen falta?
– n >= log2(72) --> n = 6.199--> n =7
– Efectivamente 27 = 128 > 72, luego sobra código
Detección de Errores
z Normalmente en los ordenadores la información se
almacena, procesa y transfiere.
z En estos procesos se pueden producir errores.
z Estos errores son alteraciones de las secuencias
binarias originales que son convertidas en otras
distintas.
– Existen dos posibles objetivos en cuanto al manejo de
errores:
z Detección: Descubrir que ha existido algún/os error/es
con objeto de poder obrar en consecuencia.
z Corrección de los errores detectados.
Detección de Errores
– Para poder detectar y/o corregir errores, es necesario que
existan palabras de código no permitidas o no usadas en la
codificación.
• Si se usan todas las posibles palabras en un código, cualquier
error pasaría desapercibido.
Eficiencia de un código:(t)
Cociente entre el nº de símbolos que se representan realmente y
el nº de símbolos que se podrían representar.
Siempre se tiene que 0<=t<=1
Redundancia de un código R= (1-t )×100.
z Cuanto mayor es la redundancia menor es la eficiencia, y
viceversa.
Códigos de Paridad
• Código de paridad par: Consiste en que a un
código binario le añadamos un cero o un uno
de forma que el número total de unos sea
par.
• Código de paridad impar: Consiste en que a
un código binario le añadamos un cero o un
uno de forma que el número total de unos
sea impar
z Detectan un nº impar de errores
Detección y Corrección de
Errores en Códigos Binarios
¿Cómo se puede saber cuántos errores detecta/corrige
un código binario?
z Peso de Hamming de una palabra: nº de unos: pH
z Distancia de Hamming: nº de bits en que se
diferencian dos palabras :
dH = pH(palabra1 XOR palabra2)
z Distancia de Hamming de un código:
d=min(dH(todas las parejas de palabras))
z Capacidad detectora: d-1
z Capacidad correctora: (d-1)/2
Códigos de Entrada/Salida
Normalizados
– BCD de intercambio normalizado.
• Standard Binary Coded Decimal Interchange Code.
– EBCDIC
• Extended Binary Coded Decimal Interchange Code.
- FIELDATA.
– ASCII
• American Standard Code for Information Interchange.
Código
ASCII
z Es el más utilizado.
z Código binario de longitud
básica 7
z A veces se añade otro bit
más para:
z comprobar errores
mediante paridad, o
z para doblar el número
de caracteres
representables de 128
a 256 (y así añadir un
amplio conjunto de
caracteres gráficos,
por ejemplo, como es
el caso del PC).
Operaciones Aritméticas
• Tablas de operaciones:
• Suma aritmética Resta aritmética
•0+0=0 0-0=0
•0+1=1 0 - 1 = 1 (y debo 1)
•1+0=1 1-0=1
• 1 + 1 = 0 (y llevo 1) 1-1=0
• Multiplicación División
•0*0=0 0 : 0 = indeterminado
•0*1=0 0:1=0
•1*0=0 1 : 0 = infinito
•1*1=1 1:1=1
Operaciones Aritméticas
1011101 (93) 1011101 (93)
+ 1000101 (69 ) - 1000101 (69 )
--------------------- ----------------------
10100010 (162) 0011000 (24)
1101010 (106) 1101010 (106)
- 1010111 (87) x101 (5)
---------------------- ---------------------
0010011 (19 ) 1101010
0000000
1101010
-------------------------
1000010010 (530)
Casos particulares
z De la resta:
Cuando se intenta substraer un número mayor que el propio minuendo.
– Ejemplo:
1000101 (69 )
- 1011101 (93)
----------------------
1... 11101000 Resultado incorrecto.
z Del producto y la división:
Cuando el multiplicador o el divisor son potencias de base 2, el
producto y la división s epueden hacer desplazando el código binario
– Ejemplos:
• 10101,01012 x 102 = 101010,1012 (Multiplicación por 2)
• 10101002 : 102 = 1010102 (División por 2)
• 1101,10102 x 1002 = 110110,102 (Multiplicación por 4)
• 101011012 : 10000002 =10,1011012 (División por 64)
Representación Interna de la
Información
Los distintos tipos de datos numéricos se representan
mediante estándares universales de representación
interna:
z Enteros:
z Sin signo: Binario natural
z Con signo:
z Signo-magnitud
z Complemento a 1: C1
z Complemento a 2: C2
z En exceso
z Reales: En notación de coma flotante IEEE-754 con
simple o doble precisión.
Enteros con Signo:
Signo-Magnitud
El bit más significativo (el más a la izda.) indica el signo del número
(0 para positivo y 1 para negativo).
Los restantes bits indican el valor absoluto del nº en binario natural.
• Rango de representación = [-(2n-1-1),2n-1-1]
• Inconvenientes de esta representación:
– Existen dos ceros
– Antes de sumar o restar hay que comprobar el signo de los
operandos
0…0000 -0... 1000
1... 0001 -1... 1001
2... 0010 -2... 1010
3... 0011 -3... 1011
4... 0100 -4... 1100
5... 0101 -5... 1101
6... 0110 -6... 1110
7... 0111 -7... 1111
Enteros con Signo: Complemento a
1 y Complemento a 2
– Complemento a 1 (C1): Se utiliza el bit más significativo para el signo.
Nº positivo: Binario natural
Nº negativo: Complementar todos los bits del binario natural correspondiente al nº
en positivo
Ejemplo: +127 y -127 si n= 16 bits.
127= 0000 0000 0111 1111(2
-127 =1111 1111 1000 0000(2
Rango = [ -2 n- 1 +1, 2 n- 1-1 ] El cero posee doble representación.
• Complemento a 2 (C2): Se utiliza el bit más significativo para el signo.
Nº positivo: Binario natural
Nº negativo: Complementar todos los bits del binario natural correspondiente al nº
en positivo, y sumar 1. C2 = C1 + 1
Ejemplo: +127 y -127 si n= 16bits.
127 =0000 0000 0111 1111(2
-127 =1111 1111 1000 0001(2
Rango = [ -2 n- 1, 2 n- 1-1 ] El cero sólo posee una representación.
z Importante: Hay que indicar siempre la longitud del código
Enteros con Signo:
En exceso
Consiste en sumar al número a representar una
constante, denominada sesgo, y luego
representarlo en binario natural.
z Ejemplo: +127 y -127 con 16 bits y sesgo=
32768=215
127= 1000 0000 0111 1111(2
-127= 0111 1111 1000 0001(2
z Rango = [ -2 n-1, 2 n-1 -1 ]
z El cero es único.
Enteros con Signo
• Ejemplo de todos los tipos para 4 bits:
No C1 C2 Exceso
7 0111 0111 1111
6 0110 0110 1110
5 0101 0101 1101
4 0100 0100 1100
+0 0000 0000 1000
-0 1111 - -
-1 1110 1111 0111
-2 1101 1110 0110
-8 - 1000 0000
Representación de Datos
Reales
Para representar datos de tipo real se utiliza la notación
exponencial:
Cualquier número N se puede representar de la forma
N = M * BE
donde:
N = Número a representar.
M = Mantisa.
B = Base.
E = Exponente.
• Ejemplo: N= 5437,8932 = 5,4378932 * 10 3
Reales: Notación IEEE-754
– Estructura:
s, e, m: Signo, Exponente,Mantisa
– s: bit de signo: “0” para positivos “1” para negativos.
– m: con nm bits de mantisa. Define la precisión de los
datos que se almacenan. Se ajusta para que el primer
uno (el más significativo) esté justo a la izquierda de la
coma y no se incluya en la mantisa. En este caso se
denomina mantisa normalizada.
– e: con ne bits de exponente. Utiliza una representación
en exceso de 2ne-1-1. Se evita así almacenar el signo
del exponente.
Reales: Notación IEEE-754
Tamaños:
z Simple precisión (single):
nt=32, ne=8, nm =23 y Sesgo =127
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM
01 … 8 9 … 31
z Doble precisión (double):
nt=64, ne=11, nm=52 y Sesgo =1023
– Valor máximo representable: (2 - 2-nm)*2^(2 ne-1-1)
» Simple precisión: (+-) 4,4028 * 10 (+-)34
» Doble precisión: (+-) 2 * 10 (+-)307
Reales: Notación IEEE-754
Metodología de cálculo:
– Dado un número N:
1º Conversión a binario natural:(+-) ...n3n2n1n0 , n-1 n-2 n-3
2º Normalización a la forma (+-)1,mantisa * 2k
3º Codificación del exponente k en notación en exceso
con sesgo = 2ne-1-1
4º Representación binaria en la forma s,e,mantisa.
– donde s = (0 si + ó 1 si -).
– e, es el código en exceso del exponente
– m, es la mantisa normalizada
Reales: Notación IEEE-754
Pasar 53'2874 a notación IEEE 754 de 16 bits con
1 bit para el signo, 8 para el exponente y 7 para la mantisa.
1. Conversión a binario natural: 53'2874 = 110101'010010
2. Normalización del código binario natural, para lo que
desplazamos la coma +5 posiciones y obtenemos
1’10101010010
3. Codificación del exponente +5 en exceso de 2^(n-1)-1
luego +5 + 2^(n-1)-1=132= 10000100
4. Notación IEEE-754:
1. Para calcular el bit de signo, como en este caso es +, el bit
de signo es 0
2. Para obtener la mantisa se cogen los 7 bits siguientes a la
coma como Mantisa: 1010101
La notación IEEE-754 del número es: 0 10000100 1010101
Reales: Notación IEEE-754
¿Cuál es el valor decimal de 1 01111100
11000000000000000000000?
1. El bit de signo es 1: número negativo
2. El exponente en exceso de 127 es -3
3. La mantisa se corresponde con 1.11
4. Se desplaza la coma 3 a derecha y da
0.00111=1,75 *2-3
5. El valor final es -0,21875
Reales: Notación IEEE-754 con
Simple Precisión
0 00000000 00000000000000000000000 = 0
1 00000000 00000000000000000000000 = -0
0 11111111 00000000000000000000000 = Infinito
1 11111111 00000000000000000000000 = -Infinito
0 10000000 00000000000000000000000 = +1 * 2**(128-127) * 1.0 = 2
0 10000001 10100000000000000000000 = +1 * 2**(129-127) * 1.101 = 6.5
1 10000001 10100000000000000000000 = -1 * 2**(129-127) * 1.101 = -6.5
0 00000001 00000000000000000000000 = +1 * 2**(1-127) * 1.0 = 2**(-126)
0 00000000 10000000000000000000000 = +1 * 2**(-126) * 0.1 = 2**(-127)
0 00000000 00000000000000000000001 = +1 * 2**(-126) *
0.00000000000000000000001 = 2**(-149) (valor positivo más pequeño)
Desbordamiento
– Se puede producir cuando se operan dos datos y el
resultado excede la capacidad de almacenamiento
seleccionada.
• Overflow:
– Se produce cuando el número es muy grande y se
excede el límite máximo de almacenamiento.
• Underflow:
– Se produce cuando el número es muy pequeño y se
excede el límite mínimo de almacenamiento.
Precisión Finita
Cuando se opera con datos reales, se sabe que
se cometen errores con cada operación que se
realice.
• La precisión: Nº máximo de cifras que se deben
interpretar como significativas.
– En IEEE-754 está ligada directamente al número
de bits destinados para la mantisa.
– Ejemplos:
• Nº reales simple precisión 7 cifras.
• Nº reales doble precisión 16 cifras.