0% encontró este documento útil (0 votos)
61 vistas68 páginas

Unidad 1 - Codigos

Cargado por

Lautaro Gregorat
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
61 vistas68 páginas

Unidad 1 - Codigos

Cargado por

Lautaro Gregorat
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Unidad 1

Códigos
UNIDAD 1: Códigos

• Objetivos Específicos:
Introducir al alumno en los sistemas de códigos y en la
representación de números en distintos formatos.
• Contenidos:
• Definición de Código. Propiedades. Paridad.
• Detección y corrección de errores. Código de Hamming.
Código de Grey.
• Sistema de punto flotante. Representación de números
en formato ANSI de simple y doble precisión.
Representación según IEEE 754. Justificación. Uso de
formato BCD.
Que es un código
• La característica principal de las computadoras digitales es
que la información se encuentra codificada en binario.
• Podemos definir a la codificación en binario como una
aplicación o función :
f:A→Bn
entre el conjunto A de objetos a codificar y el conjunto Bn
con B={0,1}
Esto permite codificar un objeto del conjunto A por medio
de n bits, el objeto a se codifica por medio del número
binario f(a) de n bits. Dicho número se denomina palabra
código y n es la longitud de la palabra código
Códigos binarios

1 01 a 010

2 11 b 111
110
3 10 1 100
000
4 00 # 001
Códigos binarios

1 0

2 10

3 110

4 111
Una clasificación
Ponderados
C
de Longitud Fija
O Numéricos No Ponderados
D
I de Longitud Variable
G
O
S
Alfanuméricos
Códigos Numéricos
Códigos BCD (Binary Coded Decimal)
Decimal NATURAL AIKEN XS3
8421 2421
0 0000 0000 0011
1 0001 0001 0100
2 0010 0010 0101
3 0011 0011 0110
4 0100 0100 0111
REFLEJADOS
5 0101 1011 1000
6 0110 1100 1001
7 0111 1101 1010
8 1000 1110 1011
9 1001 1111 1100

Codifican los dígitos decimales por medio de cuatro dígitos


binarios. Puede ser ponderados (cada digito tiene un peso) como
por ejemplo el BCD Natural o el BCD Aiken, o no ponderados
como el exceso de 3 (XS3)
Códigos reflejados

• Los códigos BCD Aiken y XS3 se dicen reflejados


por que las palabras códigos correspondientes a
los dígitos binarios del 5 al 9, se obtienen
mediante el complemento a uno de las palabras
códigos del 4 al 0.
• Ejemplo:
BDC Aiken: 4= 0100 → 5 =1011
XS3: 2= 0101 → 7 =1010
Aritmética BCD Natural
Representación en binario Representación en BCD
• 9 = 1001 • 9 = 1001
• 10 = 1010 • 10 = 00010000
• 27=11011 • 27=00100111
• 0,5 = 0,1 • 0,5 = 0,0101
• 0,1 =0,00011… • 0,1 =0,0001

• Cuanto es 0,110 + 0,110? • Cuanto es 0,1 + 0,1?


0,0001 + 0,0001=0,002
• Cuanto es 9+8
1001+1000= 00010001(1110)!!
Código de Gray (Códigos Continuos)
Decimal Gray Deci Gray Decimal Gray
mal 0 0000
0 00
0 0 00 1 0001
1 01
1 0 01 2 0011
2 11
2 0 11 3 0010
3 10
3 0 10 4 0110
5 0111
4 1 10
6 0101
5 1 11
7 0100
6 1 01
8 1100
7 1 00
9 1101
10 1111
Dos números decimales se codifican
11 1110
con palabras códigos que difieren
12 1010
sólo en un bit. Un código de n+1
13 1011
bits se puede construir agregando un 14 1001
bit 0 al código de n bits y luego 15 1000
reflejando el código obtenido
Códigos Alfanuméricos
Códigos Alfanuméricos
• Permiten representar distintos caracteres imprimibles
(números, letras minúsculas y mayúsculas, signos de
puntuación ) y otro grupo de caracteres para controlar el
funcionamiento de impresoras, dispositivos de comunicación,
etc.)
• Los principalmente utilizados son:
• ASCII
– Creado en 1963 por el ANSI. Era un código de 7 bits
• EBCDIC
– Creado en 1981 por IBM. Extendió el código a 8 bits
(pagina código 437). Se incorporó mas tarde en la primera
computadora personal: la IBM-PC. Soporte para el español
• Unicode
– Código de 16 bits. Los 7 bits de menor peso son
equivalentes al ASCII. Usado por Java.
American Standard Code for Interchange of Information
EBCDIC
Detección y corrección de errores
Control de Errores
En la transmisión de información entre dispositivos
se producen errores originados por distintas causas.
Para corregirlos se emplean técnicas matemáticas
que se basan en el agregado de bits a los bits de
información.
Estos bits se denominan bits de paridad.
Dependiendo de la cantidad de bits de paridad
agregados podemos obtener códigos detectores o
correctores de errores.

