unidad i

53
UNIDAD I 1.1 SISTEMAS DE NUMERACIÓN NO SIGNADO. En la tecnología digital se utilizan muchos sistemas de números. Los más comunes son los sistemas decimal, binario, octal y hexadecimal. El sistema decimal es sin duda el más conocido por nosotros ya que es una herramienta de uso cotidiano. Si analizamos algunas de sus características podremos entender mejor los demás sistemas de numeración. Sistema decimal. El sistema decimal se compone de diez números o símbolos. Estos 10 símbolos son 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; al utilizar estos símbolos como dígitos de un número podemos expresar cualquier cantidad. El sistema decimal, también conocido como sistema de base 10, es un sistema de valor posicional en el cual el valor de un digito depende de su posición. Consideremos el número decimal 453 10 . Sabemos que el digito 4 representa en realidad cuatro centenas, el 5 representa cinco decenas, y el 3 representa tres unidades. En esencia el cuatro porta el valor máximo de los tres dígitos; a este se le conoce como el digito más significativo (MSD). El número tres tiene el menor valor y se le denomina digito menos significativo (LSD). Lo anterior se puede resumir así:

Upload: diegoalcantar93

Post on 27-Nov-2015

22 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIDAD I

UNIDAD I

1.1 SISTEMAS DE NUMERACIÓN NO SIGNADO.

En la tecnología digital se utilizan muchos sistemas de números. Los más comunes son los sistemas decimal, binario, octal y hexadecimal.

El sistema decimal es sin duda el más conocido por nosotros ya que es una

herramienta de uso cotidiano. Si analizamos algunas de sus características podremos

entender mejor los demás sistemas de numeración.

Sistema decimal.

El sistema decimal se compone de diez números o símbolos. Estos 10 símbolos son

0, 1, 2, 3, 4, 5, 6, 7, 8, 9; al utilizar estos símbolos como dígitos de un número

podemos expresar cualquier cantidad.

El sistema decimal, también conocido como sistema de base 10, es un sistema de

valor posicional en el cual el valor de un digito depende de su posición.

Consideremos el número decimal 45310.

Sabemos que el digito 4 representa en realidad cuatro centenas, el 5 representa

cinco decenas, y el 3 representa tres unidades.

En esencia el cuatro porta el valor máximo de los tres dígitos; a este se le conoce

como el digito más significativo (MSD). El número tres tiene el menor valor y se le

denomina digito menos significativo (LSD).

Lo anterior se puede resumir así:

Page 2: UNIDAD I

Como vamos a representar cantidades en diferentes bases, es conveniente usar

subíndices para indicar la base a la que pertenecen.

La representación de las cantidades 199210 y 3,141610 (valor de pi, π) es:

199210 = 1*103+ 9*102+ 9*101+ 2*100 = 100010 + 90010 + 9010 + 210.

3,141610 = 3*100+ 1*10-1+ 4*10-2+1*10-3+ 6*10-4 = 3 + 0,1 + 0,04 + 0,001 + 0,0006.

(Notar las potencias negativas 10-1 =0,1, 10-2 = 0,01, 10-3 =0,001 y 10-4 = 0,0001).

Desafortunadamente, el sistema numérico decimal no se presta para una

implantación conveniente en sistemas digitales.

En el sistema binario solamente hay dos símbolos o posibles valores digitales, el

cero y el 1. No obstante este sistema de base 2 se puede utilizar para representar

cualquier cantidad que se pueda denotar en decimal u otros sistemas numéricos.

En general se necesitaran muchos dígitos para expresar una cantidad determinada.

El Sistema Binario: Es el sistema de numeración que utiliza internamente el hardware

de las computadoras actuales. Se basa en la representación de cantidades utilizando

los dígitos 1 y 0. Por lo tanto, su base es 2.

Cada dígito de un número representado en este sistema se denomina bit (Contracción

de las palabras en inglés binary digit).

Conversión Decimal a Binario: Para convertir números enteros de decimal a binario,

la forma más simple es dividir sucesivamente el número decimal y los cocientes que

se van obteniendo entre 2, hasta que el cociente en una de las divisiones se haga 0.

La unión de todos los residuos obtenidos escritos en orden inverso nos proporciona el

número equivalente expresado en el sistema binario.

Ejemplos:

Convertir el número decimal 1010 a binario.

Page 3: UNIDAD I

Convertir el número decimal 199210 a binario.

Convertir el número decimal 8610 a binario.

Conversión de Binario a Decimal.

Para determinar su equivalente en el sistema decimal simplemente se toma en

cuenta la suma de los productos de cada valor digital (0 o 1) por su valor posicional.

Page 4: UNIDAD I

Ejemplo:

o Convertir a número decimal el número binario 1010112.

1 0 1 0 1 12

1 * 20 = 110

1 * 21 = 210

0 * 22 = 010

1 * 23 = 810

0 * 24 = 010

1 * 25 = 3210

Suma 4310

Solución 1010112 = 43 10

El Sistema Octal: Es un sistema de numeración cuya base es 8 y utiliza para la

representación de cantidades, los siguientes símbolos:

0, 1, 2, 3, 4, 5, 6, 7.

Este sistema también es de los llamados posiciónales y la posición de sus cifras se

mide con relación a la coma decimal que en caso de no aparecer se supone

implícitamente a la derecha del número.

La aritmética en este sistema es similar a la de los sistemas decimal y binario, por lo

tanto entraremos en su estilo.

Ejemplo 1:

¿Qué número decimal representa el número octal 47018?

Un numero octal por tanto puede convertirse fácilmente en su equivalente decimal

multiplicando cada digito octal por su valor posicional.

4*83 + 7*82 +0*81 +1*80= 2048+ 448+ 0+ 1= 249710.

Ejemplo 2:

¿Qué número decimal representa el número octal 3728?

3728 = 3 x (82) + 7 x (81)+ 2 x (80)

= 3 x 64 + 7 x 8 + 2 x 1

= 250 10

Page 5: UNIDAD I

Ejemplo 3:

¿Qué número decimal representa el número octal 24,68?

Nota. Las fracciones las separaremos con coma y no por punto.

24,68 = 2 x (81) + 4 x (80)+ 6 x (8-1)

= 2 x (8) + 4 x (1)+ 6 x (0,125)

=20,7510.

Conversión de decimal a octal.

Un entero decimal se puede convertir en octal mediante el uso del mismo método de

división repetida que se usó en la conversión decimal a binario, pero con un factor de

división de 8 en lugar de 2.

Ejemplo.

¿Qué número octal representa el número decimal 26610?

266 / 8 = 33 + residuo de 2

3 3/ 8 = 4 + residuo de 1 Resultado

4 / 8 = 0 + residuo de 4 …………………………….26610= 4128

Note que su primer residuo se transforma en el digito menos significo (LSD) del

número octal y el ultimo residuo se convierte más significativo (MSD).

Conversión de octal a binario.

La ventaja principal del sistema numérico octal es la facilidad con la cual puede

realizarse la conversión entre números binarios y octales.

La conversión de octal a binario se lleva a cabo convirtiendo cada digito octal en su

equivalente binario de tres bits.

Los ocho dígitos posibles se convierten como se indica en la siguiente tabla.

Octal 0 1 2 3 4 5 6 7

Binario 000 001 010 011 100 101 110 111

Por medio de estas conversiones cualquier digito octal se convierte en binario

convirtiéndolo de manera individual.

Page 6: UNIDAD I

Ejemplo.

Convertir el número octal 4728 a binario (usar 3 bits para representar cada cifra):

4 7 2

100 111 010

Por tanto el numero octal 4728 es equivalente al binario 1001110102.

Conversión de binario a octal.

La conversión de enteros binarios en octales es simplemente la operación inversa del

proceso anterior.

Los bits del número binario se conjuntan en grupos de tres comenzando por el LSB.

