introducción al diseño lógico
DESCRIPTION
Contiene los temas básicos de diseño lógicoTRANSCRIPT
SISTEMAS Y CÓDIGOS NUMÉRICOS
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 2
UNIDAD I OPERACIÓN DE CIRCUITOS COMBINATORIOS
Orígenes y esbozo histórico.
En la actualidad es cada vez más difícil no encontrarse día con día con un producto de la tecnología digital.
Ciertamente, el ejemplo más representativo de estos es la computadora digital, sin embargo, lejos de ser el único
este pertenece a una amplia gama de productos que cada día se renueva, se perfecciona y crece. Los ejemplos
actuales van desde computadoras digitales y calculadoras de bolsillo hasta video juegos, relojes digitales,
medidores, controladores industriales, electrodomésticos, aparatos de comunicación, etc. Algunos ejemplos de
ellos se ilustran en la Figura 1.
Figura 1. Tecnología digital.
Aunque los productos derivados del diseño digital realizan funciones sorprendentes, la idea básica de esta rama
de la electrónica es extremadamente simple.
El Diseño Digital o diseño lógico puede ser definido como la ciencia de organizar conjuntos de interruptores
(switches) para procesar información de manera predecible y coherente.
El avance actual de la electrónica conjuga los avances tanto del diseño digital como del analógico, estas dos
ramas de la electrónica ofrecen soluciones para diversos problemas, sin embargo, cada vez más las soluciones
digitales invaden el campo que anteriormente era exclusivo de las soluciones analógicas. Sin embargo, en la
mayoría de los casos, la mejor solución conjuga elementos analógicos tanto como digitales. A continuación se
presenta un breve resumen del desarrollo de la electrónica digital y los principales eventos que contribuyeron
al desarrollo actual.
1854 George Boole publica su artículo “An investigation of the laws of thought...” en donde sienta las bases
del álgebra Booleana, sin embargo, para la época, el artículo no tuvo trascendencia práctica.
1938 Claude Shannon sistematiza el trabajo anterior de George Boole, dando origen a los primeros
dispositivos de conmutación diseñados y probados mediante métodos sistematizados. (Ya en 1930 los
Laboratorios Bell habían desarrollado una calculadora usando relevadores).
1940 Alan Touring construye “Colossus”, primera computadora de tubos de vacío (mantenida en secreto
casi por 40 años).
1946 John Mauchly y J. Presper Eckert (U.S.A. Pensilvania) construyen la ENIAC usando tubos de vacío
(18,000 tubos, 500,000 switches, 150 kilowatts) capaz de hacer 5000 sumas por segundo.
1947 Invención del transistor, con el consiguiente ahorro de espacio, potencia de consumo y costo de los
sistemas electrónicos.
1950-1960 Tercera generación de computadoras construidas en base a circuitos integrados.
1971 La compañía INTEL lanza al mercado el primer microprocesador (el 4004) de 4 bits. A partir de aquí
se comienzan a generalizar los sistemas digitales complejos basados en microprocesador para cubrir
una extensa gama de aplicaciones que va desde los electrodomésticos hasta controladores industriales.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 3
A su vez la tecnología de microprocesadores y computadoras digitales no ha dejado de perfeccionarse día con
día, los siguientes son algunos eventos significativos más recientes:
1972 INTEL produce el primer microprocesador de 8 bits (el 8008).
1973 INTEL lanza el 8080 (adoptado por IBM para la PC). MOTOROLA lanza el 6800.
1975 ZILOG lanza el Z80 y MOTOROLA produce el 6502 (adoptado por APPLE) (El 6501 y 6502 fueron
comercializados en $20 y $25 dólares cuando el microprocesador más barato valía unos $180 dólares.
1979 Se producen las primeras microcomputadoras de un solo chip (microcontroladores).
1985 Primeras memorias de 1 Megabit.
Actividad 1. Realizar una línea de tiempo, un cuadro descriptivo o un mapa mental resumiendo los desarrollos
más sobresalientes que conforman el diseño lógico y la electrónica digital tomando como base los puntos
anteriores hasta nuestra actualidad.
Escalas de Integración de los Circuitos Integrados.
En la actualidad se ha logrado introducir cantidades formidables de transistores en un solo circuito integrado.
De hecho, los circuitos integrados se clasifican de acuerdo a la cantidad de transistores que contienen:
S.S.I. (Pequeña escala de integración).- Menos de 100 transistores por circuito integrado.
M.S.I. (Media escala de integración).- De 100 hasta 1000 transistores por circuito.
L.S.I. (Alta Escala de Integración).- De 1000 a 10,000 transistores por circuito.
V.L.S.I. (Muy Alta Escala de Integración).- Más de 10,000 transistores por circuito.
Actividad 2. Investigar si existen más escalas de integración y escribir un ejemplo de cada escala de integración
para circuitos integrados.
El mundo analógico y el mundo digital.
Es conveniente tener clara la distinción entre los conceptos Analógico y Digital antes de introducirnos al mundo
de la electrónica digital, para ello consideremos los siguientes circuitos eléctricos:
Figura 2. Circuito analógico. Figura 3. Circuito digital.
Para el circuito de la izquierda la relación de la salida
(Vout) respecto a la entrada (Vin) está dada por:
𝑉𝑜𝑢𝑡 =𝑅2
𝑅1 + 𝑅2𝑉𝑖𝑛
De esta manera Vout puede tomar una infinidad de
valores dependiendo de la variación de Vin.
Para el circuito de la derecha la relación de la salida
(Luz) respecto a la entrada (Vin) está dada por la
siguiente tabla
Vin Luz Por esto la luz sólo puede tomar dos
0 ON estados o valores al variar Vin
V OFF debido a la posición del switch S.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 4
En general podemos pensar en una señal analógica como aquella que puede tomar una infinidad de valores en
un intervalo finito. En la Figura 4, se presenta una gráfica típica de una señal analógica que varía con el tiempo.
Como puede observarse en la Figura 4, la señal f(t)
puede tomar cualquier valor entre f(t1) y f(t2).
Ejemplos de señales analógicas: Temperatura del
cuerpo, velocidad de un auto, distancia recorrida por
un peatón, peso corporal, etc.
Figura 4. Gráfica de una señal analógica.
A diferencia de las señales analógicas, una señal
digital o discreta sólo puede tomar una cantidad finita
de valores en un intervalo cualquiera. En la Figura 5
se muestra una señal digital típica que varía con el
tiempo.
Como puede advertirse en la Figura 5, f(t) solamente
toma 6 valores diferentes entre f(t1) y f(t2).
Figura 5. Gráfica de una señal digital.
Ejemplos de variables digitales: la edad en años completos de una persona, el precio de un producto, el número
de pobladores de un país, etc.
Un caso particular de señal digital que será la que nos ocupe a lo largo de este curso es la llamada señal binaria
y se refiere simplemente a una señal discreta que sólo puede tomar dos valores. En la Figura 6 se muestra una
señal binaria típica que varía con el tiempo.
Así como hay señales analógicas y digitales,
también los dispositivos pueden clasificarse de
esta manera dependiendo de las señales que
manejan o de los principios de operación en
que están basados. Así, podemos hablar de
dispositivos analógicos o dispositivos
digitales.
Figura 6. Gráfica de una señal binaria.
Inclusive los métodos que nos permiten abordar problemas en general pueden ser clasificados como métodos
analógicos o métodos digitales. De hecho, un mismo problema puede ser resuelto por ambos enfoques.
Ejemplo 1. Contar el número de nueces en un costal:
Solución digital: Contar de una en una las nueces.
Solución analógica: Medir el peso promedio de una nuez, pesar el costal y dividir el peso del costal
entre el peso promedio de la nuez.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 5
Sistemas Numéricos.
Los sistemas digitales manejan información binaria, es decir, disponen solamente de dos valores para
representar cualquier información. Esto hace que los sistemas digitales sean más confiables que los analógicos,
ya que es más fácil distinguir entre dos valores que entre una gran cantidad de ellos. Sin embargo, esto implica
que si se desea diseñar o entender sistemas digitales, especialmente aquellos que manejan información de tipo
numérico es necesario dominar el sistema de numeración binario. En este capítulo, se presenta dicho sistema
de numeración comenzando con una introducción general sobre sistemas de numeración y haciendo énfasis en
los sistemas de numeración binario y hexadecimal, por su aplicación directa a sistemas digitales.
¿Cuál es el significado numérico de la representación acostumbrada para los números? Es decir, por ejemplo
¿qué significa la representación del número N=1998?
Como es sabido, el número anterior significa 1 millar, más 9 centenas, más 9 decenas, más 8 unidades, es decir,
N puede escribirse como:
N= 1*103 + 9 * 102+ 9*101 + 8*100
Es decir, en general, un número cualquiera N de n dígitos escrito como
N = An-1 An-2 ... A1 A0 (1.1)
Donde, los dígitos An-1, ... A1 A0 son alguno de los diez siguientes: 0, 1, 2, ..., 9. También podrá escribirse como
N = An-1*10n-1 + An-2*10n-2+ ...+ A1*101 + A0*100 (1.2)
En este punto es conveniente introducir las siguientes definiciones:
Sistema Numérico. Se llama sistema numérico al conjunto ordenado de símbolos o dígitos y a las
reglas con que se combinan para representar cantidades numéricas. Existen diferentes sistemas
numéricos, cada uno de ellos se identifica por su base.
Dígito. Un dígito en un sistema numérico es un símbolo que no es combinación de otros y que
representa un entero positivo.
Bit. Es un dígito binario (Abreviación del inglés binary digit), es decir, un 0 o un 1.
Base de un sistema numérico. La base de un sistema numérico es el número de dígitos diferentes
usados en ese sistema.
Notación. En adelante, para distinguir entre los diferentes sistemas numéricos encerraremos entre paréntesis el
número y le añadiremos un subíndice, indicando la base que se está usando. Sin embargo, si no se usa subíndice
se deberá entender que el número está en base diez, a menos que se diga lo contrario.
Ejemplos:
2) 35 = (35)10 = 35 base 10 (sistema decimal).
3) (110100)2 = 110100 base 2 (sistema binario).
4) (34)16 = 34H = 34 base 16 (sistema hexadecimal).
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 6
Figura 7. Sistemas numéricos más usados en diseño digital.
Notación.
En general cualquier número entero consta de
Parte entera . Parte Fraccionaria
Cualquier número se puede escribir de dos maneras, mediante la notación yuxtaposicional o simplemente
posicional (ecuación 1.1) o la notación polinomial (ecuación 1.2).
Notación posicional.
Al escribir un número con esta notación, la posición de cada dígito nos dice su peso relativo. En general, en la
base b un número N de n dígitos en la parte entera y m dígitos en la parte fraccionaria en esta notación se
escribe:
N = (an-1 an-2 .... a1 a0 . a-1 .... a-m )b (1.3)
En esta notación el dígito de más a la izquierda (an-1) es decir, el que “pesa” más se denomina dígito más
significativo (MSD), en forma similar el de más a la derecha (a-m), es decir, el que “pesa” menos se le llama
dígito menos significativo (LSD).
Ejemplo 5: (218.25)10 b=10, n=3, m=2
Notación polinominal.
En general, cualquier número N puede ser escrito como un polinomio en potencias de la base. Así, la notación
polinomial para el número expresado por (1.3) será:
𝑁 = ∑ 𝑎𝑖𝑟𝑖𝑛−1
𝑖=−𝑚 = 𝑎𝑛−1𝑟𝑛−1 + 𝑎𝑛−2𝑟𝑛−2 + ⋯ + 𝑎1𝑟1 + 𝑎0𝑟0 + 𝑎−1𝑟−1 + ⋯ + 𝑎−𝑚𝑟−𝑚 (1.4)
Ejemplo 6: N = (218.25)10 = 2*102 + 1*101 + 8*100 + 2*10-1 + 5*10-2
Conversión Entre Sistemas Numéricos.
El problema general de convertir un número de su representación en base r a la correspondiente en base q se
puede resolver en un sólo paso si se maneja aritmética de base r o de base q, sin embargo, si se quiere usar en
el proceso solamente aritmética de base 10 debemos plantearlo en dos etapas como se muestra en la Figura 8.
Sistemas Numéricos
Más Usados
Binario
Base 2
Dígitos:
0,1
Octal
Base 8
Dígitos:
0, 1, 2, 3, 4, 5, 6, 7
Decimal
Base 10
Dígitos: 0,1,2,3,4,5,6,7,8,9
Hexadecimal
Base 16
Dígitos: 0,1,2,3,4,5,
6,7,8,9,A,B,C,D,E,F
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 7
Figura 8. Conversión de base r a base q usando aritmética de base 10.
Conversión de Base r a Base 10.
Como lo sugiere la figura 8, este caso puede ser tratado directamente usando la notación polinomial y aritmética
de base 10. Este procedimiento consiste en usar la expresión (1.4) expresando todas las cantidades involucradas
en decimal.
Ejemplo 7. Convertir (B2A)16 a base 10.
Expresando el número en notación polinomial usando base 10 para representar cada cantidad involucrada en
dicha notación:
(B2A)16 = (B*162 + 2*161 + A*160)10
= (11x256 + 2x16 + 10x1)10
= (2858)10
Ejemplo 8. Convertir (11011)2, a base 10.
En forma similar al ejemplo anterior
(11011)2 = 1*24 + 1*23 + 0*22 + 1*21 + 1*20
=16 + 8 + 0 + 2 + 1
= (27)10
NOTA. En este caso y en los sucesivos se han obviado los paréntesis y el subíndice 10 para indicar decimal,
excepto hasta el resultado final.
Ejemplo 9. Convertir (12101.121)3 a decimal.
(12101.11)3 = 1*34 + 2*33 + 1*32 + 0*31 + 1*30 + 1*3-1 + 2*3-2 + 1*3-3
= 1*81 + 2*27 + 1*9 + 0 + 1 + 1/3 + 2/9 + 1/27
= (145.592592...)10
Conversión de Base 10 a Base q.
El método para realizar esto que se presenta aquí y que se denomina método de divisiones sucesivas por la base
q está basado en las siguientes consideraciones generales:
Consideremos un número entero N escrito en la base r, en la notación posicional, es decir,
N= (an-1 an-2 ...a1 a0)r
En notación polinomial, es decir,
N = an-1 rn-1 + an-2 rn-2 + ... + a1 r1 + a0
Factorizando r podemos reescribir
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 8
N = r[ (an-1 rn-2 + an-2 rn-3 + ... + a1) + (a0/r) ]
Es decir,
N/r = (an-1 rn-2 + an-2 rn-3 + ... + a1) + (a0/r)
Como se observa, el primer término en el segundo miembro de la igualdad anterior que denotaremos N1 se
puede representar en forma posicional en base r como sigue
N1 = (an-1 an-2...a1)r
Con lo cual
N/r = N1 + (ao/r)
Conclusión. La expresión anterior significa que al dividir N =(an-1 an-2 ... a1 a0)r entre r obtenemos como cociente
N1 y como residuo de la división a0. En forma similar si dividimos N1 = (an-1 an-2...a1)r entre r obtendremos
como cociente N2 = (an-1 an-2...a2)r y como residuo a1 y así sucesivamente.
De esta manera, para obtener los n dígitos de N en base r se deberán obtener los n residuos de n divisiones
sucesivas entre r. Obteniéndose en el orden de LSD a MSD.
Ejemplo 10. Convertir (25)10 a base 2, 8 y 16.
Para este proceso se formará el siguiente arreglo de divisiones sucesivas entre la base
Para la base 2, se tiene que
(25)10 = (11001)2
En adelante se obviarán los
comentarios de la Tabla 1 y solo se
mostrarán los cocientes, residuos y la
base entre la cual se está dividiendo.
Tabla 1. Tabla de conversión aplicando divisiones sucesivas.
Para la base 8: Para la base 16:
(25)10 = (31)8 (25)10 = (19)16
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 9
Números fraccionarios.
La parte fraccionaria de un número de base 10 puede convertirse a base r en forma similar a lo descrito para la
parte entera, pero en este caso, en lugar de realizar divisiones se realizan multiplicaciones sucesivas, y en lugar
de tomar residuos se toman las partes enteras resultantes de dichas multiplicaciones, obteniéndose los dígitos
del número en base r en el orden de MSD a LSD.
Esto se justifica de manera similar a lo mostrado para el caso de las divisiones sucesivas, ya que si un número
N se representa en notación posicional en base r como
N = (0.a-1 a-2 a-3 ...)r
Es fácil ver que
N*r = (a-1 . a-2 a-3 a-4 ...)r
Es decir que la parte entera de N*r es a-1.
Ejemplo 12: Convertir (0.27)10 a base 2
Es decir, (0.27)2 = (0.01000101...)2
En adelante se obviarán detalles en este
procedimiento.
Tabla 2. Tabla de conversión aplicando multiplicaciones sucesivas.
Caso particular conversión entre bases rk y r.
Cuando una de las bases involucradas en la conversión es una potencia entera de la otra la conversión se vuelve
muy sencilla, ya que se puede realizar en un sólo paso expresando cada dígito del número en base rk usando k
dígitos de base r. Además, este procedimiento no requiere aritmética de ningún tipo.
Ejemplo 13. Convertir N = (10111011110)2 a base 8 y a base 16.
Para base 8: Como 8 = 23, bastará con representar cada 3 dígitos del número binario en octal como se
muestra a continuación
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 10
N = 10, 111, 011, 110
2 7 3 6
Es decir, N = (2736)8
Para base 16: Como 16=24, en forma similar al caso anterior
N = 101,1101,1110
5 D E
Es decir, N =(5DE)16
Ejemplo 14. Convertir N =(3F45)16 a base 4 y a base 2.
Para base 4 como 16 = 42, se convertirá cada dígito del número usando 2 dígitos de base 4 como se
muestra a continuación
N = 3 , F , 4 , 5
03 33 10 32
Es decir, N=(03331032)4
Para base 2 en forma similar, como 16 = 24
N = 3 , F , 4 , 5
0011 1111 0100 0101
Es decir, N = (0011111101000101)2
Por la importancia del caso a continuación se tratará de manera especial el caso de base dos o sistema binario,
ya que la información manejada por los sistemas digitales es información de tipo binaria.
Los Sistemas Octal y Hexadecimal.
Como se puede observar del caso de conversión descrito en la sección anterior, el sistema octal (base 8) y
hexadecimal (base 16) pueden ser considerados como “binario abreviado”, en el sentido de que la conversión
de éstos a binario y viceversa es prácticamente inmediata a simple vista, es por ello que estos sistemas
tradicionalmente han sido utilizados para representar de manera compacta información binaria en los sistemas
digitales.
Obsérvese que para realizar la conversión octal-binario o hexadecimal-binario, basta tener presente la
conversión de los 8 dígitos del octal o de los 16 dígitos del hexadecimal:
El Sistema Binario.
El sistema binario (r=2) requiere únicamente dos dígitos, 0 y 1. Este sistema es ideal para uso en sistemas
digitales, ya que éstos están construidos de dispositivos de dos estados (relevadores, transistores, etc.).
Notación: Se acostumbra representar los dígitos binarios (bits) de diversas maneras, dependiendo del contexto,
por ejemplo:
1= encendido = ON = alto = H
0= apagado = OFF = bajo = L
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 11
Tabla 3. Tabla de conversión entre los sistemas decimal, hexadecimal, octal y binario.
Cuando se conectan varios dispositivos que pueden almacenar cada uno de ellos un bit, al arreglo así formado
se le llama registro, de esta manera, diferentes combinaciones de valores de los bits guardados en un registro se
pueden interpretar como un número binario. Así, un registro de 8 bits se representará como sigue:
Registro de 8 bits
Dependiendo de la longitud (medida en número de bits) del registro, este se denomina de acuerdo a la siguiente
Tabla 4.
El uso del término “palabra” es más genérico y algunos
autores hablan de palabras de 8 de 16, de 32 bits, etc.
Tabla 4. Nombre de los registros de acuerdo a la cantidad de bits utilizados.
Conversión de Binario a Decimal.
En temas anteriores fue tratado el caso general de conversión de cualquier base a decimal usando la
representación polinomial. Es conveniente tratar el caso particular de convertir un número binario a decimal
por ser un caso muy utilizado en sistemas digitales y porque el método puede ser simplificado de la siguiente
manera:
Anote (de ser posible mentalmente) los “pesos” o potencias de 2 correspondientes a las posiciones de los bits
del número a convertir. Luego, simplemente, sume los pesos correspondientes a las posiciones de los bits 1.
Para ello es conveniente memorizar algunas potencias de 2.
Tabla 5. Tabla de conversión directa a sistema decimal.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 12
Ejemplo 15. Convertir los siguientes números de binario a decimal: N1= (101101)2, yN2=(1010110.11)2
Para N1:
Pesos: 32 16 8 4 2 1
N1 = ( 1 0 1 1 0 1 )2
Sumando los pesos correspondientes a los bits 1,
N1=32+8+4+1 = 4510
Para N2:
Pesos: 64 32 16 8 4 2 1 -1 -2
N1 = ( 1 0 1 0 1 1 0 . 1 1 )2
Entonces
N1 = 64+16+4+2 + 0.5+0.25 = 86.7510
Aritmética Hexadecimal.
Suma.
El procedimiento es el siguiente:
1. Se suman los dos números.
2. Si la suma es 15 o menos, se expresa como un dígito.
3. Si la suma es mayor a 15, se resta 16 y se desplaza un 1 a la siguiente posición del dígito.
Ejemplo 16:
NOTA. En los ejemplos siguientes se ignora el subíndice de la base del sistema hexadecimal.
La suma de 9+7=1610 en el sistema decimal, para el sistema hexadecimal, tenemos
9+ 7
1 9+ 71 0
Como la suma es 16 le restamos, 16, y el resultado es 0, y desplazamos un 1 a la siguiente posición,
más ejemplos del mismo caso
10+6=1610 10+10=2010
1
𝐴+ 6 1 0
1 𝐴+ 𝐴 1 4
15+14=2910 10+11+12=3310
1 𝐹+ 𝐸 1 𝐷
2 𝐴+ 𝐵+ 𝐶 2 1
Para este último caso tenemos como resultado un 33, el cual si se le resta 16, obtenemos 17, el cual
sigue siendo un número mayor a 15, por lo tanto volvemos a restarle 16. De esta manera se desplaza
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 13
un 2 a la siguiente posición del dígito. Así, se concluye que para cada resta de 16, incrementaremos un
1 a la siguiente posición del dígito.
Ejemplo 17.
79+207+166=45210 47+63+31+4=14510
1 2 4 𝐹+ 𝐶 𝐹+ 𝐴 6 1 𝐶 4
3 2 𝐹+ 3 𝐹+ 1 𝐹+ 4 9 1
Resta.
Para la realización de la resta, existen 2 métodos:
1. Complemento a 15.
1. Si la cantidad de dígitos del sustraendo es menor que la del minuendo, se completa el sustraendo
con ceros a la izquierda de la parte entera, y a la derecha de la parte decimal (encolumnar por la
coma).
8 𝐸 𝐴 𝐷, 0 1 (𝑚𝑖𝑛𝑢𝑒𝑛𝑑𝑜) − 3 𝐵 𝐸 5 (𝑠𝑢𝑠𝑡𝑟𝑎𝑒𝑛𝑑𝑜)
2. Se halla el complemento del sustraendo, restando este valor del máximo valor hexadecimal con
la misma longitud del minuendo. Obteniendo como resultado el complemento a 15.
𝐹 𝐹 𝐹 𝐹, 𝐹 𝐹− 3 𝐵 𝐸 5 , 0 0
𝐶 4 1 𝐴 , 𝐹 𝐹
3. Se suma el minuendo al complemento del sustraendo.
8 𝐸 𝐴 𝐷, 0 1 + 𝐶 4 1 𝐴 , 𝐹 𝐹
𝟏 5 2 𝐶 8 , 0 0
4. Se elimina el 1 de la izquierda y se suma encolumnado con el último dígito de la cifra, sin importar
la coma decimal.
8 𝐸 𝐴 𝐷, 0 1 + 𝐶 4 1 𝐴 , 𝐹 𝐹
5 2 𝐶 8 , 0 0+ 𝟏
𝟓 𝟐 𝑪 𝟖 , 𝟎 𝟏
Otro ejemplo (18), A4FC9-DE8= ?
𝐴 4 𝐹 𝐶 9− 𝐷 𝐸 8
𝐴 4 𝐹 𝐶 9− 0 0 𝐷 𝐸 8
𝐹 𝐹 𝐹 𝐹 𝐹− 0 0 𝐷 𝐸 8 𝐹 𝐹 2 1 7
1 1 1 1 𝐴 4 𝐹 𝐶 9+ 𝐹 𝐹 2 1 7𝟏 𝐴 4 1 𝐸 0
𝐴 4 1 𝐸 0+ 𝟏
𝑨 𝟒 𝟏 𝑬 𝟏
Por lo tanto, A 4 F C 9 – D E 8 = A 4 1 E 1
Resultado
Resultado
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 14
2. Complemento a 16.
1. Si la cantidad de dígitos del sustraendo es menor que la del minuendo, se completa el
sustraendo con ceros a la izquierda de la parte entera, y a la derecha de la parte decimal (encolumnar
por la coma).
𝐴 4 𝐹 𝐶 9− 0 0 𝐷 𝐸 8
2. Se halla el complemento del sustraendo, restando este valor del máximo valor hexadecimal
con la misma longitud del minuendo.
𝐹 𝐹 𝐹 𝐹 𝐹− 0 0 𝐷 𝐸 8
𝐹 𝐹 2 1 7
3. Se suma 1, al resultado obtenido en el paso anterior, para obtener así el complemento a 16.
𝐹 𝐹 2 1 7+ 1
𝐹 𝐹 2 1 8
4. Se suma el complemento a 16, resultado del paso anterior, al minuendo.
1 1 1 1 𝐴 4 𝐹 𝐶 9+ 𝐹 𝐹 2 1 8
𝟏 𝐴 4 1 𝐸 1
5. El acarreo final obtenido es despreciado.
Aritmética Octal.
Suma.
La suma en sistema octal se realiza de la misma manera como en el sistema hexadecimal. Cabe mencionar que
para todos los diferentes sistemas se maneja el mismo procedimiento para las operaciones.
1. Se suma dígito a digito de los sumandos.
2. Cuando la suma es 7 o menos, se expresa como un dígito.
3. Si la suma es mayor a 7, se resta 8 y se desplaza un 1 a la siguiente posición del dígito.
Ejemplo 19.
Resta.
De la misma forma que la resta hexadecimal, existe el Complemento a 7 y el Complemento a 8. En seguida se
enlistan los pasos de acuerdo al complemento a 7.
1. Si la cantidad de dígitos del sustraendo es menor que la del minuendo, se completa el sustraendo con
ceros a la izquierda de la parte entera, y a la derecha de la parte decimal (encolumnar por la coma).
Acarreo
Resultado
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 15
2. Se halla el complemento del sustraendo, restando este valor del máximo valor octal con la misma
longitud del minuendo. Obteniendo como resultado el complemento a 7.
3. Se suma el minuendo al complemento del sustraendo.
4. Se elimina el 1 de la izquierda y se suma encolumnado con el último dígito de la cifra, sin importar la
coma decimal.
6 2 0 4,0 2
+ 2 6 0 4,7 7
1 0 1 1 ,0 1+ 𝟏
𝟏 𝟎 𝟏 𝟏 ,𝟎 𝟐
Ejemplo 20. Aplicando Complemento a 8.
3 7 1 2− 1 4 4
3 7 1 2− 0 1 4 4
7 7 7 7− 0 1 4 4 7 6 3 3+ 1
7 6 3 4
1 1 3 7 1 2+ 7 6 3 4
𝟏 3 5 4 6
Como se observa, el acarreo es ignorado.
Aritmética binaria.
Una de las principales aplicaciones de la electrónica digital es el diseño de dispositivos capaces de efectuar
cálculos aritméticos, ya sea como principal objetivo (calculadoras, computadoras, máquinas registradoras, etc.)
o bien, como una subfunción que les permita realizar su cometido principal (medidores, controladores,
registradores, etc.) Por ello, y dado que los sistemas digitales sólo pueden manejar información binaria, es
necesario entender las operaciones aritméticas fundamentales en términos del sistema de numeración binario.
En este tema se tratan las operaciones fundamentales en el sistema binario solamente para números enteros.
Un tratamiento más general debe contener un tratamiento de números fraccionarios, es decir, la aritmética de
punto fijo y la de punto flotante. La primera de estas dos es una extensión casi inmediata de la aritmética entera.
Notación.
En este tema cuando no se anote el subíndice de un número que sólo contiene unos y ceros se sobreentenderá
que está en binario.
Adición o suma binaria.
En forma similar a como realizamos las sumas en decimal, para realizarlas en otros sistemas es necesario
aprender de memoria algunas sumas básicas, especialmente las sumas de dígito con dígito; en decimal son 100
sumas (tablas de sumar), mientras que en binario son sólo 4, puesto que en binario sólo hay dos dígitos:
Resultado
Resultado
Acarreo
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 16
Tabla 6. Tabla de suma binaria.
Ejemplos:
21) Sumar 101101 + 10101, es decir, 4510 + 2110
22) Sumar 11101 + 111, es decir, 2910 + 710
Sustracción o resta binaria.
En forma similar a la suma, es conveniente memorizar la siguiente tabla:
Cuando la tabla anterior se usa en la resta de cantidades de varios bits,
se resta columna por columna de LSB a MSB y si aparece el caso de
restar 0 - 1 se interpreta como si fuera 10 - 1, resultando un 1 y un
acarreo negativo, o préstamo de 1 tomado de la siguiente columna.
Tabla 7. Tabla de resta binaria.
Ejemplos:
23) Restar 101101 - 10101, es decir, 4510 – 2110
24) Restar 11101 - 111, es decir, 2910 - 710
Acarrreos: 1 1 1 1 1
1 0 1 1 0 1
+ 1 0 1 0 1
1 0 0 0 0 1 0
Acarreos:
4 5
+ 2 1
6 6
Acarrreos: 1 1 1 1
1 1 1 0 1
+ 0 0 1 1 1
1 0 0 1 0 0
Acarreos: 1
2 9
+ 7
3 6
Préstamos: -1
1 0 1 1 0 1
- 1 0 1 0 1
0 1 1 0 0 0
Préstamos:
4 5
- 2 1
2 4
Préstamos: -1 -1
1 1 1 0 1
- 0 0 1 1 1
1 0 1 1 0
Préstamos:
2 9
- 7
2 2
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 17
Representación de números negativos.
En la construcción de dispositivos digitales que realicen operaciones de resta se puede obtener un considerable
ahorro si esta operación es realizada mediante los mismos dispositivos que realizan la suma, de esta manera no
es necesario construir dos tipos de dispositivos, y el problema se convierte más bien en cómo manejar
adecuadamente los números negativos para realizar restas usando sumas.
Magnitud signada.
El método de representación de números negativos que consiste en anteponer un signo “-” al valor absoluto de
la cantidad se le llama magnitud signada y es el método tradicionalmente usado en decimal, ya que está pensado
en su manipulación por humanos.
Ejemplos: -510, -10112, .5EH, ... etc.
La principal desventaja del método de magnitud signada es que requiere de dos métodos diferentes, uno para la
suma y otro para la resta.
Sistema de numeración de complemento a la base (complemento a dos).
Un método de representación de cantidades negativas que permite realizar restas mediante sumas consiste en
representar los números negativos por su complemento, es decir, por lo que les falta para cierta cantidad tomada
como base.
En el sistema de numeración de complemento a la base r, los números negativos de n dígitos se representan por
la cantidad que les falta para completar rn. Es decir, en este sistema, la cantidad –Nr se representa por su
complemento, es decir, como rn -N y en ocasiones se denota [N]r.
Ejemplos:
25) Caso decimal (complemento a 10) para 2 dígitos (r=10, n=2)
-1510= 102 - 15 = [85]10
De esta manera, una resta como 45 - 15, se puede realizar mediante la suma 45 + 85 =
(1)30, despreciando el acarreo indicado entre paréntesis, ya que sólo se están usando 2
dígitos.
26) Caso binario (complemento a 2) para 4 dígitos (r=2, n=4)
-01012 = (10000 - 0101)2 = [1011]2
De esta manera, una resta como 1010, se puede realizar mediante la suma 1010
- 0101 + 1011
0101 (1)0101
Despreciando el acarreo indicado entre paréntesis, ya que sólo se están usando 4 dígitos.
Observación: En el sistema de complemento a dos de los números positivos se escriben sin ningún cambio.
Bit de signo (S).
En el sistema de numeración de complemento a dos el MSB se denomina bit de signo y se usa para indicar el
signo del número representado, de acuerdo a la siguiente convención:
S = 0 El número es positivo y el resto de los bits indica su magnitud directamente.
S = 1 El número es negativo y está en la forma complementada.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 18
Ejemplo 27: Expresar +5 y -5 en una palabra de 8 bits en el sistema de complemento a 2.
+ 5 es positivo y se expresará directamente con su magnitud en binario como 0000101
- 5 es negativo y estará expresado en la forma de complemento a 2 como:
+ 5 = 0 0 0 0 0 1 0 1
Complemento a 2: 1 1 1 1 1 0 1 1 = - 510
Obsérvese que de acuerdo a esta convención del sistema de complemento a dos, al aplicar el complemento a 2
a un número binario, equivale a cambiarle el signo (multiplicar por -1).
Ejemplo 28: 11010112 es un número de 7 bits, incluyendo el bit signo. ¿Cuál es su equivalente decimal?
Como el bit signo es = 1, el número es negativo y se encuentra en su forma
complementada.
1 1 0 1 0 1 1 : Número negativo
0 0 1 0 1 0 1 : Valor absoluto (complemento a dos del número)
21 : Equivalente decimal del complemento, entonces: [1101011]2 = -2110
Ejemplo 29: Si (01101011)2 es un número de 8 bits, incluyendo el bit signo. Cuál es su equivalente
decimal?.
Como el bit signo es = 0, el número es positivo y el resto de los bits indican su magnitud.
Número positivo: 0 1 1 0 1 0 1 1 = 10710
Valor absoluto: 0 1 1 0 1 0 1 1 ;entonces (01101011)2 =+10710
Ejemplo 30: Cuál es el equivalente en binario de complemento a dos de (-535)10 ?
Usaremos hexadecimal como paso intermedio a binario. Convirtiendo +535 a Hexadecimal:
Por tanto (+535)10 = (010 0001 0111)2
(+535)10 = 010 0001 0111
101 1110 1001: complemento a dos
Por lo tanto (-535)10 = [101 1110 1001]2
Obsérvese que para indicar este resultado se requieren por lo menos 11 bits.
Complemento a la base disminuida.
Una alternativa al sistema de complemento a la base es el complemento a la base menos 1. En este sistema un
número negativo -N de n dígitos en base r se representa por lo que le falta para llegar a rn-1 y se suele denotar
por [N]r-1, es decir, [N]r-1 = rn - 1 - N. en otra palabras, [N]r-1 = [N]r -1.
Ejemplos:
31) Caso decimal (complemento a 9) para 2 dígitos (r=10, n=2)
-1510 = 102 - 1 - 15 = 99 - 15 = [84]9
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 19
De esta manera, una resta como 45 - 15, se puede realizar mediante la suma 45 + 84 =
(1)+29,
(Sumando el acarreo indicado entre paréntesis como una corrección del resultado).
32) Caso binario (complemento a 2) para 4 dígitos (r=2, n=4)
-01012 = (10000 - 1 - 0101)2 = (1111 - 0101)2 = [1010]1
De esta manera, una resta como 1010, se puede realizar mediante la suma 1010
- 0101 + 1010
0101 (1)0100
+ 1
0101
(Sumando el acarreo indicado entre paréntesis).
Obtención de complementos binarios sin usar restas.
La ventaja que provee el sistema de complementos al convertir una resta en una suma no sería tal si para obtener
el complemento usamos la definición, ya que esta requiere una resta. A continuación se describen dos
algoritmos que permiten obtener el complemento a 2 sin usar restas:
Algoritmo 1
1) Se copian los bits del número LSB a MSB hasta encontrar el primer bit 1.
2) Se prosigue invirtiendo los bits restantes (es decir, cambiando 1’s por 0’s y 0’s por 1’s)
hasta llegar al MSB.
Ejemplo 33. Para obtener el complemento a 2 de N=10110100
Se copian los primeros bits hasta el primer 1: 100
Se invierten los bits restantes: 01001
Resultando finalmente: 01001100
Algoritmo 2
1) Se obtiene el complemento a 1 del número invirtiendo todos sus bits.
2) Se suma 1 al resultado anterior.
Ejemplo 34. Para obtener el complemento a 2 de N= 010110
Se invierten todos los bits (complemento a 1): 101001
Se suma 1 al resultado: +1
Resultando finalmente: 101011
Sumas y restas usando complemento a dos.
A continuación se dan algunos ejemplos de restas usando complemento a dos, se introduce el concepto de
sobreflujo y el de bit de signo.
Sobreflujo. Se dice que una operación (en el sistema de complemento a dos) produce un sobreflujo, cuando el
resultado requiere más bits que los que se están usando en la operación.
Para visualizar el concepto de sobreflujo, es conveniente tener en mente el rango representable en complemento
a dos con n bits.
Ejemplo 35: ¿Cuál es el rango de números representables en complemento a dos con 3 bits?
En este caso es simple representar todos los números e interpretarlos en decimal:
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 20
Entonces el rango es de -4 a +3. No es difícil concluir que en general
el rango representable con n bits será de -2n-1 a +2n-1-1.
De acuerdo al ejemplo anterior, si intentamos sumar (por ejemplo) 3+2
usando tres bits, el resultado (5) no podrá ser expresado con tres bits,
ya que se sale del rango y se tendrá un sobreflujo.
Tabla 8. Rango de números representados con 3 bits.
Ejemplo 36: Realizar las siguientes sumas en binario de complemento a dos, usando 4 bits. Indicar el signo
del resultado y en donde se produce sobreflujo:
a) 4+3
El resultado es positivo y no hay sobreflujo.
b) -4 + 5
El resultado es positivo y no hay sobreflujo.
c) -4 - 5 ,no se obtiene complemento para el -5, la suma se realiza de forma directa.
El resultado es positivo, lo cual no puede ser pues se están sumando dos datos negativos
y hay sobreflujo.
d) 6 + 5
El resultado es negativo, lo cual no puede ser pues se están sumando dos datos positivos
y hay sobreflujo.
e) 9 + 2
Esta operación NO se puede realizar con 4 bits, ya que el 9 requiere al menos 5 bits para
ser expresado en el sistema de complemento a 2.
0 1 0 0
+ 0 0 1 1
0 1 1 1
1 1 0 0
+ 0 1 0 1
1 0 0 0 1
1 1 0 0
+ 1 1 0 1
1 1 0 0 1
0 1 1 0
+ 0 1 0 1
1 0 1 1
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 21
Interpretación del acarreo en el resultado de sumas en complemento a 2.
"Si los signos de los números que se suman son diferentes, cualquier acarreo obtenido es falso y deberá de ser
ignorado".
Ejemplo: Ver inciso (b) del ejemplo anterior.
"Si los signos de los números que se suman son iguales, el acarreo es verdadero y actúa como el bit signo. En
ausencia de acarreo se considera que este es 0, así la respuesta es positiva".
Ejemplos ver incisos (a), (c) y (d) del ejemplo anterior.
Ejemplo 37: Efectúe las siguientes operaciones y exprese el resultado en decimal con su signo (MSB = bit
signo)
a).-
Como los signos de los números son diferentes, el acarreo se ignora bit signo = 0 = + resultado = + 00101101
= +4510. Como el segundo número es negativo, se obtiene su complemento a 2, el bit de signo permanece igual
y se suma al primero. Por lo tanto el resultado anterior es erróneo. De manera que queda así:
y en decimal es
El resultado concuerda con el resultado en decimal, ya que el acarreo es ignorado de acuerdo a la nota anterior.
b).-
y en decimal es
Como los signos son iguales, el acarreo es el bit de signo del resultado acarreo = bit signo = 1, por lo tanto el
resultado es un número negativo.
Multiplicación binaria.
El conjunto básico de multiplicaciones de un sólo bit que hay que memorizar se resume en la siguiente tabla.
Tabla de multiplicar:
Sin embargo, al realizar multiplicaciones de números de varios bits, usamos
las mismas reglas de la multiplicación decimal. De manera que una
multiplicación de este tipo se convierte al final en varias sumas.
Tabla 9. Tabla de multiplicación binaria.
0 1 1 1 1 0 1 1
+ 1 0 1 1 0 0 1 0
1 0 0 1 0 1 1 0 1
0 1 1 1 1 0 1 1
+ 1 1 0 0 1 1 1 0
1 0 1 0 0 1 0 0 1
+ 1 2 3
+ - 5 0
7 3
1 0 0 1 0 1 1 1
+ 1 0 1 0 0 1 1 0
1 0 0 1 1 1 1 0 1
- 2 3
+ - 3 8
- 6 1
* 0 1
0 0 0
1 0 1
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 22
Ejemplo 38:
y en decimal, se tiene Multiplicación por sumas y corrimientos.
Como se puede observar en el ejemplo, la multiplicación puede realizarse en una forma más sistematizada como
se indica enseguida, de acuerdo a los bits del multiplicador, comenzando por el LSB hacia el MSB. El algoritmo
descrito a continuación es especialmente útil si la multiplicación va a ser realizada por una máquina digital
(circuitos o computadora digital).
Algoritmo
1) Si el primer bit en el multiplicador es 1, anote el multiplicando como resultado parcial.
2) Si el primer bit del multiplicador es 0; anote ceros como resultado parcial.
3) Se recorre el multiplicando un lugar a la izquierda.
4) Por cada 1 en el multiplicador después del primer bit sume el multiplicando al resultado parcial.
Enseguida recorra el multiplicando un lugar a la izquierda.
5) Por cada cero en el multiplicador después del primer bit, no sume, únicamente recorra el multiplicando
un lugar a la izquierda.
6) Repita el procedimiento hasta incluir todos los bits del multiplicador.
Comprobando en decimal: (17)10 * (25)10 = (425)10
División binaria.
En la división de números binarios se puede aplicar el mismo procedimiento de prueba y error que se usa en la
división decimal.
Ejemplo 39:
1 0 1 1
* 1 0 1
1 0 1 1
0 0 0 0
1 0 1 1
1 1 0 1 1 1
1 1
* 5
5 5
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 23
División por restas y corrimientos.
En forma similar a la multiplicación, la división se puede sistematizar para realizarla por restas y corrimientos.
En este algoritmo el cociente es obtenido bit por bit, así, cada siguiente sólo puede ser 0 ó 1. Así comenzando
de izquierda a derecha, si se puede substraer el divisor del dividendo, se anotará un 1 en el cociente, en caso
contrario el dígito será 0. Después de cada paso se hace un corrimiento del divisor hacia la derecha.
Ejemplo 40: La división 5710 /310:
Códigos numéricos.
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 temas anteriores. Por ello es conveniente idear
formas diferentes de representar (codificar) información diversa usando solamente ceros y unos. En este tema
se describen algunos códigos tanto para información numérica como alfanumérica, cuyo uso se ha generalizado
por diversas razones, la mayoría de las veces de conveniencia, aunque no siempre.
Los códigos numéricos sirven para representar números con fines de procesamiento y almacenamiento. Los
números de punto fijo y de punto flotante son ejemplos de estos códigos.
Números de punto fijo.
Se utilizan para representar, tanto enteros con signo como fracciones con signo. En ambos casos se usan los
mismos sistemas de magnitud y signos de complemento a dos o de complemento a uno para representar los
valores con signo. Los enteros de punto fijo tienen un punto binario implícito a la derecha del bit menos
significativo, las fracciones de punto fijo tienen un punto binario implícito entre el bit de signo y el bit más
significativo.
Ejemplo 41. Dar dos posibles interpretaciones del número de punto fijo de ocho bits 01101010 usando el
sistema de complemento a dos.
Como el bit de signo es 0, el número representa el entero positivo 1101010, o bien la fracción
positiva 0.1101010.
Ejemplo 42. Dar dos posibles interpretaciones del número de punto fijo de 8 bits 11101010, usando el
sistema de complemento a dos.
El bit del signo es 1, por lo tanto el número representa a – 00010110, o bien – 0.0010110.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 24
Figura 9. Códigos utilizados en las computadoras.
Representaciones con exceso.
Una representación con exceso K de un código C se
forma usando el valor K a cada palabra del código
C. las representaciones con exceso se utilizan a
menudo para representar los exponentes de los
números de punto flotante.
Las representación con exceso 8 de la Tabla 10, se
obtiene al sumar (1000)2 al código de 4 bits.
CODIGOS DE COMPUTADORA
CODIGOS
NUMERICOS
NUMEROS
DE PUNTO FIJO
REPRESENTACIONES
CON EXCESO
NUMEROS
DE PUNTO FLOTANTE
CODIGOS DE
CARACTERES Y OTROS
DECIMAL CODIFICADO
EN BINARIO (BCD)
ASCII CODIGO GRAY
CODIGO PARA DETECCIÓN Y
CORRECCION DE ERRORES
CODIGOS
DE PARIDAD
CODIGO
DOS DE CINCO
CODIGOS
HAMMING
DECIMAL REPRESENTACIÓN
BINARIA
EXCESO
8
7 0111 1111
6 0110 1110
5 0101 1101
4 0100 1100
3 0011 1011
2 0010 1010
1 0001 1001
0 0000 1000
Tabla 10. Tabla de representación con exceso (exceso 8).
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 25
Números de punto flotante.
Un número de punto flotante es un número N que se escribe como, N = M*rE, donde M es la mantisa, es un
número de punto fijo que contiene los dígitos significativos de N y E es el exponente o característica, es un
entero de punto fijo.
Al deducir la representación de un número de punto flotante, la mantisa y la característica se codifican por
separado. La base es implícita y no se incluye en la representación.
La mantisa, muchas veces, se codifica con magnitud y signo, por lo general como una fracción.
Ejemplo 43: -246,36 = -2.4636 E+2 = -2,4636*102
82000000000 = 8,2 E+10 = 8,2 * 1010
Ejemplo 44: Representar el número 1210 en sistema binario normalizado.
1210= 11002, normalizado es 0,1100 * 24
El exponente 4 en exceso a 128 (128+4) es 10000100
Representación: 0 10000100 1100000000000000000000
Por lo tanto el -1210 en complemento a dos, es
Representación: 1 10000100 0011111111111111111111
Decimal codificado en binario (BCD).
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
Ejemplo 45: Expresar 937.2510 en BCD.
937.2510 = 1001 0011 0111 . 0010 0101BCD
Ejemplo 46: Expresar el número N=
(10010110010111)BCD escrito en código BCD8421,
en decimal.
Tabla 11. Código BCD.
Separando los LSB a MSB en grupos de 4: N =(10,0101,1001,0111)BCD = 259710
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 tabla 12.
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.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 26
Tabla 12. Código BCD exceso 3.
Ejemplo 47: 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
Ejemplo 48: 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 Tabla 13. Código BCD 2421.
Código ASCII.
Muchas aplicaciones de sistemas digitales (especialmente 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 tabla 14, muestra una parte del código ASCII.
Ejemplo 49: La palabra “Start” se representa en código ASCII como sigue
En resumen, el código ASCII consta entre otros, de los siguientes grupos de caracteres:
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 27
Los caracteres ASCII, se observan en la tabla 14.
Código Gray.
Este es un código binario no ponderado y tiene la propiedad de que los códigos para dígitos decimales sucesivos
difiere en un sólo bit. Al código Gray también se le llama autorreflejado, o cíclico. En la siguiente tabla se
muestra dicho código para los números del 0 al 15.
Conversión Binario-Gray
Para convertir de Binario a Gray puede seguirse el siguiente
procedimiento.
Algoritmo.
1.- El MSB se deja igual.
2.- Avanzando de MSB a LSB se suma cada bit con el siguiente
despreciando el acarreo para obtener el siguiente bit del código
Gray.
Tabla 15. Código Gray.
Ejemplo 50. Escribir en Código Gray el número 4510
Como 4510 = 1011012 Al aplicar el algoritmo a este número binario, tenemos:
Es decir, 4510=1 1 1 0 1 1gray
Conversión Gray-Binario
Para convertir de Gray a Binario puede seguirse el siguiente procedimiento
Algoritmo.
1.- El MSB se deja igual.
2.- Avanzando de MSB a LSB a cada bit obtenido en binario se le suma sin acarreo el siguiente bit de
código Gray.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 28
Ejemplo 51. Obtener el equivalente decimal del siguiente código gray: N= 011011gray
Al aplicar el algoritmo a este número binario, tenemos:
Es decir, N= 0100102 = 1810
Tabla 14. Código ASCII.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 29
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.
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, puertas 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. 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. En esta sección se ilustran algunos códigos que permiten
detectar errores y, en algunos casos, incluso corregirlos.
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’s del dato sea un
número par incluyendo el bit de paridad. En el código de paridad impar, el bit de paridad se elige de modo
que el número de bits 1’s (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 52: En la tabla 16 se muestra un código de paridad par de 8 bits para los caracteres ASCII “FIE.”
Ejemplo 53. Si un transmisor envía la información
anterior y hay errores en la transmisión, suponiendo
que el receptor recibe la siguiente información (ver
tabla 17) se anota los datos que llegaron erróneos y
si se detectó o no el error, agrega en la columna vacía
cuantos bits cambiaron en la transmisión.
Tabla 16. Ejemplo de un código de paridad par para los caracteres FIE en código ASCII.
Tabla 17. Ejemplo de un código de paridad par para los caracteres FIE para detectar
errores.
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 30
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 indica, sólo dos de los cinco bits son 1.
Ejemplo 54: Representar el numero decimal 23710 en
código 2 de 5.
23710 = 00110 01001 100102 de 5
Tabla 18. Código biquinario.
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.
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 55: Usando paridad par, construir el código de Hamming para el carácter "b".
Código ASCII para "b"
Código de Hamming para "b"
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 31
El carácter ASCII "b" se representa por el número binario 1100010. El código de Hamming para "b" en binario
es 00111001010.
Considérese 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 ó 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.
Para resolver:
1. Representar los siguientes números en sistema decimal.
a) 3478=
b) 22013=
c) AF216=
d) 101112=
2. Expresar los siguientes números binarios en hexadecimal.
a) 01011010111110112=
b) 100100011100001012=
c) 11110000111100002=
3. Expresar los siguientes números hexadecimales en binario.
a) FFFF16=
b) 01AC16=
c) 55AA16=
d) 321016=
4. Realizar las siguientes operaciones binarias.
1010+ 0111
1010− 0111
1010+ 0101
1010− 0101
SISTEMAS Y CÓDIGOS NUMÉRICOS
Página 32
5. Representar la palabra “TAREA” en código ASCII.
Carácter
Código ASCII
A6 A5 A4 A3 A2 A1 A0
T
A
R
E
A
6. Se desea transmitir la frase “COMPUTADORA” a través de un dispositivo electrónico. El dispositivo
solo es capaz de reconocer el código Gray. Determinar la palabra “COMPUTADORA” en código
ASCII:
- C
- O
- M
- P
- U
- T
- A
- D
- O
- R
- A
¿Cuál es el correspondiente código Gray para cada una de las letras?
7. Construir el código Hamming utilizando paridad par para la letra inicial de su nombre (Si su nombre
es Juan, la letra es ”J”).