Bits de Información (k) Bits de Paridad (p)

Bloque o palabra código de n bits


n=k+p
Código de Detección de errores
Chequeo de Paridad Simple
Decimal BCD PP PI
0 0000 0
1 0001 1
2 0010 1
3 0011 0
4 0100 1
5 0101 0
6 0110 0
7 0111 1
8 1000 1
9 1001 0

Códigos BCD con un bit de Paridad


• En el caso de paridad par el valor del bit de
paridad sumado (Suma sin acarreo o XOR)
a los bits de datos será igual a 0.

a b a + b [a ⊕ 𝒃]

0 0 0

0 1 1

1 0 1

1 1 0
Código de Paridad simple
• Se transmite el número 7 en BCD Natural.

0 0
1 1
1 1
Transmisión
1 1 sin Errores

0
0 0
1
1 1 Transmisión
1
1 1 con un Error
0
1 0
Código de Paridad simple
• Se quiere transmitir el número 7 en BCD Natural
con un bit de paridad par.
0 0 Transmisión
1 1 sin Errores
1 1 Chequeo de
1 1 Paridad
BPP 1 1

𝐵𝑃𝑃 = 𝑑3 ⊕ 𝑑2 ⊕ 𝑑1 ⊕ 𝑑0 = 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1
𝑃𝐶ℎ𝑞 = 𝑑3 ⊕ 𝑑2 ⊕ 𝑑1 ⊕ 𝑑0 ⊕ 𝐵𝑃𝑃 = 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 = 0
0
0 0 Transmisión
1
1 1 con un Error
1
1 1
0
1 0 ¡Cambia la Paridad!
1
BPP 1 1 = ERROR
𝑃𝐶ℎ𝑞 = 𝑑3 ⊕ 𝑑2 ⊕ 𝑑1 ⊕ 𝑑0 ⊕ 𝐵𝑃𝑃 = 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1
Capacidad de detección
• Que pasa en el ejemplo si se producen dos
errores?
• Y si se producen tres errores?

• Los códigos de simple paridad permiten


detectar un número impar de errores.
Códigos de Hamming
• Son un grupo de códigos de bloque que son
capaces de corregir un error.
• Consisten en agregar p bits de paridad a los k bits
de datos de manera que los primeros realizan
controles de paridad cruzada que permiten la
corrección de un error en cualquiera de las
posiciones de la palabra código transmitida.
• Són códigos (n,k) siendo n la longitud de la
palabra código y k la cantidad de bits del mensaje.
• Estudiaremos el caso típico del código (7,4)
Códigos de Hamming
• Para determinar la cantidad de bits paridad necesarios (p),
se deberá cumplir la siguiente fórmula:
2p ≥ p + k + 1.
• Luego para corregir un error para un mensaje de 4 bits
necesitamos 3 bit de paridad y las combinaciones binarias
resultantes nos indicarán en el receptor la posición del bit
con error o la ausencia del mismo.
p3 p2 p1 Bit con error
0 0 0 Sin errores
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
Códigos de Hamming
• Se designa la posición de cada bit con un número
decimal empezando con 1.
• Los bits de paridad se ubican en las posiciones que
son potencias de 2: 20=1 , 21= 2 , 22=4, etc.
p3 p2 p1
7 6 5 4 3 2 1

• De acuerdo a la tabla anterior:


– El bit p1 chequea los bits 1,3,5 y 7. Esto significa que la
paridad de estos cuatro bits debe ser cero (paridad par)
y por lo tanto el valor del bit p1 deberá generar la
paridad par en los bits chequeados.
– El bit p2 cheque los bits 2,3,6 y 7
– El bit p3 chequea los bits 4,5,6 y 7
7 6 5 4 3 2 1

1 0 1 p3 0 p2 p1 Mensaje
7 6 5 4 3 2 1

1 0 1 0 0 Calculamos p1
7 6 5 4 3 2 1

1 0 1 0 1 0 Calculamos p2
7 6 5 4 3 2 1

1 0 1 0 0 1 0 Calculamos p3
Palabra Código Transmitida
1 1 1 0 0 1 0 Palabra Código Recibida