Luego cada grupo se convierte en su equivalente octal.

Primer caso.

Ejemplo.

Para ilustrar lo antes dicho, consideremos la conversión de 1001110102 en octal.

1 0 0 1 1 1 0 1 0

4 7 2 8

Segundo caso.

Algunas veces el número binario no tendrá grupos de 3 bits. En esos casos podemos

agregar uno o dos ceros a la izquierda del MSB del número binario a fin de completar

el último grupo.

Ejemplo.

Para ilustrar lo antes dicho, consideremos la conversión de 110101102 en octal.

0 1 1 0 1 0 1 1 0

3 2 68

Note el cero agregado para completar el grupo de 3 bits.

Page 7: UNIDAD I

Teorema Fundamental de la Numeración (TFN).

Se trata de un teorema que relaciona una cantidad expresada en cualquier sistema de

numeración con la misma cantidad expresada en el sistema decimal.

Ejemplo: Supongamos la cantidad 201,13 expresada en el sistema de numeración de

base tres que utiliza los dígitos para la representación de cantidades 0, 1 y 2 ¿Cuál

será la representación de la misma cantidad en el sistema decimal?

201,13 = 2*32+ 0*31+ 1*30+ 1*3-1 = 18+0+1+0,333=19,33310.

Recordar que usamos la coma decimal, en lugar del punto.

El Sistema Hexadecimal: Es un sistema posicional de numeración en el que su base

es 16, por tanto, utilizará 16 símbolos para la representación de cantidades. Estos

símbolos son:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Se le asignan los siguientes valores absolutos a los símbolos A, B, C, D, E, F:

SIMBOLO VALOR

ABSOLUTO

A 10

B 11

C 12

D 13

E 14

F 15

La conversión de hexadecimal a decimal es similar a las conversiones anteriores.

Ejemplo 1: ¿Qué número decimal representa el número hexadecimal 2CA16 utilizando

el TFN (Teorema Fundamental de la Numeración)?

Page 8: UNIDAD I

2*162+ C*161+ A*160= 2*162+ 12*161+10*160= 51210+19210+1010= 71410.

Ejemplo 2: ¿Qué número decimal representa el número hexadecimal 35616 utilizando

el TFN (Teorema Fundamental de la Numeración)?

35616= 3 x 162 + 5 x 161 + 6 x 160

=76810 + 8010 + 610

= 85410.

Conversión de decimal a hexadecimal.

Recordemos que efectuamos la conversión de decimal a binario por medio de la

división repetida por dos y de decimal a octal por medio de la división repetida por 8.

De igual manera la conversión de decimal a hexadecimal se puede efectuar por

medio de la división repetida por 16.

Ejemplo 1.

Convierta el número decimal 42310 a hexadecimal.

Solución:

423 /16 = 26 + residuo de 710 …………………716

26 / 16 = 1 + residuo de 1010 ………….….A16 Resultado

1 /16 = 0 + residuo de 1 ………………..116

Respuesta 42310= 1A716

Ejemplo 2.

Convierta el número decimal 21410 a hexadecimal.

Solución.

214 /16 =13 + residuo de 610…….…….616

Resultado

13 /16 = 0 + residuo de 1310…………….D16

Page 9: UNIDAD I

Respuesta 21410 = D616.

Conversión de hexadecimal a binario.

Al igual que el sistema numérico octal, el sistema hexadecimal se usa principalmente

para abreviar la representación de números binarios. Es una tarea relativamente

simple convertir un número hexadecimal a binario.

Cada digito hexadecimal se convierte en su equivalente binario usando 4 bits.

Ejemplo.

Convertir el número hexadecimal 9F216 a binario (usar 4 bits para representar cada

cifra).

9 F 216 = 9 F 2

1001 1111 0010

Por lo tanto: 9F216 = 1001111100102.

Conversiones de binario a hexadecimal.

Esta conversión es exactamente la operación reciproca del proceso anterior. El

número binario se agrupa en conjunto de cuatro bits y cada grupo se convierte en su

digito hexadecimal equivalente.

Ejemplo.

Convertir el número binario 1011101001102 a hexadecimal.

1110 1010 610

1011101001102 = 1011 1010 0110

B16 A16 616

Page 10: UNIDAD I

= BA616

1.2 CONVERSIÓN DE SISTEMA DECIMAL A CUALQUIER BASE.

Este tipo de conversión se utiliza para cambiar un número N de base 10 a cualquier otra base (b). Para ello, se deben realizar dos pasos por separado:

1. Convertir la parte entera del número N10, dividiéndola, sucesivamente, entre b, hasta obtener un cociente más pequeño que b. La parte entera del número que estamos buscando lo compondrá el último cociente y los restos que se hayan ido obteniendo, tomados en orden inverso.

2. Convertir la parte fraccionaria del número N10, multiplicándola, repetidamente, por b, hasta obtener un cero en la parte fraccionaria o hasta que se considere oportuno, ya que, puede ser que el cambio de base de una fracción exacta se convierta en una fracción periódica. La parte fraccionaria del número buscado lo formarán las partes enteras de los números que se hayan ido obteniendo en cada producto, tomados en ese mismo orden.

Ejemplo1.

Para convertir el número 13,312510 a base 2, en primer lugar hay que dividir, sucesivamente, la parte entera del número, en este caso (1310), entre 2, hasta obtener un cociente más pequeño que 2.

13 L 2 1 6 L 2 0 3 L 2 1 1 L 2 1

Como el último cociente vale 1, ya es más pequeño que el divisor 2, tenemos que parar de dividir. Por tanto,

1310 = 11012

El segundo paso consiste en convertir la parte fraccionaria del número (0,312510). Para ello, se deben realizar los siguientes cálculos:

0,3125 x 2 = 0,625

0,625 x 2 = 1,25; seguimos trabajando solo con la parte fraccionaria.

0,25 x 2 = 0,5

0,5 x 2 = 1,0; terminamos porque la parte fraccionaria es cero

La parte fraccionaria desaparece después de realizar cuatro multiplicaciones. Así pues,

Page 11: UNIDAD I

0,312510 = 0,01012. Recuerde que usamos la coma en lugar del punto.En resumen.

13,312510 = 1101,01012.

Para comprobar si los cálculos están bien hechos, podemos realizar la conversión inversa, es decir, podemos pasar el número 1101,01012 a base 10. De manera que, usando el TFN los cálculos son:

1101,01012 = 1 * 23 + 1 * 22 + 0 * 21 + 1* 20 + 0 * 2-1 + 1 * 2-2 + 0 * 2-3 + 1 * 2-4 =

= 8 + 4 + 0 + 1 + 0 + 0,25 + 0 + 0,0625  = 13,312510.

1101,01012 = 13,312510.

Ejemplo 2.

Convertir: 220,910 a binario.

Para la parte entera tenemos:

Dando como resultado de la parte entera: 220D = 11011100B.

Posteriormente se procede a realizar las operaciones para la parte fraccionaria para pasarlo a binario.

0,9x2=1,80,8x2=1,60,6x2=1,20,2x2=0,4 Observa cómo se vuelve a repetir esta cantidad.0,4x2=0,80,8x2=1,6

Lo anterior implicaría que tenemos una fracción periódica (nunca termina).Quedando la parte fraccionaria de la siguiente manera:

0,9D=0,111001B

Page 12: UNIDAD I

Dando como resultado total:

220,9D=11011100,111001B

Para comprobar pasaremos el resultado obtenido en el Sistema Binario al Sistema Decimal.

11011100,111001B= 11011100B + 0,111001B

Entero fracción

Convirtiendo la parte entera a decimal queda de la siguiente forma:

11011100=0 x20+0 x 21+1 x 22+1 x23+1 x24+0 x25+1 x26+1 x27

= 4 + 8 + 16 + 64 + 128

= 22010.

Para comprobar la parte fraccionaria obtenida en el Sistema Binario al Sistema Decimal, tenemos:

0,111001=1 x2−1+1 x 2−2+1x 2−3+0 x2−4+0 x2−5+1 x 2−6

¿1

21+ 122

+ 123

+ 024

+ 025

+ 126

=0,5+0,25+0,125+ 0,015625

=0,890625 ≈0,9

1.3 CONVERSIÓN DE CUALQUIER BASE A SISTEMA DECIMAL.

Page 13: UNIDAD I

Si se tiene un número en base n, por ejemplo 1637(base 7), el proceso para convertirlo

a base decimal es el siguiente:

Entonces 163(7) equivale a 9410 en base decimal.

Ejemplo.

Aplicar este proceso para convertir el número binario 10012 a decimal.

Entonces 1001(2) equivale a 910 en base decimal.

Este método es útil para números grandes, ya que para números pequeños se puede

utilizar el cálculo mental según las potencias de la base, como se explicó

anteriormente. De ser los números muy grandes, habría que conocer las tablas de

multiplicar de las diferentes bases, lo que resultaría tedioso. De ahí la utilización de

éste sencillo método de multiplicaciones y sumas.

De todos modos, es altamente recomendable conocer las tablas de multiplicar del 2,

del 8, y del 16; debido al amplio uso que se le da a éstos sistemas en informática y

sistemas de computación.

1.3 RELACIÓN ENTRE LOS SISTEMAS BINARIOS, OCTAL Y

HEXADECIMAL.

Los sistemas octal y hexadecimal son la abreviatura de los sistemas binarios,

es decir, representarlos de forma más compacta.

Page 14: UNIDAD I

Ejemplo 1.

Convertir el numero binario 101101112 a octal y hexadecimal.

Número en binario convertido a grupos de 3: 010 110 111

Cero agregado

Equivalente en base ocho 2 6 7

Resultado: 101101112 = 2678 = 267O (octal)

Número en binario convertido a grupos de 4: 1011 0111

Equivalente en base dieciséis B 7

Por lo tanto 101101112 = 2678 = B7!6.

Comprobación.

101101112 = 1 + 2 + 4 + 16 + 32 + 128 = 18310.

2678 = 7 + 6 x 8 + 2 x 64 = 7 + 48 + 128 = 18310.

B716 = 7 + 11 x 16 = 7 + 176 = 18310.

Ejemplo 2.

Convertir el numero hexadecimal 9B16 a binario y octal.

Donde 916 = 10012 y B16 = 10112. Por lo tanto 9B16 = 100110112.

100110112 010 011 011

2 3 3 Equivalente octal.

Por lo tanto: 9B16 = 100110112 = 2338.

Comprobación.

9B16 = 11 + 9 x 16 = 11 + 144 = 15510.

100110112 = 1 + 2 + 8 + 16 + 128 = 15510.

Page 15: UNIDAD I

2338 = 3 + 3 x 8 + 2 x 64 = 3 + 24 + 128 = 15510.

Ejemplo 3.

Convertir el número octal 3578 a binario y hexadecimal.

Donde 38=0112, 58=1012 y 78= 1112.

3578 = 0111011112.

Dado que 3578 = 0111011112, reagrupándolos en grupos de 4 bits, tenemos:

11102 = E16 y 111116 = F16. El cero que está a la izquierda no se toma en cuenta.

Por lo tanto 3578 = 0111011112 = EF16.

Comprobación.

3578 = 7 x 80 + 5 x 81 + 3 x 82 = 7 x 1 + 5 x 8 + 3 x 64 = 7 + 40 + 192 = 23910.

111011112 = 1x20 + 1x21 + 1x22 + 1x23 + 0x24 + 1x25 + 1x26 + 1x27

= 1 + 2 + 4 + 8 + 0 + 32 + 64 + 128.

= 23910.

EF16 = F x 160 + E x 161

= 15 x 1 + 14 x 16

= 15 + 224

= 23910. 1.5 SISTEMAS DE NUMERACIÓN SIGNADO.

En los apartados anteriores solo vimos números no signados (positivos), pero en la

práctica nos encontramos con números negativos, por lo cual veremos los

complementos a 1 y 2.

Page 16: UNIDAD I

i. Complemento a dos.

El complemento a dos de un número N, compuesto por n bits, se define como:

C2N = 2n – N.

Veamos un ejemplo: tomemos el número N = 4510 = 1011012, que tiene 6 bits, y calculemos su complemento a dos:

N = 4510;    n = 610;    26 = 6410    y, por tanto: C2N = 6410 – 4510 = 1910 = 0100112.

ii. Complemento a uno.

El complemento a uno de un número N, compuesto por n bits es, por definición, una unidad menor que el complemento a dos, es decir:

C1N = C2N – 1.

Y, por la misma razón:

C2N = C1N + 1.

Calculemos el complemento a uno del mismo número del ejemplo anterior:

Siendo N = 4510 = 1011012, y su complemento a dos C2N = 0100112

C1N = C2N – 1 = 0100112 – 0000012 = 0100102

C1N = 0100102

Da la sensación de que calcular el complemento a uno no es más que una forma elegante de complicarse la vida, y que no va a ser más sencillo restar utilizando el complemento a dos, porque el procedimiento para calcular el complemento a dos es más difícil y laborioso que la propia resta. Pero es mucho más sencillo de lo que parece.

En realidad, el complemento a uno de un número binario es el número resultante de invertir los UNOS y CEROS de dicho número.

Por ejemplo si:

  N = 1101001012.

Obtenemos su complemento a uno invirtiendo ceros y unos, con lo que resulta:

C1N = 0010110102.

Page 17: UNIDAD I

Y su complemento a dos es:

C2N = C1N + 1 = 0010110102 + 1 = 0010110112.

Ejemplo de cálculo de complementos a uno y dos. Sea:

N = 01101101012.

El complemento a uno es (invierte ceros y unos):

C1N = 10010010102.

Y el complemento a dos es (súmale 1):

C2N = 10010010112.

Representación de números enteros con signo.

Existen tres representaciones que han sido usadas para manejar internamente números enteros con signo en las computadoras digitales. Estas son:

Magnitud y signo.

Complemento a 1 (complementos a la base disminuida).

Complemento a 2 (complemento a la base).

La más sencilla de las tres es la representación en magnitud y signo; sin embargo, es la que ocasiona mayores problemas al realizar operaciones aritméticas. Esta representación fue usada en las primeras computadoras digitales pero en la actualidad ha caído en desuso.

Las dos representaciones que usan complemento permiten efectuar operaciones aritméticas con relativa facilidad, esto ha contribuido a que ambas hayan sido adoptadas en las computadoras actuales, siendo la representación en complemento a 2 la más usada. A continuación se muestra esto.

Ejemplo.

Considere el número decimal +15 empleando un bit más para su representación (magnitud y signo).

+1510 = 011112, si se pone un cero a su izquierda no altera su valor y permite representar el signo +.

Si realizamos su complemento a uno tenemos;

011112 complemento a uno 100002

Page 18: UNIDAD I

Como se observa el bit del signo ha cambiado, por lo que se trata del -1510, esto es:

-1510 = -011112 = 100002, si realizamos su complemento a uno nuevamente tenemos:

100002 complemento a uno 011112 = +1510.

Considere nuevamente el número decimal +15 empleando un bit más para su representación, pero ahora utilizando complemento a dos.

+1510 = 011112 complemento a uno 100002, sumarle 1 para complemento a 2.

+1510 = 011112 complemento a dos 100012.

Como se observa el bit del signo también ha cambiado, por lo que se trata del -1510, en complemento a 2, es decir:

-1510 = -011112 = 100012, si realizamos su complemento a dos nuevamente tenemos:

100012 complemento a uno 011102, sumarle 1 para complemento a 2 011112.