Recalculando…
𝑐1 = 𝑏1 ⊕ 𝑏3 ⊕ 𝑏5 ⊕ 𝑏7 = 0 ⊕ 0 ⊕ 1 ⊕ 1 = 0 c3 c 2 c1
𝑐2 = 𝑏2 ⊕ 𝑏3 ⊕ 𝑏6 ⊕ 𝑏7 = 1 ⊕ 0 ⊕ 1 ⊕ 1 = 1 1 1 0
𝑐3 = 𝑏4 ⊕ 𝑏5 ⊕ 𝑏6 ⊕ 𝑏7 = 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1 6
Representación de números en
coma o punto flotante
Magnitudes Físicas
La recta de los reales

Los números reales están formados por los racionales


(fracciones) y los irracionales (π, ℯ ). Siempre es posible
encontrar un número entre dos consecutivos. Forman un
continuo.
Debido a que los datos numéricos en un computador
como hemos visto se representan en forma discreta con
una cantidad fija de bits (longitud de palabra), y los
números reales son un conjunto infinito no numerable
(continuo), la representación de los mismos implica un
compromiso entre rango y precisión o exactitud.
Entendemos por exactitud a la cantidad de dígitos
significativos utilizados para representar un número en
forma aproximada. La exactitud aumenta al disminuir el
error.
Llamamos precisión a la posición del digito significativo
ubicado mas a la derecha.
Esto nos plantea el interrogante de donde ponemos la
coma o el punto decimal?
La representación de los números racionales puede
ser exacta o no.
• Ejemplo 1:
11
= 5,510 = 5 ∙ 100 + 5 ∙ 10−1
2
11
= (101,1)2 = 1 ∙ 22 + 0 ∙ 21 + 1 ⋅ 20 + 1 ∙ 2−1
2

• Ejemplo 2:
1
= 0,110 = 0 ∙ 100 + 1 ∙ 10−1
10
1
= (0,00011001100…)2 = 1 ∙ 2−4 + 1 ∙ 2−5 + 0 ∙
10
2−6 + 0 ∙ 2−7 + 1 ∙ 2−8 + 1 ∙ 2−9 + ⋯

• Como se representa 1/310 ?


La representación de los números irracionales nunca
es exacta.
• Ejemplos :

2 = 1,414213…

π = 3,141592…

e = 2,7182818245…
Cual es la representación mas exacta del númeral pi?
𝜋 = 3,14
𝜋 = 3,1415 𝜋 = 3,14159265
𝜋 = 3,1416

Cual es la precisión?
Formato de coma fija o punto fijo.
• Como su nombre lo indica la coma se ubica en un
lugar predeterminado y se separa la parte entera de
la fraccionaria.
• El numero puede ser representado en cualquiera
de los formatos vistos anteriormente.

• Cual es el rango de representación de números enteros en


el formato de coma fija mostrado?
• Cual es la precisión?
• Cuales son los números decimales que podemos
representar?
• Cómo se relaciona la precisión con los números
representados?
5 bits para la parte entera 3 bits para la parte decimal
n= 5 p=3
• Cual es el rango de representación de números enteros en
el formato de coma fija mostrado?
• −(24 ) ≤ 𝑋 ≤ + (24 − 1); - 16 ≤ 𝑋 ≤ + 15
• Cual es la precisión?
−𝑝 −3 1
• 2 =2 = = 0,125
8
• Cuales son los números decimales que podemos
representar?
• +15,875; -16,875 el número decimal mas chico 0,125
• Cómo se relaciona la precisión con los números
representados?
• El número decimal mas chico es 0,125
Formato de coma o punto flotante.
Esta basada en la denominada notación científica. En notación
científica un número real se representa como:

∓ 𝑚 𝑥 10𝑒 con 1 ≤ m < 10


m se denomina significado (significand en ingles) o mantisa y
e se denomina exponente.
El exponente fija la posición final de la coma.
De la cantidad de dígitos de la mantisa depende la precisión en la
representación del número.
Ejemplos:
+127,12510 se representa como +1.27125 x 10 2

-0,00036510 se representa como -3.65 x 10−4


Velocidad de la luz en el vacío
299.792.458 m/s ~ 3 × 108 m/s
Número de Avogadro
6,022045 × 1023

Número Primo mas grande


277.232.917-1

Carga del electrón


-1,602 × 10-19 coulomb

Constante de Boltzmann
1,380649 × 10−23 J K−1
Formato de coma o punto flotante.
Pero…
+127,12510 se puede representar como:
+1.27125 x 10 2
+12.7125 x 10 1
+1271.25 x 10 -1
+12712.5 x 10 -2
+127125. x 10 -3
….

¡Hay muchas representaciones si la coma es flotante!