Obteniendo, el +15 = 011112.

En conclusión el complemento a uno y dos nos permiten obtener respectivamente los números negativos a partir de los positivos y viceversa, donde el MSB representa el signo, de acuerdo a lo siguiente:

0 representa los positivos, y el 1 representa los negativos.

1.6 ARITMÉTICA BINARIA Y HEXADECIMAL.

La Unidad Aritmético Lógica, en la CPU del procesador, es capaz de realizar operaciones aritméticas, con datos numéricos expresados en el sistema binario. Naturalmente, esas operaciones incluyen la adición, la sustracción, el producto y la división. Las operaciones se hacen del mismo modo que en el sistema decimal, pero debido a la sencillez del sistema de numeración, pueden hacerse algunas simplificaciones que facilitan mucho la realización de las operaciones.

Suma en binario.

Page 19: UNIDAD I

Para aprender a sumar, con cinco o seis años de edad, tuviste que memorizar las 100 combinaciones posibles que pueden darse al sumar dos dígitos decimales. La tabla de sumar, en binario, es mucho más sencilla que en decimal. Sólo hay que recordar cuatro combinaciones posibles:

+ 0 1

0 0 1

1 1 0 + 1

Las sumas 0 + 0, 0 + 1 y 1 + 0 son evidentes:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

Pero la suma de 1+1, que sabemos que es 2 en el sistema decimal, debe escribirse en binario con dos cifras (10) y, por tanto 1+1 es 0 y se arrastra una unidad, que se suma a la posición siguiente a la izquierda. Veamos algunos ejemplos:

Ejemplo 1.

Sumar los números binarios 1001002(3610) y 100102(1810).

1001002……………. 3610

+ 0100102 …………..1810

1101102…………….5410

Se observa que no se ha tenido ningún acarreo en las sumas parciales.

Ejemplo 2.

Sumar 110012 (2510) y 100112 (1910).

Ejemplo 3.

Sumar 12510 =125D = 11111012 = 1111101B y 8610 = 86D = 10101102 = 1010110B.

Page 20: UNIDAD I

Observar que se puede usar el subíndice 10 o D para el decimal y el subíndice 2 o B

para el binario.

125D………………………………1111101B

+ 86D………………………………1010110B

211D……………………………. 11010011B

Otros ejemplos.

0102 + 1012 = 1112 210 + 510 = 710

0011012 + 1001012 = 1100102 1310 + 3710 = 5010

10110112 + 10110102 = 101101012 9110 + 9010 = 18110

1101110112+ 1001110112 = 10111101102 44310 + 31510 = 75810

Sustracción en binario.

La técnica de la resta en binario es, nuevamente, igual que la misma operación en el sistema decimal. Pero conviene repasar la operación de restar en decimal para comprender la operación binaria, que es más sencilla. Los términos que intervienen en la resta se llaman minuendo, sustraendo y diferencia.

- 0 1

0 0 1

1 1 + 1 0

Las restas 0 - 0, 1 - 0 y 1 - 1 son evidentes:

0 – 0 = 01 – 0 = 11 – 1 = 0

La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 10 - 1, es decir, 210 – 110 = 1.  Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. Veamos algunos ejemplos:

1112 – 1012 = 0102 710 – 510 = 210

100012 – 010102 = 001112 1710 – 1010 = 710

110110012 – 101010112 = 001011102 21710 – 17110 = 4610

1111010012 – 1011011012 = 0011111002 48910 – 36510 = 12410

Page 21: UNIDAD I

A pesar de lo sencillo que es el procedimiento de restar, es fácil confundirse. Tenemos interiorizado el sistema decimal y hemos aprendido a restar mecánicamente, sin detenernos a pensar en el significado del arrastre. Para simplificar las restas y reducir la posibilidad de cometer errores hay varias soluciones:

Dividir los números largos en grupos. En el siguiente ejemplo, vemos cómo se divide una resta larga en tres restas cortas:

        1001100111012         1001    1001    1101

      - 0101011100102       - 0101       0111       0010

        0100001010112         0100    0010    1011

Restar en binario usando el complemento a uno.

Y, por fin, vamos a ver cómo facilita la resta el complemento a uno. La resta binaria de dos números puede obtenerse sumando al minuendo el complemento a uno del sustraendo. Veamos algunos ejemplos:

Primer ejemplo:

Segundo ejemplo:

Restar en binario usando el complemento a dos.

Ahora utilizaremos el complemento a 2, que es el que emplea la tarjeta JM60 que usaremos en el curso.

Primer ejemplo:

Page 22: UNIDAD I

Segundo ejemplo:

Otros ejemplos de complemento a dos.

Hagamos la siguiente resta, 9110 – 4610 = 4510, en binario:

10110112 – 01011102 = 01011012

Tiene alguna dificultad, cuando se acumulan los arrastres a la resta siguiente. Pero esta misma resta puede hacerse como una suma, utilizando el complemento a dos del sustraendo:

En el resultado de la suma nos sobra un bit, que se desborda por la izquierda. Pero, como el número resultante no puede ser más largo que el minuendo, el bit sobrante se desprecia.

Hagamos esta otra resta, 21910 – 2310 = 19610, utilizando el complemento a dos:

Page 23: UNIDAD I

21910 = 110110112

2310 = 000101112

C2 de 23 = 11101001

El resultado de la resta será: 110110112 + 111010012 = 1110001002.

Despreciando el bit que se desborda por la izquierda, llegamos al resultado correcto:

110001002 = 19610.

Multiplicación binaria.

La multiplicación en binario es más fácil que en cualquier otro sistema de numeración. Como los factores de la multiplicación sólo pueden ser CEROS o UNOS, el producto sólo puede ser CERO o UNO. En otras palabras, las tablas de multiplicar del cero y del uno son muy fáciles de aprender:

x 0 1

0 0 0

1 0 1

En un ordenador, sin embargo, la operación de multiplicar se realiza mediante sumas repetidas. Eso crea algunos problemas en la programación porque cada suma de dos UNOS origina un arrastre, que se resuelven contando el número de UNOS y de arrastres en cada columna. Si el número de UNOS es par, la suma es un CERO y si es impar, un UNO. Luego, para determinar los arrastres a la posición superior, se cuentan las parejas de UNOS.

Veamos, por ejemplo, una multiplicación:

1310

334910

4353710

Page 24: UNIDAD I

Para comprobar que el resultado es correcto, convertimos los factores y el resultado al sistema decimal:

334910 * 1310 = 4353710.

División binaria.

Igual que en el producto, la división es muy fácil de realizar, porque no son posibles en el cociente otras cifras que UNOS y CEROS. Consideremos el siguiente ejemplo, 42 ÷ 6 = 7, en binario:

Se intenta dividir el dividendo por el divisor, empezando por tomar en ambos el mismo número de cifras (101 entre 110, en el ejemplo). Si no puede dividirse, se intenta la división tomando un dígito más (1010 entre 110).

Si la división es posible, entonces, el divisor sólo podrá estar contenido una vez en el dividendo, es decir, la primera cifra del cociente es un UNO. En ese caso, el resultado de multiplicar el divisor por 1 es el propio divisor. Restamos las cifras del dividendo del divisor y bajamos la cifra siguiente.

El procedimiento de división continúa del mismo modo que en el sistema decimal.Aritmética hexadecimal.

En el sistema hexadecimal, al igual que en el sistema decimal, binario y octal, se pueden hacer diversas operaciones matemáticas. Entre ellas se encuentra la resta entre dos números en sistema hexadecimal, la que se puede hacer con el método de complemento a 15 o también utilizando el complemento a 16. Además de éstas, deberemos manejar adecuadamente la suma en sistema hexadecimal, explicada a continuación:

Suma.

La adición de los números hexadecimales se efectúa de manera similar a la adición decimal, siempre y cuando recuerde que el mayor digito hexadecimal es (F) y no 9 para realizar esta operación se sugiere el siguiente procedimiento:

4210 610

710

Page 25: UNIDAD I

1.-sume los dos dígitos hexadecimales en decimal, insertando mentalmente el equivalente decimal para números mayores de 9.

2.-Si la suma es 15 o menos, esta puede expresarse directamente como un digito hexadecimal.

3.-Si la suma es mayor o igual a 16, reste 16 y acarree un 1 hacia el digito de la siguiente posición.

Ejemplo.

Sumar los números hexadecimales 3A943B16 y 3A943B16.

1 11 Acarreos 3A943B16 Donde: B16 + 516 = 1110 + 510 = 1610 = 1016 (0 y llevamos 1). + 23B7D516 116 + 316 + D16 = 410 + 1310 = 1710 = 1116 (1 y llevamos 1).

5E4C1016 116 + 416 + 716 = 510 + 710 = 1210 = C16 (no hay acarreo). 916 + B16 = 910 + 1110 = 2010 =1416 (4 y llevamos 1). 116 + A16 + 316 = 410 + 1010 = 1410 = E16 (no hay acarreo). 316 + 216 = 516 (no hay acarreo).

Resta Hexadecimal.

Las restas Hexadecimales se pueden resolver fácilmente utilizando el complemento a 15 o el complemento a 16. Estos procesos hacen que una resta se convierta en una suma en sistema hexadecimal.

Complemento a 15.

Podemos hacer la resta de dos números hexadecimales utilizando el complemento a 15.

Para ello tendremos que sumar al minuendo el complemento a quince del sustraendo, y finalmente sumarle el bit de overflow (bit que se desborda).Para entender la resta en complemento a 15 lo analizaremos con un ejemplo. Esta es la resta que tenemos que resolver:

A4FC916

- DE816

———————

Primero tenemos que hacer que el minuendo y el sustraendo tengan la misma cantidad de números. Para ello, añadiremos ceros al sustraendo hasta que sean suficientes.

A4FC916

- 00DE816

—————————

Page 26: UNIDAD I

Después, crearemos un nuevo número con la misma cantidad de números que el nuevo sustraendo. Como en el sistema hexadecimal el mayor número que tenemos es el 15, que corresponde a la letra F, tendremos que escribir la F tantas veces como números tiene el sustraendo. La resta se hace siguiendo las normas generales de la resta común.

FFFFF16

- 00DE816

————————— FF21716 complemento a 15 de 00DE816.

La diferencia obtenida se denomina el complemento a 15. Recuerda el valor correspondiente a cada letra al operar. Ahora tendremos que sumar el minuendo y el complemento a 15 utilizando la suma en sistema hexadecimal, mencionada anteriormente.

A4FC916

+ FF21716

————————— 1A41E016

Con la suma obtenemos el resultado 1A41E016, pero no es la respuesta final. Te habrás dado cuenta que este nuevo número tiene más cifras que los números iníciales que teníamos que restar. Tenemos que quitar el número de la izquierda (en este caso, el 1) y sumarlo.

A41E016

+ 116

—————— A41E116.

Por lo tanto. Hexadena que presto la F a C.

A4FC916 116 + 816 = 916

- 00DE816 E16 + E16 = C16 + 1016 = 1410 + 1410 = 1210 + 1610

————————— Como F presto a C, esta se convirtió en E. A41E116. 116 + D16 = E16 = 1410. 416 + 016 = 416. A16 + 016 = A16.Complemento a 16.

También podemos hacer la resta de dos números hexadecimales utilizando el complemento a 16, siguiendo un proceso similar que en el caso del complemento a 15.

Para resolver la resta, tendremos que sumar al minuendo el complemento a dieciséis del sustraendo.

Esta es la resta que tenemos que resolver (la misma del ejemplo anterior):

A4FC916

- DE816

—————————

Comprobación

Sumamos la diferencia con el sustraendo, para obtener el minuendo.

Page 27: UNIDAD I

Primero tenemos que hacer que el minuendo y el sustraendo tengan la misma cantidad de números, al igual que ocurre en el proceso del complemento a 15.

Para ello, añadiremos ceros al sustraendo hasta que sean suficientes.

A4FC916

- 00DE816

—————————

Después, crearemos un nuevo número con la misma cantidad de números que el nuevo sustraendo.

Como en el sistema hexadecimal el mayor número que tenemos es el 15, que corresponde a la letra F, tendremos que escribir la F tantas veces como números tiene el sustraendo. La resta se hace siguiendo las normas generales de la resta común.

FFFFF16

- 00DE816

————————— FF21716

.

Ahora tenemos que sumarle 1 a la diferencia obtenida. Este paso es muy importante, ya que es la diferencia entre hacer la resta en complemento a 15 u 16, y se suele olvidar fácilmente. Además, recuerda que estás sumando en sistema hexadecimal, siguiendo el mismo proceso explicado anteriormente.

FF21716

+ 116

————————— FF21816 complemento a 16 de 00DE816

A la diferencia obtenida incrementada en uno le denominaremos el complemento a 16.

Ahora tendremos que sumar el minuendo y el complemento a 16.

A4FC916

+ FF21816

————————— 1A41E116.

Con la suma obtenemos el resultado 1A41E1.

Te habrás dado cuenta que este nuevo número tiene más cifras que los números iníciales que teníamos que restas, cosa imposible en una resta (que la diferencia sea mayor que el minuendo y el sustraendo).

Page 28: UNIDAD I

Por eso, y estando en complemento a 16, tendremos que despreciar (eliminar) el número de la izquierda. En este caso es el 1.

La respuesta, por lo tanto, es A41E1.

En ambos casos la respuesta obtenida deberá ser la misma, ya que hemos resuelto lamisma resta en sistema hexadecimal.

Por lo tanto, podremos comprobar que hemos operado bien comparando las respuestas obtenidas en complemento a 15 y en complemento a 16 para una misma resta.

Finalmente realizaremos la misma resta como lo hacemos en forma decimal.

Ejemplo.

Restar el numero hexadecimal DE816 de A4FC916 como lo haría en forma análoga al sistema decimal.

E A 4 F C 916 Donde: 916 - 816 = 116

- D E 816 C16 – E16, no se puede hacer y pedimos una hexadena al siguiente (F) A 4 1 E 116 C16 + 1016 = 1210 + 1610 = 2810; 2810 – E16 = 2810 – 1410 = 1410 = E16.

E16 – D16 = 1410 – 1310 = 110 = 116.

A416 = A416.

Obteniendo el mismo resultado que con complemento a 16.1.7 CÓDIGOS.

No toda la información que maneja un sistema digital es numérica, e inclusive, para la información numérica a veces no es conveniente utilizar el sistema binario descrito antes. Por ello es conveniente idear formas diferentes de representar (codificar) información diversa usando solamente ceros y unos.

CÓDIGOS NUMÉRICOS.

Existen varias situaciones en las que no es conveniente utilizar el binario natural para manejar información numérica, entre ellas se pueden mencionar las siguientes:

Cuando se busca una conversión más sencilla decimal - binario (códigos BCD). Cuando además de lo anterior se van a manejar números negativos (Códigos

BCD autocomplementarios).

Page 29: UNIDAD I

Cuando se busca minimizar errores de sensado en “encoders” de posición de una cantidad a otra (código gray).

Cuando se quiere detectar errores en transmisión de datos (código de paridad). Cuando se quiere detectar y corregir errores en transmisión de datos (código

Hamming)

A continuación se tratan algunos de estos códigos.

CÓDIGO BCD (Binario Codificado en Decimal).

Los códigos BCD nos permiten representar cada uno de los dígitos decimales (0,...,9) mediante 4 bits.