Formato de coma o punto flotante.
El concepto puede ser extendido a base 2 y en este caso un
número en punto flotante puede ser escrito como

∓ 𝑚 𝑥 2𝑒 con 1 ≤ m < 2
m = b0,b1b2b3…bp-1
La mantisa se representa en signo (0/1) y magnitud (m).
Ejemplos:
11
+
2
= (101,1)2 = +1,0112 ∙ 22

1
− = (0,00011001100…)2 = −1,100110011001100 … 2 ∙ 2−4
10
Formato de coma o punto flotante.
Pero…
+11,510 se puede representar en base 2 como:
+1,0112 ∙ 22
+10,112 ∙ 21
+101,12 ∙ 20
+1011,02 ∙ 2−1
….

¡Hay muchas representaciones si la coma es flotante!


Representación Normalizada.
• De todas las representaciones posibles se
elige aquella que tiene el primer bit antes de
la coma igual a 1, o sea 1,…..
• Esto permite que las representaciones
siempre tengan la mayor exactitud, es decir
la mayor cantidad de dígitos significativos.
• Esta representación se dice que es
normalizada
Tiny
(un sistema de coma flotante muy simple)

∓ (𝑏0 , 𝑏1 𝑏2 )2 x 2e

e = 1, 0, -1
b0 = 0 sólo si b1 y b2 son ceros que es la
representación del 0. ( No normalizado)
• Cual es la capacidad de representación que tiene este
sistema?
• Si consideramos la representación normalizada entonces
tenemos cuatro posibilidades para la mantisa
(considerando mantisa positiva):
I. 1,00
II. 1,01
III. 1,10
IV. 1,11
I. Hay 3 formas para el exponente:
1) 1,00 x 2 1 = 10,0 = 210
2) 1,00 x 2 0 = 1,00 = 110
3) 1,00 x 2 -1= 0,10 = 0,510
II. :
1) 1,01 x 2 1 = 10,1 = 2,510
2) 1,01 x 2 0 = 1,01 = 1,2510
3) 1,01 x 2 -1= 0,101 = 0,62510
III. Considerando el tercer caso:
1) 1,10 x 2 1 = 11,0 = 310
2) 1,10 x 2 0 = 1,10 = 1,510
3) 1,10 x 2 -1= 0,11 = 0,7510
IV. Considerando el ultimo caso:
1) 1,11 x 2 1 = 11,1 = 3,510
2) 1,11 x 2 0 = 1,11 = 1,7510
3) 1,11 x 2 -1= 0,111 = 0,87510

Gráficamente:
Números desnormalizados o subnormales
• El primer digito antes de la coma puede ser cero.
• Permite ampliar la capacidad de representación de
fracciones cercanas al cero.

• Para el sistema Tiny tenemos tres posibilidades:


1) 0.01 x 2 -1 = 0,001 = 0,125
2) 0,10 x 2 -1 = 0,010 = 0,25
3) 0,11 x 2 -1 = 0,011 = 0,375
Norma IEEE 754

Instituto de Ingeniería Electricista y Electrónica


Norma IEEE 754 (1985)
Precisión simple (32 bits)

s exponente (q) mantisa (p bits)

31 23 0

Formato Normalizado: (1) s1, m1m2...m p x2e


Norma IEEE 754 (1985)
Precisión simple (32 bits)
Mantisa
Representada en signo y magnitud.
El signo ocupa la posición 31 (0 = positivo, 1 = negativo).
La magnitud esta formada por 23 bits (0-22) mas un bit implícito.

Exponente
Representado con q = 8 bits y en exceso de (2𝑞−1 −1) (exceso de
127).
El exponente mas grande positivo es 11111110 (+127)
El exponente mas pequeño negativo es 00000001. (emin= 1 – emax =
1 - 127= - 126
Se reservan para casos especiales las combinaciones 0x00 y 0xFF
Ejemplo: Expresar en formato IEEE 754 precisión
simple el número decimal -9

1) Pasar el módulo o el valor del número a binario


9 =1001
2) Este número binario se puede expresar como 1001,0 x 20
3) Normalizar la mantisa:
Ubicar la coma de manera tal que el primer y único digito
entero sea igual a 1 y subir o bajar el exponente tantas
unidades como lugares corramos la coma
1,001 x 2+3
Como corremos la coma hacia la izquierda 3 posiciones
entonces aumentamos el exponente en 3 unidades.
Luego la mantisa normalizada es 1,001 y el exponente es +3
1,001 x 2+3
Ejemplo: Expresar en formato IEEE 754 precisión
simple el número decimal -9