El más sencillo de los códigos BCD es el BCD8421 o BCD “natural”, que consiste simplemente en representar cada dígito decimal por su binario equivalente. Así tenemos:

DígitoDecimal

BCD8421 DígitoDecimal

BCD8421

0 0000 5 0101

1 0001 6 0110

2 0010 7 0111

3 0011 8 1000

4 0100 9 1001

La conversión con el sistema decimal se realiza directamente, en grupos de cuatro bits por cada dígito decimal con ponderación 8421.

Este código tiene aplicación en visualizadores (displays) hechos con leds o LCD, los cuales poseen previamente convertidores que transforman el grupo de cuatro bits BCD en otro especial, llamado 7 segmentos.

Ejemplo 1.

Codificar en BCD el número decimal 85 (recuerda usar 4 bits).

85

1000 0101

Conversión directa típica entre un número en decimal y un BCD.

Ejemplo 2.

Page 30: UNIDAD I

¿Qué número decimal representa el número binario 0011100101012?(Recuerda agruparlos en 4 bits).

0011 1001 01012 = 39510.

En el código BCD: los cuatro primeros bits representan el 3.Los siguientes cuatro representan el 9 y los últimos cuatro el 5.

Es muy importante comprender la diferencia entre conversión de un número decimal binario y la codificación binaria de un número decimal. En cada caso el resultado final es una seria de bits. Los bits obtenidos de la conversión son dígitos binarios. Los bits obtenidos de la codificación son combinaciones de unos ceros arregladas de acuerdo a las reglas del código usado. Por tanto es extremadamente importante tener en cuenta que una serie de unos y ceros en un sistema digital puede algunas veces representar un número binario y otras veces representar alguna otras cantidad discreta de información como se especifica en un código binario dado. El código BCD por ejemplo, ha sido escogido de tal manera que es un código y una conversión binaria directa siempre y cuando los números decimales sean algún entero entre 0 y 9.

Para números mayores que 9, la conversión y la codificación son completamente diferentes. Este concepto es tan importante que vale la pena repetirlo usando otro ejemplo: la conversión binaria del decimal 1310 es 11012; la codificación decimal 1310

con BCD es 00010011BCD.

Decimal Conversión Binaria Codificación BCD

1310 11012 0001 0011BCD

Suma BCD.

Las operaciones aritméticas se hacen siguiendo las reglas convencionales. La mayor dificultad se encuentra en la generación de acarreos.

Si a + b < 10 no existe acarreo y no se debe corregir:

Ejemplo : 3D 0011BCD

+5D + 0101BCD

8D 1000BCD

Si 9 < a + b < 16 y no existe acarreo, se debe corregir sumando 6D(01102):

Ejemplo : 6D 0110BCD

+ 8D + 1000BCD

14D 1110BCD error

Page 31: UNIDAD I

Al sumar en binario 0110 + 1000 se obtiene un código BCD inválido, que hay que corregir para producir un resultado correcto, es decir un acarreo y 0100. Esto es:

0110BCD

+ 1000BCD

1110BCD Código BCD invalido

+ 0110BCD Factor de correción

1 0100BCD Esto significa el numero 14D( 0001 0100BCD)

Si a + b > 16 y existe acarreo, se debe corregir también sumando 6D(01102):

Ejemplo:

9D 1001BCD

+ 8D + 1000BCD

17D 10001BCD error

En este caso el resultado es válido (tienen significado en decimal) pero incorrecto (ya que es el número 11 en BCD). La corrección es:

1001BCD

+ 1000BCD

10001BCD error

+ 0110BCD Factor de corrección.

10111BCD Esto significa 1l número 17D (0001 0111BCD).

La principal ventaja del código BCD es la facilidad relativa para convertir a y desde decimal. Sólo se requiere recordar los grupos codificados de 4 bits para los dígitos decimales del 0 al 9. Esta facilidad de conversión es especialmente importante desde el punto de vista de circuitos, porque en un sistema decimal son los circuitos lógicos los que ejecutan las conversiones a y desde decimal.

  El código  BCD se usa en máquinas digitales siempre y cuando se aplique información digital, ya sea como entradas o mostradas como salidas.

Los voltímetros digitales, contadores de frecuencia y relojes digitales usan todos BCD, porque despliegan la información de salida en decimal. Las calculadoras electrónicas usan BCD porque los números de entrada vienen en decimal vía el teclado y los números de salida son mostrados en decimal.

BCD no es a menudo usado en computadoras digitales modernas de alta velocidad por dos buenas razones. Primero, como ya fue señalado, el código BCD para un número decimal dado requiere más bits que el código binario directo y es por consiguiente menos eficiente. Esto es importante en computadoras digitales porque el número de lugares en memoria donde estos bits pueden ser almacenados es limitado. Segundo, los procesos aritméticos para números representados en código BCD son más complicados que en binario ordinario y requieren así de circuitería más compleja.

Page 32: UNIDAD I

La circuitería más compleja contribuye a una disminución en la velocidad a la cual tienen lugar las operaciones aritméticas. Las calculadoras que usan BCD son, por consiguiente, considerablemente más lentas en su operación que las computadoras.

CÓDIGO BCD EXCESO-3.

El código BCD exceso-3 se obtiene a partir del código BCD natural, simplemente sumando 310 (00112) a cada código BCD de cada dígito decimal. Esto se resume en la siguiente tabla.

DígitoDecimal

BCDEXCESO-3

DígitoDecimal

BCDEXCESO-3

0 0011 5 10001 0100 6 10012 0101 7 10103 0110 8 10114 0111 9 1100

Este código resulta de utilidad en aplicaciones donde se requiere realizar operaciones aritméticas usando complementos. Este código es llamado autocomplementario porque el complemento a 9 de un numero decimal puede ser obtenido complementando cada bit individualmente y el resultado sigue siendo un código válido en BCD exceso 3.

Ejemplo: Representar el número 90710 en BCD exceso-3 y usar el complemento a 1 para encontrar el complemento a 9 del número:

90710 = 1100 0011 1010exc-3

0011 1100 0101exc-3 complemento a 1

= 09210 complemento a 9.

CÓDIGO BCD 2421.

Este es otro código BCD autocomplementario, y su nombre (2421) indica la ponderación de sus bits para obtener su equivalente en decimal y viceversa, en la siguiente tabla se ilustra este código.

Dígito

Decimal

BCD

2421

Dígito

Decimal

BCD

2421

0 0000 5 1011

1 0001 6 1100

2 0010 7 1101

3 0011 8 1110

4 0100 9 1111

Page 33: UNIDAD I

Ejemplo: Representar el número 90710 en BCD 2421 y usar el complemento a 1 para encontrar el complemento a 9 del número:

90710 = 1111 0000 11012421

0000 1111 00102421 complemento a 1

= 09210 complemento a 9.

CÓDIGO 2 DE 5 (BIQUINARIO).

El código 2 de 5 es un código multibit no ponderado, es decir, los códigos no pueden obtenerse usando una expresión polinomial; este código está diseñado para la detección de errores en diferentes tipos de cálculos y operaciones con registros de corrimiento. Se usan cinco bits para representar los dígitos decimales (0-9). Como el nombre lo implica sólo dos de los cinco bits son 1.

Dígito

Decimal

Código

2 de 5

Dígito

Decimal

Código

2 de 5

0 00011 5 01100

1 00101 6 10001

2 00110 7 10010

3 01001 8 10100

4 01010 9 11000

Ejemplo: Representar el numero decimal 23710 en código 2 de 5.

23710 = 00110 01001 100102 de 5.

CÓDIGO GRAY.

El código Gray es un tipo especial de código binario que no es ponderado (los dígitos que componen el código no tienen un peso asignado).

Su característica es que entre una combinación de dígitos y la siguiente, sea ésta anterior o posterior, sólo hay una diferencia de un dígito. Por eso también se le llama código progresivo.