5) La mantisa tiene 24 bits (23 + 1 bit implícito, pues como el


primer bit siempre es igual a 1 se lo sobreentiende y en
consecuencia no se lo pone.
6) La mantisa se representa en signo y magnitud. El primer bit
del formato es el bit de signo de la mantisa, En el ejemplo el
número es -9 o sea negativo. En consecuencia el primer bit
será 1
7) La magnitud 001 se rellena con ceros hasta completar los 23
dígitos.
Ejemplo: Expresar en formato IEEE 754
precisión simple el número decimal -9
8) El exponente se representa en exceso de 127, entonces
sumamos 127 al valor del exponente calculado en el paso 4
3 + 127 = 130
9) Convertimos a base 2 el exponente del paso anterior
utilizando 8 bits:
130 = 10000010

11000001000100000000000000000000
Ejercicio:
• Calcular el equivalente decimal de la siguiente
representación en coma flotante normalizada
IEEE 754 precisión simple.
01000001111000000000000000000000

01000001111000000000000000000000

01000001111000000000000000000000

01000001111000000000000000000000
Ejercicio:
01000001111000000000000000000000

1) Convertimos la expresión del exponente a base 10


10000011= 131
2) Como el exponente está en exceso, restamos 127
131 -127= +4
3) El signo de la mantisa es el primer bit, por lo tanto es
positivo
4) La mantisa tiene un bit implícito por lo tanto la mantisa
será
1,1100000….
5) El número expresado en coma flotante normalizado es:
+1,11000000.. x 24
Ejercicio:
01000001111000000000000000000000

6) Como el exponente es positivo corro la hacia la derecha


tantos lugares como su valor, en nuestro ejemplo 4. Luego
la expresión del punto anterior es el números binario
11100,00000…
7) Evaluamos el número binario en base 10
1x24 + 1x23 + 1x22 +0x21+0x20+0x2-1+0x2-2+…
8) El número decimal de la representación en coma flotante
del ejemplo es
+28
Norma IEEE 754
Overflow Underflow Underflow Overflow
negativo negativo positivo positivo

-xmin -xmax 0 + xmin + xmax

Exponente Mantisa Valor


0 0 0
0 !0 Número no normalizado
0,Mantisa x 2 E -126
1..254 1,Mantisa x 2 E-127
255 0 Infinito
255 !0 NaN
Números normalizados
• El número positivo normalizado mas grande
que se puede representar es:
0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Rango: ± 3,4 x 10 38
• El número positivo normalizado mas
pequeño que puede representar es:
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Precisión: ± 1,2 x10−38


Números Desnormalizados
• Ejemplo 1
2−127 = 0,12 x 2−126
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

• Ejemplo 2
2−149 = 0,00000…12 x 2−126 (22 ceros despues
de la coma)

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Norma IEEE 754
Precisión doble
s exponente (q) mantisa (p bits)

63 52 0

Formato Normalizado: (1) s1, m1m2...m p x2e

Mantisa representada en signo y magnitud.


El signo ocupa la posición 63 (0 = positivo, 1 = negativo).
La magnitud esta formada por 52 bits (0-51) mas un bit implícito.

Exponente representado en exceso 2 q-1 -1 , q = 11


( emax= +1023)
Microarquitectura del Procesador Intel 80486
Norma IEEE 754 -2008
• La representación de números decimales en
coma flotante con base 2 muchas veces es
inexacta y las operaciones pueden propagar los
errores.
• 1,2 en 32 bits precisión simple es en realidad:
1.2000000476837158203125

• Y su cuadrado: 1,2 x 1,2 :


1.440000057220458984375
Algunos famosos bugs…
• La primera versión del Procesador Pentium
(1994). En muy raras ocasiones, se podía
tener sólo tres dígitos de exactitud. Por
ejemplo el cociente: 8391667 / 12582905
podía dar 0,666869 en lugar de 0,666910
Un ejemplo de Mike Cowlishaw (IBM)

Se produce un error
de redondeo al
calcular el costo de
una llamada
telefónica con un 5%
de impuesto.
Si el calculo se
realiza en decimal el
resultado 0,735 es
redondeado en forma
correcta a 0,74
Mientras que si el
calculo es realizado
en coma flotante con
precisión doble se
produce un error que
redondea el resultado
a 0,73
• La representación en coma flotante no
puede ser usada en aplicaciones comerciales
o centradas en actividades humanas.
• No cumple con requerimientos legales y
financieros
• Los datos y la aritmética decimal es
dominante
• 55% de los datos en bases de datos son
decimales (y un 43% adicional son enteros,
muchas veces almacenados como enteros
decimales)
Norma IEEE 754-2008

También podría gustarte