Esta progresión sucede también entre la última y la primera combinación. Por eso se le llama también código cíclico. (Ver la tabla que se muestra abajo).

El código Gray es utilizado principalmente en sistemas de posición, ya sea angular o lineal. Sus aplicaciones principales se encuentran en la industria y en robótica.

En robótica se utilizan unos discos codificados para dar la información de posición que tiene un eje en particular. Esta información se da en código Gray.

Page 34: UNIDAD I

La tabla siguiente es una lista del código Gray de cuatro bits para números decimales del 0 al 15. Los números binarios se muestran en la tabla como una referencia. Como los números binarios, el código Gray puede tener cualquier número de bits.

DECIMAL BINARIO GRAY

0 0000 0000

1 0001 0001

2 0010 0011

3 0011 0010

4 0100 0110

5 0101 0111

6 0110 0101

7 0111 0100

8 1000 1100

9 1001 1101

10 1010 1111

11 1011 1110

12 1100 1010

13 1101 1011

14 1110 1001

15 1111 1000

Analizando la tabla se observa que:

Cuando un número binario pasa de: 01112 a 10002 (de 7 a 8 en decimal) o de11112 a 00002 (de 15 a 0 en decimal) cambian todas las cifras.

Para el mismo caso pero en código Gray: 0100 a 1100 (de 7 a 8 en decimal) o de1000 a 0000 (de 15 a 0 en decimal) sólo ha cambiado una cifra.

La característica de pasar de un código al siguiente cambiando sólo un dígito asegura menos posibilidades de error.

No es ponderado ni es un código aritmético; esto es, no hay pesos específicos asignados a las posiciones de los bits. El carácter importante del código Gray es que exhibe solo un cambio de bit único de un número de código al siguiente. Esta propiedad es muy importante para muchas aplicaciones, tales como codificadores de posición axial, donde la susceptibilidad a errores se incrementa con el número de cambios de bit entre números adyacentes en una secuencia.

CONVERSIÓN DE BINARIO A CÓDIGO GRAY.

La conversión entre el código binario y el código Gray a veces es muy útil. Primeramente, mostraremos cómo convertir un número binario a un número de código Gray. Se aplican las siguientes reglas:

El bit más significativo (el más a la izquierda) en el código Gray es el mismo que el MSB correspondiente en el número binario.

Yendo de izquierda a derecha, sume cada par adyacente de bits del código binario, para obtener el siguiente bit del código Gray. Descarte acarreos.

Page 35: UNIDAD I

Ejemplo: Paso 1. El digito del código Gray más a la izquierda es el mismo que el digito del código binario más a la izquierda.

1 0 1 1 0 Binario

1 Gray

Paso 2. Sume el bit de código binario más a la izquierda el bit adyacente.

1 + 0 1 1 0 Binario

1 1 Gray

Paso 3. Sume el siguiente par adyacente.

1 0 + 1 1 0 Binario

1 1 1 Gray

Paso 4. Sume el siguiente par adyacente y descarte el acarreo.

1 0 1 + 1 0 Binario

1 1 1 0 Gray

Paso 5. Sume el último par adyacente.

1 0 1 1 +0 Binario

1 1 1 0 1 Gray

La conversión ha sido completada; el código Gray es 11101.

CONVERSIÓN DE GRAY A BINARIO.

Para convertir de código Gray a Binario, se utiliza un método similar, pero con algunas diferencias. Se aplican las siguientes reglas:

El bit más significativo (el más a la izquierda) es el código binario es el mismo que el bit correspondiente en el código Gray.

Sume cada bit generado del código binario al bit del código Gray en la siguiente poción adyacente. Descarte acarreos.

Ejemplo:

Paso 1. El digito del código binario más a la izquierda es el mismo que el digito del código Gray más a la izquierda.

1 1 0 1 1 Gray

1 Binario

Page 36: UNIDAD I

Paso 2. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición. Descarte acarreos. (En negrilla bit que se suman).

1 1 0 1 1 Gray

1 0 Binario

Paso 3. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición.

1 1 0 1 1 Gray

1 0 0 Binario

Paso 4. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición.

1 1 0 1 1 Gray

1 0 0 1 Binario

Paso 5. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición. Descarte acarreos.

1 1 0 1 1 Gray

1 0 0 1 0 Binario

La conversión ha sido completada; el código binario es 100102.

APLICACIÓN A SENSORES ÓPTICOS.

La principal característica del código Gray (que sólo cambia un bit entre dos códigos consecutivos) es muy utilizada en sensores ópticos para codificar la posición (angular o lineal) mediante discos o cintas codificadas en Gray, dependiendo del caso.

Por ejemplo, en la siguiente figura se ilustra la codificación en dos colores (blanco y negro) de un disco que será montado sobre la flecha de un motor. Se usa el código Gray de 4 bits para codificar la posición angular de la flecha. Cada sector en el disco tiene un código de posición de 0 a 15. Se usarán sensores opto electrónicos reflectivos para determinar la posición de la flecha en un sector o sea, con una resolución de 1/16 de vuelta, o de 22.5°. Si se desea una mejor resolución se deberán usar más bits, y por lo tanto mayor número de sectores.

Page 37: UNIDAD I

Aunque el disco pudiera ser codificado en binario natural, el hacerlo en Gray tiene la ventaja de que si el sensor queda ubicado entre dos sectores, la lectura tomada producirá un error de cuando mucho media posición. En cambio, si es en binario este error puede ser tan grande como 180°.

CÓDIGOS ALFANUMÉRICOS.

Muchas aplicaciones de sistemas digitales (especialmente en las computadoras o la transmisión de textos) requieren del procesamiento de datos como números, letras y símbolos especiales. Para manejar estos datos usando dispositivos digitales, cada símbolo debe estar representado por un código binario. El código alfanumérico más generalizado en la actualidad es el denominado ASCII (American Standard Code for Information Interchange). Este es un código de 7 bit. La siguiente tabla muestra una parte del código ASCII:

Page 38: UNIDAD I

Rango (hexadecimal Caracteres0 al 19 códigos de control y comunicaciones

30 al 39 dígitos del 0 al 941 al 5A letras mayúsculas de la A a la Z61 al 7A letras minúsculas de la “a” a la z

Ejemplo: la palabra "Start" se representa en código ASCII como sigue

1010011 1110100 1100001 1110010 1110100

S t a r t

CÓDIGO DE SIETE SEGMENTOS.

Un dispositivo muy generalizado por su sencillez y bajo costo en dispositivos digitales de visualización es el exhibidor o display de siete segmentos, el cual consiste en un arreglo de siete indicadores luminosos (LED’s) u opacos (cristal líquido) arreglado como se muestra en la siguiente figura. Existen dos tipos de exhibidores de siete segmentos construidos con LED’s, estos son los de ánodo común y los de cátodo común, los cuales se muestran también en la figura.

Page 39: UNIDAD I

Este tipo de displays permite la representación de información de tipo numérico principalmente, sin embargo, también permite algunos caracteres alfabéticos, tales como: a, A, b, c, C, d, E, F, G, H, y, j, L, o, O, p, q, r, s, u, z.

En la siguiente tabla se muestra el código de 7 segmentos para un display de cátodo común para los dígitos decimales y el equivalente en BCD:

Decimal Entradas en binario.

Salidas para el display de 7 segmentos

Números A B C D a b c d e f g0 0 0 0 0 1 1 1 1 1 1 01 0 0 0 1 0 1 1 0 0 0 02 0 0 1 0 1 1 0 1 1 0 13 0 0 1 1 1 1 1 1 0 0 14 0 1 0 0 0 1 1 0 0 1 15 0 1 0 1 1 0 1 1 0 1 16 0 1 1 0 1 0 1 1 1 1 17 0 1 1 1 1 1 1 0 0 0 08 1 0 0 0 1 1 1 1 1 1 19 1 0 0 1 1 1 1 1 0 1 110 1 0 1 0 x x x X x x x11 1 0 1 1 x x x X x x x12 1 1 0 0 x x x X x x x13 1 1 0 1 x x x X x x x14 1 1 1 0 x x x X x x x15 1 1 1 1 x x x X x x x

CÓDIGOS PARA DETECCIÓN Y CORRECCIÓN DE ERRORES.

Los sistemas digitales pueden cometer errores de vez en cuando. Aunque los dispositivos en circuito integrado tales como microprocesadores, compuertas lógicas o circuitos de memoria carecen de partes móviles y por lo tanto tienen alta confiabilidad, pero los dispositivos que tienen interacción con partes móviles son menos confiables. Se pueden producir errores por polvo en las cabezas lectoras de una unidad de disco.

Page 40: UNIDAD I

También es muy común la ocurrencia de errores en la transmisión de datos a distancia. Los datos que se transmiten por modem (a través de línea telefónica) pueden recibirse incorrectamente si la línea tiene ruidos. También las perturbaciones en el suministro de energía eléctrica pueden producir errores. En resumen, cuando se leen, escriben o transmiten caracteres de un sitio a otro, pueden producirse errores.

TRANSMISIÓN SERIE Y PARALELO.

Existen dos métodos básicos para transmitir información entre dos dispositivos digitales, como se ilustra en la siguiente figura, la transmisión de datos digitales en paralelo ocupa una línea física por cada bit de los datos a enviar, esto hace que este tipo de transmisión sea usada en distancias relativamente cortas (unos cuantos metros), ya que de otra manera se vuelve muy costosa

Por otro lado, la transmisión de datos a distancias muy grandes (del orden de cientos de metros a miles de kilómetros) hace necesario usar menos líneas físicas, en este caso puede usarse el esquema de la figura siguiente o transmisión en serie, la cual utiliza una sola línea para enviar el número de bits que se desee.

La transmisión en serie resulta económica por el número reducido de líneas que requiere e incluso el hecho de que permite usar en lugar de líneas conductoras, el aire o el vacío, cuando en lugar de pulsos eléctricos se usa radiación electromagnética (luz, ondas de radio, ultrasonido, etc.). A cambio de esta economía, el transmisor y el receptor se vuelven un poco más complejos, además de que el trayecto que recorre la información (por ser largo) se vuelve más susceptible a interferencias.

CÓDIGO DE PARIDAD.

Un método muy simple, pero ampliamente utilizado por su sencillez para detectar errores en transmisión de datos consiste en añadir un bit de paridad (p) a cada carácter, normalmente en la posición más significativa.

En el código de paridad par, el bit de paridad (p) se elige de manera que el número de bits 1 del dato sea un número par incluyendo el bit de paridad. En el código de

Page 41: UNIDAD I

paridad impar, el bit de paridad se elige de modo que el número de bits 1 (incluyendo el de paridad) del dato sea impar.

De esta manera, cuando cambia un bit durante la transmisión, el número de unos en el carácter recibido tendrá la paridad equivocada y el receptor sabrá que se ha producido un error.

Ejemplo: La siguiente tabla muestra un código de paridad par de 8 bits para los caracteres ASCII “FIE.”

Ejemplo Si un transmisor envía la información anterior y hay errores en la transmisión, suponiendo que el receptor recibe la información, mostrada en la siguiente tabla, donde se anotan los datos que llegaron erróneos y si se detectó o no el error, agrega en la columna vacía (bits erróneos) cuantos bits cambiaron en la transmisión.

Como puede verse, el código de paridad no siempre resulta efectivo para detectar errores. ¿Qué tipo de errores si detecta y cuáles no?

CÓDIGO DE HAMMING.

Richard Hamming (1950) ideó un método no sólo para detectar errores sino también para corregirlos, y se conoce como código Hamming. En él se añaden k bits de paridad a un carácter de n bits, formando un nuevo carácter de n + k bits. Los bits se enumeran empezando por 1, no por 0, siendo el bit 1, el de la izquierda, el más significativo. Todo bit cuyo número sea potencia de 2 es un bit de paridad y todos los demás se utilizan para datos.

Page 42: UNIDAD I

Para un carácter ASCII de 7 bits, se añaden 4 bits de paridad. Los bits 1, 2, 4 y 8 son bits de paridad; 3, 5, 6, 7, 9, 10 y 11 son los 7 bits de datos. Cada bit de paridad comprueba determinadas posiciones de bit y se ajusta de modo que el número total de unos en las posiciones comprobadas sea par, si se trata de paridad par.

Las posiciones de los bits comprobados por los de paridad son:

El bit 1 comprueba los bits 1, 3, 5, 7, 9 y 11.

El bit 2 comprueba los bits 2, 3, 6, 7, 10 y 11.

El bit 4 comprueba los bits 4, 5, 6 y 7.

El bit 8 comprueba los bits 8, 9, 10 y 11.

En general, el bit n es comprobado por los bits b1, b2,....,bj, tales que b1 + b2 + .... + bj = n. Por ejemplo, el bit 5 es comprobado por los bits 1 y 4 porque 1 + 4 = 5. El bit 6 es comprobado por los bits 2 y 4 porque 2 + 4 = 6.

Ejemplo: Usando paridad par, construir el código de Hamming para el carácter "b".

Código ASCII para "b" (62H = 110 0010)

D6=1 D5=1 D4=0 D3=0 D2=0 D1=1 D0=0

Código de Hamming para "b"

D6 D5 D4 D3 D2 D1 D0

1,3,5,7,9,11(para 2 unos) 4,5,6,7(para tener 2 unos) 8,9,10,11(para 2 unos)

2,3,6,7,10,11(para tener 2 unos)

Explicación

El bit 1 se puso a cero porque los bits 3 y 5 están en uno, para tener paridad par.

El bit 2 se puso a cero porque los bits 3 y 10 están en uno, para tener paridad par.

El bit 4 se puso a uno porque el bit 5 está en uno, para tener paridad par.

Page 43: UNIDAD I

El bit 8 se puso a uno porque el bit 10 está en uno, para tener paridad par.

El carácter ASCII "b" se representa por el número binario 1100010.

El código de Hamming para "b" en binario es 00111001010.

Ejemplo:

Considere que pasaría si el bit 1 se modificara durante la transmisión. El carácter recibido sería 10111001010 en lugar de 00111001010. El receptor comprobaría los 4 bits de paridad con los resultados siguientes:

Bit de paridad 1 incorrecto (los bits 1, 3, 5, 7, 9 y 11 contienen tres unos).

Bit de paridad 2 correcto (los bits 2, 3, 6, 7, 10 y 11 contienen dos unos).

Bit de paridad 4 correcto (los bits 4, 5, 6 y 7 contienen dos unos).

Bit de paridad 8 correcto (los bits 8, 9, 10 y 11 contienen dos unos).

El número total de unos en los bits 1, 3, 5, 7, 9 y 11 debería de ser par, ya que se está usando paridad par. El bit incorrecto debe ser uno de los bits comprobados por el bit de paridad 1, es decir, uno de los bits 1, 3, 5, 7, 9 u 11. Como el bit de paridad 2 es correcto, sabemos que los bits 2, 3, 6, 7, 10 y 11 son correctos, de forma que el error no estaba en los bits 3, 7 u 11. Esto deja los bits 1, 5 y 9. El bit de paridad 4 es correcto, lo cual significa que los bits 4, 5, 6 y 7 no contienen errores. Esto reduce la elección al 1 o 9. El bit de paridad 8 también es correcto y, por lo tanto, el bit 9 es correcto. Por consiguiente, el bit incorrecto debe ser el 1. Dado que se recibió como un 1, debería haberse transmitido como un 0. En esta forma se pueden corregir los errores.