Universidad de Costa Rica - Escuela de Ciencias de la... Curso: CI-1203. Introducción a la Organización de Computadores. 1

Anuncio
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
1
Semana 2.
Conceptos generales sobre: Sistemas numéricos y códigos.
Tomado del libro:
Diseño Digital. Principios y prácticas.
2-
Sistemas numéricos y códigos.
Los sistemas digitales se construyen con circuitos que procesan digitos binarios (0 y 1),
aunque pocos problemas de la vida real están basados en números binarios o en cualquier otro
sistema numérico. Por tanto, el diseñador debe establecer una correspondencia entre los dígitos
binarios procesados por los circuitos digitales y los números, sucesos y condiciones de la vida real.
A1.
Sistemas numéricos posicionales: números octales y hexadecimales.
Sistemas numéricos posicionales.
El sistema numérico tradicional que se aprende en la escuela y se usa todos los días, se
conoce como sistema numérico posicional. En tal sistema, un número se representa por una cadena
de dígitos, donde cada posición de dígito tiene un peso asociado. El valor de un número es una suma
ponderada de los dígitos, por ejemplo:
1734 = 1 * 1000 + 7 * 100 + 3 * 10 + 4 * 1
Cada peso es una potencia de 10 correspondiente a la posición del dígito. Un punto decimal
permite el uso de potencias de 10 tanto positivas como negativas:
5185,68 = 5 * 1000 + 1 * 100 + 8 * 10 + 5 * 1 + 6 * 0,01 + 8 * 0,01
En general, un número D de la forma d3 d2 d1 d0,d-1 d-2 tiene el valor
D = d1* 101 + d0* 100 + d-1 * 10-1 + d-2 * 10-2
Aquí, la cifra 10 se conoce como la base o raíz del sistema numérico. En los sistemas
posicionales, la raíz debe ser un entero r, por lo que un dígito en la posición i tiene peso ri. La forma
general de un número en tal sistema numérico es:
dp-1 dp-2...d1 d0.d-1 d-2...d-n
donde existen p dígitos a la izquierda del punto y n dígitos a la derecha del punto conocido como
punto decimal en el sistema con base 10. Si se omite el punto, se supone que está a la derecha del
dígito de la extrema derecha. El valor del número es la suma de cada dígito multiplicado por la
correspondiente potencia de la raíz:
p -1
D=
d*r
i
i = -n
M. Sc. Sanders A. Pacheco Araya.
i
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
2
Si se exceptúan los posibles ceros anteriores y posteriores, la representación de un número en
un sistema numérico posicional es única. (Obviamente que 0185,6300 es igual a 185,63, etc) El
dígito que está más a la izquierda de tal número se llama dígito de orden superior o más
significativo; el de más a la derecha es el dígito de orden inferior o memos significativo.
Como veremos más adelante, los circuitos digitales tienen señales que normalmente están en
una de dos condiciones: alto o bajo, cargado o descargado, desactivado o activado. Las señales en
estos circuitos representan dígitos binarios (o bits) que tienen uno de dos valores: 0 o 1. De ahí que
la base 2 a menudo se use para representar números en un sistema digital. La forma general de un
número binario es
bp-1 bp-2...b1 b0.b-1 b-2...b-n
y su valor es
p -1
B=
 b* 2
1
i
i = -n
En un binario, el punto se llama punto binario. Cuando se trate con números binarios u otros
no decimales, se usará un subíndice para la base de cada número, a menos que ésta sea obvia por el
contexto. Algunos ejemplos de números binarios y sus equivalentes decimales son:
100112
1000102
101,0012
= 1*16+0*8+0*4+1*2+1*1=1910b
= 1*32+0*16+0*8+0*4+1*2+0*1=3410
= 1*4+0*2+1*1+0*0,5+0*0,25+1*0,125=5,12510
El bit ubicado más a la izquierda de un número binario se llama bit de orden superior o más
significativo (MSB, most significant bit); el localizado más a la derecha es el bit de orden inferior o
menos significativo (LSB, least significant bit).
2.
Números octales y hexadecimales.
La base 10 es importante debido a que se usa en la vida diaria y la raíz 2 resulta crucial, ya
que los números binarios pueden procesarse directamente mediante circuitos digitales. Los números
en otras bases no se procesan a menudo directamente, pero pueden ser esenciales para
documentación u otros propósitos. En particular las bases 8 y 16 proporcionan representaciones
breves que son convenientes para números con múltiples bits en un sistema digital.
El sistema numérico octal usa la base 8, mientras que el sistema numérico hexadecimal
emplea la base 16. La tabla 1. Muestra los enteros binarios desde 0 hasta 1111 y sus equivalentes en
numeración octal, decimal y hexadecimal. El sistema octal necesita 8 dígitos, así que utiliza los
dígitos del 0 al 7 del sistema decimal. El sistema hexadecimal necesita 16 dígitos, así que
complementa los dígitos decimales 0-9 con las letras A-F.
Los sistemas octal y hexadecimal son útiles para representar números de muchos bits debido
a que sus bases son potencias de 2. Como una cadena de tres bits puede tener ocho combinaciones
diferentes, cada cadena de tres bits puede representar de manera única a un dígito octal, de acuerdo
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
3
con la tercera y cuarta columnas de la tabla 1. De manera semejante, una cadena de 4 bits puede
representar a un dígito hexadecimal de acuerdo con la quinta y sexta columnas de la tabla.
En consecuencia, es muy sencillo convertir un número binario a octal. Si se empieza con el
punto binario y se continúa a la izquierda, simplemente se separan los bits en grupos de tres y se
reemplaza cada grupo con el correspondiente dígito octal:
1000110011102
= 100 011 001 1102
=
111011011101010012 = 011 101 101 110 101 0012 =
43168
3556518
El procedimiento para la conversión de binario a hexadecimal es similar, excepto que se usan
grupos de cuatro bits:
1000110011102
= 1000 1100 11102
111011011101010012 = 0001 1101 1011 1010 10012
M. Sc. Sanders A. Pacheco Araya.
=
=
8CE16
1DCBA916
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
4
Tabla 1. Números binarios, octales y hexadecimales.
Binario
Decimal
Octal
Cadena de 3
bits
Hexadecimal
Cadena de 4
bits
0
0
0
000
0
0000
1
1
1
001
1
0001
10
2
2
010
2
0010
11
3
3
011
3
0011
100
4
4
100
4
0100
101
5
5
101
5
0101
110
6
6
110
6
0110
111
7
7
111
7
0111
1000
8
10
----
8
1000
1001
9
11
----
9
1001
1010
10
12
----
A
1010
1011
11
13
----
B
1011
1100
12
14
----
C
1100
1101
13
15
----
D
1101
1110
14
16
----
E
1110
1111
15
17
----
F
1111
En estos ejemplos se han agregado libremente ceros a la izquierda para que el número total de
bits sea un múltiplo de 3 o 4, según se requiera.
Si un número binario contiene dígitos a la derecha del punto binario, se puede convertir a
octal o hexadecimal comenzando en el punto y siguiendo hacia la derecha. Tanto en el lado izquierdo
como en el derecho pueden agregarse ceros para obtener múltiplos de tres o cuatro bits, como se
muestra en el ejemplo siguiente.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
5
10,10110010112
= 010 , 101 100 101 1002
= 2,54548
= 0010 , 1011 0010 11002
= 2,B2C16
La conservación en la dirección contraria (de octal a hexadecimal a binario) es muy sencilla.
Simplemente se reemplaza cada dígito octal o hexadecimal con la correspondiente cadena de 3 o 4
bits, como se ilustra a continuación:
13578
2046,178
BEAD16
9F,46C16
= 001 011 101 1112
= 010 000 100 110 , 001 1112
= 1011 1110 1010 11012
= 1001 1111 , 0100 0110 1100
El sistema numérico octal fue bastante popular debido a que ciertas minicomputadoras tenían
indicadores luminosos e interruptores en su panel frontal, agrupados de tres en tres. Sin embargo, el
sistema octal no es muy usado en la actualidad, debido a la preponderancia de las máquinas que
procesan bytes de 8 bits. Es difícil extraer valores de cada byte en cantidades de varios bytes por
medio de la representación octal, por ejemplo, ¿Cuáles son los valores de los cuatro bytes de 8 bits
en el número de 32 bits con la siguiente representación octal 123456701238?
En el sistema hexadecimal, dos dígitos representan un byte de 8 bits y 2n dígitos representan
una palabra de n bytes; cada par de dígitos constituye exactamente un byte. por ejemplo, el número
hexadecimal de 32 bits 5678ABCD16 consiste de cuatro bits con valores 5616, 7816, AB16 y CD16. En
este contexto, a un dígito hexadecimal de cuatro bits algunas veces se le llama semibit (nibble); un
número de 32 bits (4 bytes) tiene ocho semibits. Los números hexadecimales a menudo se usan para
describir el espacio de direcciones de la memoria de la computadora. Por ejemplo, una máquina con
direcciones de 16 bits puede considerarse como que tiene una memoria de lectura/escritura instalada
en las direcciones 0-EFFF16 y memoria sólo de lectura en las direcciones F000-FFFF16.
B-
Conversión entre sistemas numéricos posicionales.
De manera genérica, la conversión entre dos bases no puede hacerse por simple sustitución;
se requiere hacer operaciones aritméticas. Se mostrará cómo convertir un número en cualquier base a
base 10 y viceversa, usando aritmética de base 10.
Anteriormente se indica que el valor de un número en cualquier base está dado por la
fórmula:
p -1
D=
d*r
i
i
i = -n
donde r es la base del número y hay p dígitos a la izquierda del punto y n a la derecha. Por lo que el
valor del número puede calcularse al convertir cada dígito del número a su equivalente en base 10 y
expandiendo la fórmula mediante la aritmética en base 10. He aquí algunos ejemplos:
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
1CE816 =
F1A316 =
436,58
132,34
1*163 + 12 * 162 + 14 * 161 + 8 * 160
15*163+1*162+10*161+3*160
=
4*82 +3*81+6*80+5*8-1
=
1*42+3*41+2*40+3*4-1
6
= 740010
= 6185910
= 286,62510
= 30,7510
Una forma corta para convertir números enteros a base 10 se obtiene al reescribir la
expansión de la fórmula como sigue:
D=((...((dp-1)*r+dp-2)*r+...)*r+d1)*r+d0
Es decir, comenzando con una suma de 0, se indica con el dígito de la extrema izquierda, se
multiplica la suma por r y se agrega el siguiente dígito a la suma, repitiendo esto hasta que todos los
dígitos se hayan procesado. Por ejemplo, puede escribirse
F1AC16= (((15)*16+1)*16+10)*16+12
Aunque la fórmula no es muy interesante en sí misma, constituye la base para un método muy
conveniente de convertir un número decimal D a una base r. Considere lo que pasa si dividimos la
fórmula por r. Ya que la parte de la fórmula que está en paréntesis es divisible por r, el cociente será
Q=(...((dp-1)*r+dp-2)*r+...)*r+d1
y el residuo será d0. Por lo que d0 puede calcularse como el residuo de la división larga de D entre r.
Además, el cociente de Q tiene la misma estructura que la fórmula original. Por consiguiente, las
divisiones sucesivas por r darán dígitos sucesivos de D de derecha a izquierda, hasta que se hayan
obtenido todos los dígitos de D. A continuación se dan algunos ejemplos:
179/2=89 residuo 1 (LSB)
/2=44 residuo 1
/2=22 residuo 0
/2=11 residuo 0
/2=5 residuo 1
/2=2 residuo 1
/2=1 residuo 0
/2=0 residuo 1 (MSB)
17910 = 101100112
467/8=58 residuo 3 (dígito menos significativo)
/8=7 residuo 2
/8=0 residuo 7 (dígito más significativo)
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
7
46710 = 7238
3417 / 16 = 213 residuo 9 (dígito menos significativo)
/ 16 = 13 residuo 5
/ 16 = 0 residuo 13 (dígito más significativo)
341710 = D5916. La tabla 2. Resume los métodos para la conversión entre las bases más comunes.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
8
Tabla 2. Métodos de conversión para las bases comunes.
Conversión
Método
Ejemplo
Binario a
octal
hexadecimal
decimal
sustitución
sustitución
suma
101110110012 = 10 111 011 0012 = 27318
101110110012 = 101 1101 10012 = 5D98
101110110012 =
1*1024+0*512+1*256+1*128+1*64+0*32+1*16+1*8+0*4+1*1=
149710
Octal a
binario
hexadecimal
decimal
sustitución
sustitución
suma
12348 = 001 010 011 1002
12348 = 001 010 011 1002 = 0010 1001 11002 = 29C16
12348 = 1*512+2*64+3*8+4*1 = 66810
sustitución
sustitución
C0DE16 = 1100 0000 1101 11102
C0DE16 = 1100 0000 1101 11102 = 1 100 000 011 01 1 1102 =
1403368
C0DE16 = 12*4096+0*256+13*16+14*1 = 4937410
Hexadecimal
a
binario
octal
suma
decimal
Decimal a
binario
octal
división
división
división
hexadecimal
10810 = 11011002
10810/ 2= 54 residuo 0 (LSB)
/ 2=27 residuo 0
/2=13 residuo 1
/2=6 residuo 1
/2=3 residuo 0
/2=1 residuo 1
/2=0 residuo 1 (MSB)
10810 = 1548
10810 / 8 = 13 residuo 4 (el dígito menos significativo)
/ 8=1 residuo 5
/8=0 residuo 1 (el dígito más significativo)
10810 = 6C16
10810+16=6 residuo 12 (el dígito menos significativo)
/16=0 residuo 6 (el dígito más significativo)
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
9
C-
Representación de números, suma y resta usando complementos.
La suma y resta manual de los números no decimales usa la misma técnica aprendida en la
escuela para los números decimales, sólo que las tablas de suma y resta son diferentes.
La tabla 3 es para la suma y resta de dígitos binarios. Al sumar los dos números binarios X y
Y, sumamos los bits menos significativos con un acarreo inicial (cin) de 0, lo que produce los bits de
acarreo (cout) y de suma (s) de acuerdo con la tabla. Se continúan procesando los bits de derecha a
izquierda, incluyendo el acarreo de la columna anterior en la suma de la siguiente columna.
Tabla 3. Suma y resta binaria.
cin o bin
x
y
cout
s
bout
d
0
0
0
0
0
0
0
0
0
1
0
1
1
1
0
1
0
0
1
0
1
0
1
1
1
0
0
0
1
0
0
0
1
1
1
1
0
1
1
0
1
0
1
1
0
1
0
0
0
1
1
1
1
1
1
1
En la figura 1 se muestran dos ejemplos de sumas decimales y las correspondientes sumas
binarias; se usa una flecha para indicar un acarreo de 1. Los mismos ejemplos se repiten y se
incluyen otros dos más; los acarreos como una cadena C de bits.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
C
101111000
C
001011000
X
190
10111110
X
173
10101101
Y
+ 141
+ 10001101
Y
+ 44
+ 00101100
X+Y
331
101001011
X+Y
217
11011001
011111110
C
C
10
000000000
X
127
01111111
X
170
10101010
Y
+ 63
+ 00111111
Y
+ 85
+ 01010101
X+Y
190
10111110
X+Y
255
11111111
Figura 1. Ejemplos de sumas decimales y sus correspondientes binarios.
La resta binaria se realiza de manera similar, usando préstamos (bin y bout) en vez de acarreos
entre cada paso y produciendo un bit de diferencia d. La figura 2 muestra dos ejemplos de restas
decimales y las correspondientes restas binarias. Al igual que en la resta decimal, los valores
minuendo binarios en las columnas se modifican cuando ocurre un préstamo, como se muestra con
las flechas y bits en negrita. Los ejemplos de la figura se repiten abajo junto con otros dos; esta vez
se muestran los préstamos como una cadena de B de bits.
Figura 2. Ejemplos de restas decimales y sus correspondientes binarias.
B
001111100
B
011011010
X
229
11100101
X
210
11010010
Y
- 46
- 00101110
Y
- 109
- 01101101
X-Y
183
10110111
X-Y
101
01100101
010101010
B
B
000000000
X
170
10101010
X
221
11011101
Y
- 85
- 01010101
Y
- 76
- 01001100
X-Y
85
01010101
X-Y
145
10010001
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
11
Un uso muy común de la resta en las computadoras es el de la comparación de dos números.
Por ejemplo, si la operación X-Y produce un préstamo en la posición del bit más significativo,
entonces X es menor que Y; de lo contrario X es mayor que 0 igual que Y. La relación entre acarreos
y préstamos en los sumadores y los restadores se explorará más adelante.
Pueden construirse las tablas de suma y resta para dígitos octales y hexadecimales o para
cualquier otra base. Si deben manipularse números no decimales con poca frecuencia, entonces es
bastante sencillo convertirlos a decimales, calcular resultados y luego convertirlos a no decimales. En
general, cada columna en una suma (o resta) puede hacerse convirtiendo los dígitos de la columna a
decimal, sumándolos en decimal y convirtiendo el resultado a los dígitos correspondientes de suma y
acarreo en la base no decimal. (Un acarreo produce siempre que la suma de la columna iguala o
excede a la base). Ya que la suma se hace en decimal, confiamos en el conocimiento que posea de la
tabla de suma decimal; lo único nuevo que se necesita aprender es la conversión de dígitos decimales
a no decimales y viceversa. La secuencia de pasos para sumar mentalmente dos números
hexadecimales se muestra abajo.
C
1100
1
1
0
0
X
19B916
1
9
11
9
Y
+ C7E616
+ 12
7
14
6
X+Y
E19F16
14
17
25
15
14
16+1
16+9
15
E
1
9
F
1. Representación de números negativos.
Hasta ahora se ha hablado de números positivos, pero hay muchas formas de representar a los
números negativos. En la vida diaria usamos el sistema de magnitud y signo, que se explica en
seguida. Sin embargo, la mayoría de las computadoras usan uno de los sistemas de números
complementados que presentaremos posteriormente.
1.1. Representación de magnitud y signo.
En el sistema de magnitud y signo, un número consiste de una magnitud y de un símbolo que
indica si la magnitud es positiva o negativa. Por lo que los números +98, -57, +123,5 y -13 los
interpretamos de la manera usual; también suponemos que el signo es “+” si no se escribe ningún
símbolo. Hay dos posibles representaciones del cero, “+0" y “-0", pero ambas tienen el mismo valor.
El sistema de magnitud y signo se aplica a los números binarios por medio de una posición de
bit extra para representar el signo (el bit de signo). De manera tradicional, el bit más significativo
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
12
(MSB) de la cadena de bits se usa como el bit de signo (0= más, 1 =menos) y los bits de orden
inferior contienen la magnitud. Así que escribamos varios enteros en magnitud y signo, de 8 bits y
sus equivalentes decimales:
010101012 = +8510
011111112 = +12710
000000002 = +010
110101012 = -8510
111111112 = -12710
100000002 = -010
El sistema de magnitud y signo contiene un número igual de enteros positivos y negativos.
Un entero en magnitud y signo de n bits está en el rango de -(2n-1-1) a +(2n-1-1), con dos posibles
representaciones del cero.
Ahora suponga que se quiere construir un circuito de lógica digital para que sume en
magnitud y signo. El circuito debe examinar los signos de los sumandos para determinar que hacer
con las magnitudes. Si los signos son los mismos, éste debe sumar las magnitudes y dar el mismo
signo al resultado. Si los signos son diferentes, éste debe comparar las magnitudes, restar la más
pequeña a la más grande y dar al resultado el signo de la más grande. Todos estos “si”, “sumas”,
“restas” y “comparaciones” se traducen en circuitos lógicos bastante complejos. Los sumadores para
sistemas de números complementados son mucho más simples, como se mostrarán en seguida.
Quizás la característica que compensa el sistema de magnitud y signo es que, una vez que sabemos
cómo construir un sumador de magnitud y signo, es casi trivial construir un restador, éste sólo
necesita cambiar el signo del sustraendo y pasarlo con el minuendo a un sumador.
1.2 Sistema numérico en complemento.
Mientras que los sistemas de magnitud y signo niegan un número al cambiar su signo, un
sistema numérico en complemento niega un número al tomar su complemento definido por el
sistema. Tomar el complemento es más fácil que cambiar el signo, pero los dos números en un
sistema en complemento pueden sumarse o restarse directamente sin verificar la magnitud y signo,
cómo lo requiere el sistema de magnitud y signo. Se describirán dos sistemas numéricos en
complemento, llamados “el complemento a la base” y el “complemento base disminuido”.
En cualquier sistema numérico en complemento, normalmente se trabaja con un número fijo
de dígitos, digamos n. (Sin embargo, puede incrementarse el número de dígitos mediante la
“extensión del signo”) Si se supone que la base es r y que los números tienen la forma.
D= dn-1 dn-2... d1 d0
El punto está a la derecha, así que el número es un entero. Si una operación produce un
resultado que requiere más de n dígitos, se descartan los dígitos extra de orden superior. Si un
número D se complementa dos veces, el resultado es D.
1.3. Representación en complemento a la base.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
13
En un sistema en complemento a la base, el complemento de un número de n dígitos se
obtiene al restarlo de rn. En el sistema decimal, el complemento a la base se llama el complemento a
10. Algunos ejemplos con números decimales de 4 dígitos (y la diferencia de 10 000) se muestran en
la tabla 4.
Tabla 4. Ejemplos de complemento a 10 y 9.
Número
Complemento a 10
Complemento a 9
1849
8151
8150
2067
7933
7932
100
9900
0988
7
9993
9992
8151
1849
1848
0
10000 (=0)
9999
Por definición, el complemento a la base de un número D de n dígitos se obtiene al restarlo
de r . Si D está entre 1 y rn-1, esta resta produce otro número entre 1 y rn-1. Si D es 0, el resultado de
la resta es rn, que tiene la forma 100 ... 00, donde hay un total de n + 1 dígitos. Al descartar el dígito
extra de orden superior, se obtiene el resultado de 0. Por lo que hay sólo una representación del cero
en un sistema de complemento a la base.
Por definición, parece necesaria una operación de resta para calcular el complemento a la
base de D. Sin embargo, esta resta puede evitarse al rescribir rn como (rn-1 )+1 y rn-D como ((rn-1)D)+1. El número rn-1 tiene la forma mm... mm, donde m = r-1 y tiene n dígitos m. Por ejemplo: 10
000 es igual a 9 999 +1. Si definimos el complemento de un dígito d como r-1-d, luego (rn-1) -D se
obtiene al complementar los dígitos de D. Por lo que el complemento a la base de un número D se
obtiene al complementar los dígitos individuales de D y sumándole 1. Por ejemplo, el complemento
a 10 de 1849 es 8150 + 1 o sea 8151. Deberá confirmar que este artificio también es válido para los
ejemplos de los dígitos para los números binarios octales, decimales y hexadecimales.
n
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
14
Tabla 5. Complementos de dígitos.
1.4 Representación en complemento a dos.
Para los números binarios, el complemento a la base se llama complemento a dos. El MSB
de un número en este sistema sirve como el bit de signo; un número es negativo si y sólo si su MSB
es 1. El equivalente decimal para un número binario en complemento a dos se calcula de la misma
manera que para un número sin signo, excepto que el peso del MSB es -2n-1 en vez de +2n-1. El rango
de números representables comprende desde -(2n-1) hasta +(2n-1-1). Algunos ejemplos de 8 nits se
muestran en seguida.
1710
=
000100012
=
complementado los bits
11101110
+
1
111011112 = -1710
-9910
100111012
01100010
+
1
011000112 = 9910
En un caso ocurre fuera de la posición del MSB, como se muestra en el último ejemplo. En
todas las operaciones en complemento a dos se ignora este bit y sólo se usan los n bits de orden
inferior del resultado.
En el sistema numérico en complemento a dos, el cero se considera positivo debido a que su
bit de signo es 0. Ya que el complemento a dos tiene una única representación del cero, se tiene un
número negativo extra, -2n-1, el cual no tiene una contraparte positiva.
Podemos convertir un número X en complemento a dos de n bits en uno de m bits, pero hay
que tener cuidado. Si m > n debemos agregar m-n copias del bit de signo de X a la izquierda de X.
Esto es, se agregan ceros a los números positivos; esto se conoce como extensión de signo. Si m < n,
se descartan los n-m bits de más a la izquierda de X; sin embargo, el resultado es válido sólo si todos
los bits descartados son iguales al bit de signo del resultado.
La mayoría de las computadoras y otros sistemas digitales usan el sistema de complemento a
dos para representar números negativos. Sin embargo, para ser completos, también se describirá el
complemento a la base disminuida y los sistemas en complemento a 1.
1.5. Representación de complemento a la base disminuida.
En un sistema de complemento a la base disminuida, el complemento de un número D de n
dígitos se obtiene al restarlo de bn-1. Esto puede hacerse complementando los dígitos individuales de
D, sin sumarle 1 como en el sistema complemento a la base. En decimal esto se conoce como
complemento a 9; algunos ejemplos se dan en la última de la tabla 4.
1.6. Representación en complemento a uno.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
15
El sistema de complemento a la base disminuida para los números binarios se llama
complemento a uno. Al igual que en complemento a dos, el bit más significativo es el de signo (0 si
es positivo, 1 si es negativo). Por tanto, hay dos representaciones de los números positivos del cero,
el cero positivo (00...00) y el cero negativo (11...11). Las representaciones de los números positivos
son iguales tanto en complemento a uno como a dos. Sin embargo, las representaciones de los
números negativos difieren en 1. Se da un peso de -(2n-1-1), en vez de -2n-1, al bit más significativo
cuando se calcula el equivalente decimal de un número en complemento a uno. El rango de números
representables va desde -(2n-1-1) hasta +(2n-1-1). A continuación se muestran algunos números de 8
bits y sus complementos a uno.
1710 = 000100012
111011102 = -1710
-11910 = 011101112
100010002 = 11910
-9910 =
100111012
011000102 = 9910
-010 = 000000002 (cero positivo)
111111112 = 010 (cero negativo)
La principal ventaja del sistema de complemento a uno es su simetría y su fácil
complementación. Sin embargo, un sumador para números en complemento a uno es más artificioso
que un sumador en complemento a dos. Asimismo, los circuitos para la detección del cero en un
sistema en complemento a uno debe verificar ambas representaciones del cero, o bien siempre debe
convertir 11...11 a 00...000.
1.7 Representaciones en exceso.
Si, el número de sistemas para representar números negativos es excesivo, pero hay uno más
que debe cubrirse. En la representación exceso B, una cadena de m bits, cuyo valor entero sin signo
es M (0<= M<2m) representa al entero con signo M - B. Donde B se conoce como el corrimiento del
sistema de números.
Por ejemplo, un sistema exceso 2m-1 representa al número X en el rango que va desde -2m-1
hasta +2m-1 -1 mediante la representación binaria de m bits de X+2m-1 -1 (que es siempre no negativo
y menor que 2m ). El rango de esta representación es exactamente el mismo que el de los números en
complemento a dos de m bits. De hecho, las representaciones de cualquier número en los dos
sistemas son idénticas excepto por los bits de signo, que son siempre opuestos. (obsérvese que esto
es cierto sólo cuando el corrimiento es 2m-1 ).
El uso más común de la notación en exceso es en los sistemas de punto flotante.
2. Suma y resta en complemento a dos.
2.1 Reglas de la suma.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
16
Una tabla de números decimales y sus equivalentes en diferentes sistemas de números (tabla
6) revela por qué se refiere el complemento a dos para operaciones aritméticas. Si se comienza con
10002 (-810) y se sigue contando, vemos que cada número sucesivo en complemento a dos hasta
01112 (+710) , puede obtenerse al sumar 1 al número previo. ignorando los acarreos más allá de la
cuarta posición. No puede decirse lo mismo de los números en magnitud y signo y de los en
complemento a uno. Debido a que la suma ordinaria es sólo una extensión del conteo, los números
en complemento a dos pueden sumarse mediante la suma binaria ordinaria, ignorando los acarreos
más allá del MSB. El resultado en todos los casos será la suma correcta, siempre que no se exceda el
rango del sistema numérica. Algunos ejemplos de suma decimal y las correspondientes sumas en
complemento a dos de números de 4 bits confirman eso:
+ 3 0011
+ + 4 +0100
+ 7 0111
-2
+- 6
-8
M. Sc. Sanders A. Pacheco Araya.
1110
+ 1010
1 1000
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
17
Tabla 6. Decimales y números de 4 bits.
Complemento a
uno
Magnitud y
signo
Exceso 2m-1
Decimal
Complemento a
dos
-8
1000
-7
1001
1000
1111
1
-6
1010
1001
1110
10
-5
1011
1010
1101
11
-4
1100
1011
1100
100
-3
1101
1100
1011
101
-2
1110
1101
1010
110
-1
1111
1110
1001
111
0
0
1111 o 0000
1000 o 0000
1000
1
1
1
1
1001
2
10
10
10
1010
3
11
11
11
1011
4
100
100
100
1100
5
101
101
101
1101
6
110
110
110
1110
7
111
111
111
1111
0
2.2 Una representación gráfica.
Otra forma de visualizar el sistema de complemento a dos hace uso del "contador" de 4 bits
mostrado en la figura 3. Aquí se muestran los números en una representación circular o "modular".
La operación de este contador se asemeja mucho a la de un circuito contador real hacia atrás y hacia
adelante , el cual se estudiará más adelante. Se comienza con la flecha que señala cualquier número
al que puede sumarse +n incrementarlo así n veces cuando se mueve la flecha n posiciones en el
sentido de las manecillas del reloj. Es también evidente que puede restarse n de un número al
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
18
decrementarlo n veces, al mover la flecha n posiciones en el sentido contrario a las manecillas del
reloj. Por supuesto que estas operaciones dan resultados correctos sólo si n es bastante pequeño
como para que no se cruce la discontinuidad entre -8 y +7.
Fig. 3. Representación de conteo modular de números de 4 bits en complemento a dos.
Lo más interesante es que también se puede restar n (o sumar -n) al mover la flecha 16 -n
posiciones en el sentido de las manecillas del reloj. Obsérvese que la cantidad 16-n es la que
definimos como el complemento a dos de -n. Esta representación gráfica apoya la afirmación anterior
de que un número negativo en representación de complemento a dos puede sumarse a otro número,
al añadir simplemente la representación de 4 bits, usando suma binaria ordinaria. Sumar un número
en la figura 1-3 equivale a mover la flecha el número correspondiente de posiciones en el sentido de
las manecillas del reloj.
2.3 Desborde.
Si una operación de suma produce un resultado que excede el rango del sistema numérico, se
dice que ocurre un desborde. En la representación de conteo modular de la figura 1-3, el desborde
ocurre durante la suma de números positivos cuando contamos más allá de +7. La suma de dos
números con signo diferente nunca produce un desborde, pero la suma de dos números de igual signo
puede provocarlo, como se muestra con los siguientes ejemplos:
- 3
1101
+ - 6 + 1010
- 9 1 0111 = +7
+5
+ +6
0101
+ 0110
+ 11
1011 = -5
Afortunadamente, existe una regla simple para detectar el desborde en la suma: una suma se
desborda si los signos de los sumandos son iguales y el signo de la suma es diferente al signo de los
sumandos. Algunas veces la regla de desborde se establece en términos de acarreos generados
durante la operación de suma: una suma se desborda si los bits de acarreo cin y cout en la posición del
signo son diferentes. Un examen cuidadoso de la tabla 1-3 muestra que las dos reglas son
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
19
equivalentes, sólo hay dos casos donde cin no es igual a cout , y son los dos únicos casos donde x = y
y el bit de suma es diferente.
2.4 Reglas de la resta.
Los números en complemento a dos pueden restarse como si fuesen números binarios
ordinarios sin signo, y pueden formularse reglas apropiadas para detectar el desborde. Sin embargo,
la mayoría de los circuitos para resta de números en complemento a dos no realizan la resta en forma
directa. Más bien niegan el sustraendo al tomar su complemento a dos y luego lo suman al
minuendo con las reglas normales de la suma.
Negar el sustraendo y sumar el minuendo puede realizarse con una sola operación de suma
como sigue: hágase el complemento bit a bit del sustraendo, luego súmese al minuendo con un
acarreo inicial (cin ) de 1 en vez de 0. En seguida se dan unos ejemplos:
El desborde en la resta puede detectarse al examinar los signos del minuendo y el sustraendo
complementado, usando las mismas reglas de la suma; o bien al usar la técnica de los ejemplos
precedentes, los acarreos entrantes y salientes en la posición del bit de signo pueden observarse, y así
detectar el desborde independientemente de los signos de entrada y salida, al emplear de nuevo la
misma regla que en la suma.
Si se intenta negar el número negativo “extra” da como resultado un desborde, de acuerdo
con las reglas previas, cuando sumamos un 1 en el proceso de complementariedad:
-(-8) = - 1000 = 0111
+ 0001
1000 = -8
Sin embargo, este número puede usarse en sumas y restas siempre que el resultado final no
exceda el rango:
1 -cin
+4
0100
-3
1101 1101
+ - 8 + 1000
- - 8 - 1000 + 0111
-4
1100
+5
1 0101
2.5 Números binarios en complemento a dos y sin signo.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
20
Ya que los números en complemento a dos se suman y restan como números sin signo de la
misma longitud con los mismos algoritmos básicos de suma y resta binaria, una computadora o
sistema digital puede usar el mismo circuito sumador para manejar números de ambos tipos. Sin
embargo, los resultados deben interpretarse de manera diferente dependiendo de que el sistema esté
trabajando números son signo (por ejemplo de -8 a +7) o números sin signo (por ejemplo de 0 a 15).
En la figura 3 se introduce una representación gráfica del sistema en complemento a dos de 4
bits. Puede reetiquetarse esta figura (como se muestra en la figura 4) para obtener una representación
de los números sin signo de 4 bits. Las combinaciones binarias ocupan las mismas posiciones en el
círculo y aún se puede sumar una cifra al mover la flecha el número correspondiente de posiciones en
el sentido de las manecillas del reloj, y restarse al mover la flecha en el sentido contrario al de las
manecillas del reloj.
Una operación de suma excede el rango del sistema de números si la flecha, moviéndose en
el sentido de las manecillas, causa la discontinuidad existente entre el 0 y el 15. En este caso, se dice
que ha ocurrido un acarreo fuera de la posición del bit más significativo.
Figura 4. Representación de conteo modular de números de 4 bits sin signo.
De manera semejante una operación de resta excede el rango del sistema numérico si la
flecha se mueve en el sentido contrario al de las manecillas del reloj a través de la discontinuidad. En
este caso se dice que ha ocurrido un préstamo fuera de la posición del bit más significativo.
De la figura 4 es también evidente que puede restarse un número sin signo n al contar en el
sentido de las manecillas de reloj 16 - n posiciones. Esto es equivalente a sumar el complemento a
dos en 4 bits, de n. La resta produce un préstamo si la suma correspondiente del complemento a dos
no produce un acarreo.
Para resumir, en la suma sin signo el acarreo o préstamo en la posición del bit más
significativo indica un resultado fuera de rango. En la suma con signo en complemento a dos, la
condición de desborde definida antes indica un resultado fuera de rango. El acarreo desde la posición
del bit más significativo es irrelevante en la suma con signo, en el sentido de que puede o no ocurrir
el desborde independientemente de que haya un acarreo o no.
3. Suma y resta en complemento a uno.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
21
Otra mirada a la tabla 6 ayuda a explicar la regla de la suma en complemento a uno. Si se
comienza en 10002(-710) y se avanza, se obtiene cada número en complemento a uno sucesivo al
sumar 1 al número previo, excepto en la transición de 11112 (0 negativo) a 00012 (+110). Para
mantener el conteo apropiado, debe agregarse 2 en vez de 1 siempre que se cuente más allá de 11112.
Esto sugiere una técnica para sumar números en complemento a 1: hágase una suma binaria normal,
pero agréguese un 1 extra siempre que se pase por 1112.
El conteo hecho más allá de 11112 durante una suma puede detectarse al observar el acarreo
fuera de la posición del signo. Por lo que la regla para sumar números en complemento a uno puede
establecerse fácilmente:
Hágase una suma binaria normal; si hay un acarreo fuera de la posición del signo,
súmese 1 al resultado.
Esta regla a menudo se conoce como acarreo en redondo. A continuación se dan ejemplos
de sumas en complemento a uno; los últimos tres incluyen acarreo en redondo.
Sistema de números
Reglas de suma
Reglas de negación
Reglas de resta
Sin signo
Se suman los números. El
resultado esta fuera de
rango, si ocurre un
acarreo fuera del MSB.
N/A
Se resta el sustraendo del
minuendo. El resultado
está fuera de rango, si
ocurre un préstamo fuera
del MSB.
Magnitud con signo
(igual signo) Se suman las
magnitudes; ocurre un
desborde, si ocurre un
acarreo fuera del MSB; el
resultado tiene el mismo
signo. (Signo opuesto) Se
resta la magnitud más
pequeña a la mayor; un
desborde es imposible; el
resultado tiene el signo de
la magnitud mayor.
Cambie el signo de bit.
Cambie el bit de signo del
sustraendo y proceda
como en la suma.
Complemento a dos.
Se suma e ignora
cualquier acarreo fuera
del MSB. El desborde
ocurre si los acarreos
entrante y saliente al
MSB son diferentes.
Se complementan todos
los bits del sustraendo; se
suma 1 al resultado.
Se complementan todos
los bits del sustraendo y
se suman al minuendo
con un acarreo inicial.
Complemento a uno.
Se suma y si hay un
Se complementan todos
Se complementan todos
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
acarreo fuera del MSB, se
suma 1 al resultado. Hay
desborde si los acarreros
entrante y saliente al
MSB son diferentes.
los bits del sustraendo.
22
los bits del sustraendo y
se procede como en la
suma.
Tabla 7. Resumen de las reglas se suma y resta para números binarios.
Siguiendo la regla anterior de la suma de dos pasos, la suma de un número y de su
complemento produce el 0 negativo. De hecho, una operación de suma que use esta regla nunca
puede producir un cero positivo a menos que ambos sumandos sean el cero positivo.
Al igual que con el complemento a dos, la forma más fácil de hacer la resta en complemento
a uno es complementar el sustraendo y sumar. Las reglas de desborde para la suma y resta en
complemento a uno son las mismas que las de complemento a dos.
La tabla 7 resume las reglas que presentamos en ésta y las secciones previas para la negación,
suma y resta en sistemas de números binarios.
4. Multiplicación binaria.
En la escuela se aprende a multiplicar sumando una lista de multiplicandos escalonados que
se calculaban de acuerdo con los dígitos del multiplicador. El mismo método puede usarse para
obtener el producto de dos números binarios sin signo:
11
* 13
33
11
143
1011 multiplicando
* 1101 multiplicador
1011 resultado
0000 multiplicandos desplazados.
1011
10001111
producto
Formar los multiplicandos escalonados es trivial en la multiplicación binaria, ya que los
únicos valores posibles de los dígitos de multiplicador son 0 y 1.
En vez de listar todos los multiplicandos escalonados y luego sumarlos, para un sistema
digital es más conveniente sumar cada multiplicando desplazado, a medida que se crea, a un
producto parcial. Al aplicar esta técnica al ejemplo previo, se requieren cuatro sumas y productos
parciales para multiplicar números de 4 bits:
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
23
En general, cuando multiplicamos un número de n bits por un multiplicador de m bits, el
producto resultante requiere a los sumo de n + m bits para expresarse. El algoritmo de corrimiento y
suma requiere m productos parciales y sumas para obtener el resultado, pero la primer suma es trivial
ya que el primer producto parcial es cero. Aunque el primer producto parcial solo tenga n bits
significativos, después de cada paso de suma, el producto parcial gana un digito significativo, ya que
cada suma puede producir un acarreo. Al mismo tiempo, cada paso origina un bit de producto parcial
extra, en la calidad de la extrema derecha y siguiendo con el que está a la izquierda, que no cambia
durante el resto de los cálculos. El algoritmo de corrimiento y suma puede realizarse mediante un
circuito digital que incluye un registro de corrimiento, un sumador y cierta lógica de control.
La multiplicación de los números con signo puede hacerse con la multiplicación sin signo y
las reglas usuales para los signos: efectuar una multiplicación de las magnitudes y hacer el producto
positivo si los operandos tienen el mismo signo, o negativo si tienen signos diferentes. Esto es muy
conveniente en sistemas de magnitud y signo, donde éstos están separados.
En un sistema de complemento a dos, la obtención de la magnitud de un número negativo y la
negación del producto sin signo no son operaciones triviales. Esto conduce a buscar una forma más
eficiente de hacer la multiplicación en complemento a dos, que se describe en seguida.
Conceptualmente, la multiplicación sin signo se realiza mediante una secuencia se sumas sin
signo de los multiplicandos desplazados; en cada paso, el corrimiento del multiplicando corresponde
al peso del bit multiplicador. Los bits en un número en complemento a dos tienen los mismos pesos
que en un número sin signo, excepto por el MSB, que tiene un peso negativo. Entonces se puede
realizar la multiplicación en complemento a dos mediante una secuencia de sumas en complemento a
dos de multiplicandos desplazados, excepto en el último paso, en el que debe negarse el
multiplicando correspondientemente al MSB del multiplicador, antes de que éste se sume al producto
parcial. Nuestro ejemplo previo se repite a continuación, esta vez se interpretan el multiplicador y el
multiplicando como números en complemento a dos:
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
24
El manejo del MSB es un poco artificioso, debido a que se gana un bit significativo en cada
paso y se trabaja con números con signo. Por lo que, antes de sumar cada multiplicando desplazado y
los productos parciales de k bits, los cambiamos a k + 1 bits significativos mediante una extensión de
signo, como se señala en el ejemplo. Cada suma resultante tiene k + 1 bits; se ignora cualquier
acarreo fuera del MSB de la suma de k + 1 bit .
5. División binaria.
El algoritmo de división binaria más simple está basado en el método de desplazamiento y
resta que aprendimos en la escuela. La tabla 8 da ejemplos de éste método para números decimales y
binarios sin signo. En ambos casos, se comprara mentalmente el dividendo reducido, con múltiplos
del divisor para determinar cuál múltiplo del divisor desplazado se restará. En el caso decimal,
primero se toma a 11 como el múltiplo más grande de 11 menor que 21, luego se toma 99 como el
múltiplo más grande menor que 107. En el caso binario, la elección es algo más simple, ya que las
únicas dos elecciones son cero y el divisor mismo.
Tabla 8. Ejemplo de división larga.
Los métodos de división para los números binarios son un tanto complementarios a los
métodos de multiplicación binaria. Un algoritmo de división típico acepta un dividendo de n + m y
un divisor de n bit; asimismo produce un cociente de m bit y un residuo de n bits. La división se
desborda si el divisor es cero o el cociente toma más de m bits para expresarse. En la mayoría de los
circuitos de las computadoras, n = m. La división de números con signo puede hacerse con el
algoritmo de división sin signo y las reglas usuales de los signos: efectuar una división sin signo de
las magnitudes y obtener el cociente positivo si los operandos tienen el mismo signo, o hacerlo
negativo si tienen signos diferentes. El residuo debe tener el mismo signo que el dividendo. Al igual
que en la multiplicación, hay técnicas especiales para realizar la división de manera directa de
números en complemento a dos; a menudo se implantan estas técnicas en los circuitos de las
computadoras.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
25
D-
Códigos binarios de números decimales.
Aun cuando los números binarios son los más apropiados para los cálculos internos en un
sistema digital, la mayoría de la gente todavía prefiere trabajar con los números decimales. Como
resultado, las interfaces externas de un sistema digital pueden leer o exhibir números decimales,
incluso algunos dispositivos digitales en realidad procesan números decimales directamente.
La necesidad humana de representar números decimales no cambia la naturaleza esencial de
los circuitos electrónicos básicos, éstos aún procesan señales que toman uno de los dos estados que
podemos llamar 0 y 1. Por lo que un número decimal se representan en un sistema digital mediante
una cadena de bits, donde las diferentes combinaciones de valores de bits en la cadena representan
diversos decimales. Por ejemplo, si usamos una cadena de 4 bits para representar un número
decimal, podemos asignar la combinación de bits 0000 al dígito decimal 0, 0001 a 2, y así
sucesivamente.
Un conjunto de cadenas de n bits en que las diferentes cadenas de bits representan diferentes
números u otras cosas se llama código. Una combinación particular de valores de n bits se llama
palabra del código. Como se verá en los ejemplos los valores de los bits decimales en esta sección,
puede que haya o no una relación aritmética entre los valores de los bits en una palabra de código y
lo que representa. Además, un código que usa cadenas de n bits no necesita contener 2n palabras de
código.
Al menos se necesitan cuatro bits para representar los diez dígitos decimales. Hay millones y
millones de maneras diferentes para elegir las 10 palabras de código de 4 bits, 1 algunos de los
códigos decimales más comunes se listan en la tabla 9.
1
El número de maneras diferentes de elegir m objetos de un conjunto de n está dado
por un coeficiente binomial, denotado ( ), cuyo valor es n!/(m!*(n-m)!). para un
código decimal de 4 bits, hay ( ) maneras diferentes de elegir 10 de 16 palabras de
código de 4 bits, y 10! Maneras de asignar cada elección diferente a los 10 dígitos.
Así que hay (16!/(10!*6!))*10! O 29,059,430,400 códigos decimales de 4 bits
diferentes.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
26
Tabla 9. Códigos decimales.
Quizás el código decimal más “natural” es el decimal codificado binario (BCD, siglas en
inglés de binary coded decimal), que codifica los dígitos 0 a 9 por sus representaciones binarias sin
signo de 4 bits, del 0000 al 1001. Las palabras de código del 1010 al 1111 no se usan. Las
conversiones entre las representaciones BCD y decimales son triviales: una sustitución directa de 4
bits por cada dígito decimal. Algunos programas de computadora colocan dos dígitos BCD en un
byte de 8 bits en la representación BCD empacada; por lo que un byte puede representar los valores
del 0 al 99 en vez de 0 a 255 para un número binario normal de 8 nits sin signo. Los números BCD
con cualquier número deseado de dígitos pueden obtenerse usando un byte por cada dos dígitos.
Al igual que con los números binarios, hay muchas representaciones posibles de números
BCD negativos. Los números BCD con signo tienen una posición de dígito extra para el signo. Los
números BCD con cualquier número deseado de dígitos pueden obtenerse usando un byte por cada
dos dígitos.
Al igual que con los números binarios, hay muchas representaciones posibles de números
BCD negativos. Tanto la representación de magnitud y signo como la de complemento a 10 son
populares. En la representación BCD de magnitud y signo, la codificación de la cadena de bit de
signo es arbitraria; en complemento a 10, 0000 indica más y 1001 indica menos.
La suma de dígitos BCD es similar a la suma de números binarios sin signo de 4 bits, excepto
que debe hacerse una corrección si el resultado excede 1001. El resultado se corrige sumándole 6; a
continuación se dan ejemplos:
Observe que la suma de dos dígitos BCD produce un acarreo en la siguiente posición de
dígito siempre que la suma binaria inicial o la suma del factor de corrección produzca un acarreo.
Muchas computadoras realizan aritmética BCD empacada usando instrucciones especiales que
manejan automáticamente la corrección del acarreo.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
27
Los números decimales codificados en binarios están en un código pesado, debido a que cada
dígito decimal puede obtenerse de su palabra de código al asignar un peso fijo a cada bit de la
palabra. Los pesos para los bits BCD son 8, 4, 2 y 1, por esta razón se le llama código 8421. Otro
conjunto de pesos resulta en el código 2421 mostrado en la tabla 1-9. Este código tiene la ventaja de
que es autocomplementario; esto es, la palabra código para el complemento a 9 de cualquier dígito
puede contenerse al complementar los bits individuales de la palabra código del dígito.
Otro código autocomplementario que se muestra en la tabla 9 es el código exceso 3. Aunque
éste no es pesado, tiene una relación aritmética con el BCD - la palabra código para cada dígito
decimal es la correspondiente a la del BCD más 00112. Debido a que las palabras de código siguen
una secuencia de conteo binaria estándar, se puede hacer que los contadores binarios cuenten en
código exceso 3.
Los códigos decimales pueden tener más de cuatro bits; por ejemplo, el código biquinario de
la tabla 9 usa siete. Los primeros dos bits en una palabra código indican si el número está en el rango
0-4 o 5-9 y los últimos cinco indican cuál de los cinco números en el rango seleccionado está
representado.
Una ventaja potencial de usar más del número mínimo de bits en un código está en la
posibilidad de detectar errores. En el código biquinario, si cualquier bit en una palabra código
accidentalmente cambia al valor opuesto, la palabra resultante no representa a un dígito decimal y
por lo tanto puede señalarse como un error. Fuera de las 128 posibles palabras de código de 7 bits,
sólo diez son válidas y reconocidas como dígitos decimales, el resto puede señalarse como errores, si
aparecen.
El código 1 de 10 (como el mostrado en la última columna de la tabla 9) es la codificación
menos densa para los dígitos decimales, usando sólo 10 palabras de código de las 1024 posibles.
E-
Código de Gray.
En las aplicaciones electromecánicas de los sistemas digitales (como máquinas herramientas,
sistemas de frenado de automóviles y copiadoras), algunas veces es necesario que un censor de
entrada produzca un valor digital que indique una posición mecánica. Por ejemplo, la figura 5 es un
esquema conceptual de un disco de codificación y el conjunto de contactos que producen uno de 8
valores codificados binarios de 3 bits, según sea la posición rotacional del disco. Las áreas oscuras
del disco se conectan a una fuente de señal correspondiente al 1 lógico, y las áreas claras están
desconectadas por lo que los contactos las interpretan como el 0 lógico.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
28
Fig. 5. Disco de codificación mecánica con un código binario de 3 bits.
El codificador de la figura 5 tiene problemas cuando el disco se coloca en ciertas fronteras
entre las regiones. Por ejemplo, considere la frontera entre las regiones 001 y 010 del disco; dos de
los bits codificados cambian aquí. ¿Qué valor producirá el codificador si el disco colocado en la
frontera teórica? Puesto que estamos sobre la frontera, tanto 001 como 010 son aceptables. Sin
embargo, debido a que el ensamble mecánico no es perfecto, los dos contactos a la derecha pueden
tocar ambos una región “1", dando una lectura incorrecta de 011. De manera semejante, una lectura
de 0000 es posible. En general, esta clase de problema puede ocurrir en cualquier frontera donde
cambia más de un bit. El peor de los problemas ocurre cuando los tres bits cambian, como en las
fronteras 000-111 y 011-100.
El problema del disco codificador puede resolverse al diseñar un código digital en el que sólo
ocurra cambios de un bit entre cada par de palabras de código sucesivas. Tal código se conoce como
Código Gray; un código Gray de 3 bits se lista en la tabla 10. Se ha rediseñado el disco codificador
usando este código, como se muestra en la figura 6. Sólo un bit del nuevo disco cambia en cada
frontera, así las lecturas en la frontera dan un valor de un lado o el otro de la frontera.
Número decimal
Código binario
Código Gray
0
000
000
1
001
001
2
010
011
3
011
010
4
100
110
5
101
111
6
110
101
7
111
100
Tabla 10. Comparación del código binario de 3 bits y el código Gray.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
29
Fig. 6. Disco de codificación mecánico con un código Gray de 3 bits.
Hay dos maneras convenientes de construir un código Gray con cualquier número deseado de
bits. El primer método está basado en el hecho de que el código Gray es un código reflejado; éste
puede definirse /y construirse) inductivamente usando las siguientes reglas:
1.
2.
3.
Un código Gray de 1 bit tiene dos palabras código, 0 y 1.
Las primeras 2n palabras código de un código Gray de n + 1 bits son iguales a las palabras
de un código Gray de n bits, precedidas por un cero.
Las últimas 2n palabras código de un código Gray de n +1 bits son iguales a las palabras
de un código Gray de n bits, escritas en orden inverso y precedidas por un uno.
Si dibujamos una línea entre las hileras 3 y 4 de la tabla 10, podemos ver que las reglas 2 y 3
con ciertas para el código Gray de 3 bits. Por supuesto que para construir un código Gray de n bits
para un valor arbitrario de n con este método, también debemos construir el código Gray de cada
longitud menos a n.
El segundo método permite derivar las palabras del código de Gray de n bits directamente de
la correspondiente palabra de código binaria de n bits:
1.
2.
Los bits de un binario de n bits o de una palabra código Gray se numeran de derecha a
izquierda, de 0 a n-1.
El bit i de una palabra del código Gray es 0 si los bits i e i + 1 de la palabra de código
binaria correspondiente son iguales, de lo contrario el bit i es 1. (Cuando 1 + 1 = n, el bit n
de la palabra de código en binario se considera como cero).
De nuevo, una inspección de la tabla 10 muestra que esto es cierto para el código Gray de 3
bits.
F-
Códigos de caracteres.
Como se mostró en la sección precedente, una cadena de bits no necesita representar un
número, de hecho la mayoría de los datos procesados por las computadoras no son numéricos. El tipo
más común de datos no numéricos es el texto, cadenas de caracteres de algún conjunto de caracteres.
Cada carácter está representado en la computadora mediante una cadena de bits de acuerdo a una
convención establecida.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
30
El código de caracteres más comúnmente usado es el ASCII (American Standard for
Information Interchange). ASCII representa a cada carácter por una cadena de 7 bits, dando un total
de 128 caracteres diferentes que se muestran en la tabla 11. El código contiene las letras minúsculas
y mayúsculas, numerales, signos de puntuación y diversos caracteres de control que no se imprimen.
Por lo que la cadena de texto “Yeccch” se representa mediante una lista de siete números de 7 bists:
1011001 - 1100101 - 1100011 - 1100011 - 1100011 - 1101000 - 0100001
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
Tabla. 11. Código ASCII. Nº X3.4-1968 del American National Standars Institute.
M. Sc. Sanders A. Pacheco Araya.
31
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
32
1. Códigos para acciones, condiciones y estados.
Los códigos que hemos descrito hasta ahora generalmente se usan para representar cosas que
quizás consideraríamos “datos” , cosas como números, posiciones y caracteres. Los programadores
saben que pueden usarse docenas de tipos diferentes de datos en un solo programa de computación.
En el diseño de sistemas digitales a menudo encontramos aplicaciones sin datos donde una
cadena de bits debe usarse para controlar una acción, para verificar una condición o para representar
el estado presente del hardware. Probablemente el tipo de código más comúnmente usado para tal
aplicación es el código binario simple. Si hay n acciones, condiciones o estados diferentes
representarlos con un código binario b=[log2n] bits. (Los paréntesis [ ] denotan la función entero
mayor, es decir, el entero más pequeño mayor que o igual a la cantidad entre paréntesis. Por tanto b
es el entero más pequeño tal que 2bn).
Por ejemplo, considérese a un simple controlador de semáforo. Las señales en la intersección
de una calle norte-sur (N-S) y este-oeste (E-W) pueden estar en cualquiera de los seis estados
listados en la tabla 12. Estos estados pueden codificarse en tres bits, como se muestra en la última
columna de la tabla. Sólo se usan seis de las ocho palabras de código posibles de 3 bits, y la
asignación de las seis palabras de código elegidas para los estados es arbitraria, de modo que son
posibles muchas otras codificaciones. Un diseñador experimentado elige una codificación particular
para minimizar el costo del circuito o para optimizar algunos otros parámetros, como tiempo de
diseño (no hay necesidad de probar millones y millones de codificaciones posibles).
Tabla 12. Estados de un controlador de semáforos.
Otra aplicación de un código binario se ilustra en la figura 7(a). Aquí tenemos un sistema con
n dispositivos, cada uno de los cuales puede realizar una cierta acción. Las características de los
dispositivos son tales que deben habilitarse para operar uno solo a la vez. La unidad de control
produce una palabra de “selección de dispositivo” codificada en binario con [log2n] bits para indicar
qué dispositivo se habilita en cierto tiempo. La palabra de código “selección de dispositivo” se aplica
a cada dispositivo, que la compara con su propia “identificador de dispositivo” para determinar si se
habilita.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
Figura 7.
33
Estructura de control para un sistema digital con n dispositivos: a- usando código
binario; b- usando código 1 de n.
Aunque sus palabras tienen el número mínimo de bits, un código binario no es siempre la
mejor elección para codificar acciones, condiciones o estados. La figura 7 (b) muestra cómo
controlar n dispositivos con un código 1 de n, de n bits en el que las palabras del código válidas
tienen un bit igual a 1 y el resto de los bits igual a 0. Cada bit de la palabra de código 1 de n se
conecta directamente a la entrada de habilitación del dispositivo correspondiente. Esto simplifica el
diseño de los dispositivos, ya que no necesitan un número identificador de dispositivo, sólo necesitan
un bit de entrada para habilitación.
Las palabras de código de un código 1 de n se listaron en la tabla 9. Algunas veces puede
incluirse una palabra con sólo ceros en estos códigos, para indicar que no se selecciona ningún
dispositivo. Otro código común es el código invertido 1 de n en el que las palabras de código válidas
tienen un bit igual a 0 y el resto iguales a 1.
Un código m de n es una generalización del código 1 de n en que las palabras de código
válidas tienen m bits iguales a 1 y el resto de los bits iguales a 0. Una palabra de código m de n
válida puede detectarse con una compuerta AND de m entradas, la que produce una salida de 1 si
todas sus entradas son 1. Esto es muy simple y barato de hacer; sin embargo, para la mayoría de los
valores de m, un código m de n típicamente tiene muchas más palabras de código válidas que un
código de 1 de n. El número total de las palabras código está dado por el coeficiente binomial ( ),
que tiene el valor
n!
m!*(n - m)!
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
34
Por lo que un código 2 de 4 tiene 6 palabras de código válidas y un código 3 de 10 tiene 120.
En los sistemas complejos, puede usarse una combinación de las técnicas de codificación en
un solo código. Por ejemplo, considérese un sistema similar al de la figura 7(b), en el que cada uno
de los n dispositivos contiene hasta s subdispositivos. La unidad de control puede producir una
palabra de código de selección de dispositivo con un campo codificado como 1 de n para seleccionar
un dispositivo, y un campo codificado en binario de [log2s] bits para seleccionar uno de los
subdispositivos del dispositivo seleccionado. O, si fuera posible habilitar m subdispositivos a la vez,
podría usarse un código m de s para seleccionar subdispositivos.
2. Cubos-N y distancia.
Una cadena de n bits puede visualizarse geométricamente, como un vértice de un objeto
llamado cubo n. La figura 8 muestra cubos n para n = 1,2,3,4. Un cubo n tiene 2n vértices, cada uno
de los cuales está rotulado con una cadena de n bits. Las aristas se dibujan entre vértices adyacentes
cuyos rótulos difieren del vértice dado en sólo un bit. Más allá de n = 4, los cubos n son realmente
difíciles de dibujar.
Fig. 8. Cubos n para n = 1, 2, 3 y 4.
Para valores razonables de n, los cubos n facilitan la visualización de ciertos códigos y de los
problemas de minimización lógica. Por ejemplo, el problema de diseñar un código Gray de n bits es
equivalente a encontrar una ruta a lo largo de los vértices de un cubo n, que visite cada vértice
exactamente una vez. Las rutas para los códigos Gray de 3 y 4 bits se muestran en la figura 9.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
35
Fig. 9. Recorrido de cubos n en el orden del código Gray: a- cubo 3 b- cubo 4.
Los cubos también proporcionan una interpretación geométrica para el concepto de distancia
también llamada la distancia de Hamming. La distancia entre dos cadenas de n bits es el número de
posiciones de bits en que difieren. Para un cubo n, la distancia es la longitud mínima de una ruta
entre los dos vértices correspondientes. Dos vértices adyacentes tienen distancia 1; los vértices 001 y
100 en el cubo 3 tienen distancia 2. El concepto de distancia es fundamental en el diseño y
comprensión de los códigos detectores de error.
Un subcubo m de un cubo n es un conjunto de 2m vértices en los que n-m de los bits tienen el
mismo valor en cada vértice, y los restantes m bits toman todas las 2m combinaciones. Por ejemplo,
los vértices (000, 010, 100, 110) forman un subcubo 2 de un cubo 3. Este subcubo puede también
denotarse con una sola cadena, xx0, donde “x” denota que ese bit particular toma cualquier valor y es
llamado un no importa; cualquier vértice cuyos bits coinciden en las posiciones que no son x
pertenecen a este subcubo. El concepto de subcubos es particularmente útil para visualizar
algoritmos que minimizan el costo de funciones lógicas combinacionales.
G-
Códigos para detectar y corregir errores.
Un error en un sistema digital es la distorsión del valor correcto del dato, a algún otro valor.
Un error es ocasionado por una falla física. Las fallas pueden ser temporales y/o permanentes. Por
ejemplo, un rayo cósmico puede ocasionar una falla temporal de un circuito de memoria, cambiando
el valor de un bit almacenado ahí. Permitir que un circuito se caliente demasiado o se dañe con la
electricidad estática puede ocasionar una falla permanente, de modo que ya no trabaje correctamente.
Los efectos de las fallas en los datos se predicen mediante los modelos de error. El modelo
de erros más simple, que consideraremos aquí, se llama el modelo de error independiente. En este
modelo, se supone que una sola falla física afecta sólo a un bit de los datos; el dato distorsionado se
dice que contiene un error individual. Múltiples fallas puede ocasionar errores múltiples, dos o más
bits erróneos, pero se supone que los errores múltiples son menos probables que los errores
individuales.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
36
1. Códigos detectores de errores.
Un código que usa cadenas de n bits necesita contener 2n palabras de código válidas; éste es
el caso de los códigos que consideraremos ahora. Un código detector de error tiene la propiedad de
que la alteración de una palabra de código probablemente producirá una cadena de bits que no es una
palabra de código (una no palabra de código).
Un sistema que usa un código detector de errores genera, transmite y almacena sólo palabras
de código. Por lo tanto, los errores en una cadena de bits pueden detectarse mediante una regla
simple, si la cadena de bits es una palabra de código, se supone que es correcta; si no es una palabra
código, ésta contiene un error.
Un código de n bits y sus propiedades de detección de errores bajo el modelo de error
independientemente puede explicarse fácilmente en términos de un cubo n. Un código es
simplemente un subconjunto de los vértices del cubo n. A fin de que el código detecte todos los
errores individuales, ningún vértice de palabra de código puede ser inmediatamente adyacente a otro
vértice de palabra del código.
Por ejemplo, la figura 10(a) muestra un código de 3 bits con cinco palabras código. La
palabra de código 111 es inmediatamente adyacente a las palabras de código 110 y 011. Ya que una
falla individual cambiaría 111 a 110 o 011, este código no detecta todos los errores individuales. Si
se hace que 111 no sea una palabra del código, se obtiene un código que tiene la propiedad de
detectar errores individuales, como se muestra en (b). Ningún error individual puede cambiar una
palabra de código en otra.
Fig. 10.
Palabras de código en dos códigos de 3 bits diferentes: a- distancia mínima = 1, no
detecta todos los errores individuales b- distancia mínima =2, detecta todos los
errores individuales.
La habilidad de un código para detectar errores individuales puede establecerse en términos
del concepto de distancia.
Un código detecta todos los errores individuales si la distancia mínima
entre todos los pares posibles de palabras del código es 2.
En general, necesitamos n + 1 bits para construir un código detector de errores individuales
con 2n palabras de código. Los primeros n bits de una palabra de código, llamados bits de
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
37
información, pueden ser cualquiera de las 2n cadenas de n bits. Para obtener un código de distancia
mínima 2, se agrega otro bit, llamado bit de paridad, éste es 0 si hay número par de unos entre los
bits de información y 1 en caso contrario. Esto se ilustra en las dos primeras columnas de la tabla 13
para un código con tres bits de información. Una palabra código de n + 1 bits válida tiene un número
par de unos y a este código se le conoce como código de paridad par. También puede construirse un
código en el que el número total de unos en una palabra código de n + 1 bits sea impar; a éste se le
conoce como código de paridad impar y se muestra en la tercera columna de la tabla 13. A estos
códigos también se les conoce como códigos con 1 bit de paridad, ya que cada uno de ellos hace uso
de un bit de paridad individual.
Tabla 13. Códigos distancia 2 con tres bits de información.
Bits de información
Código paridad par
Código paridad impar
000
000 0
000 1
001
001 1
001 0
010
010 1
010 0
011
011 0
011 1
100
100 1
100 0
101
101 0
101 1
110
110 0
110 1
111
111 1
111 0
Los códigos con 1 bit de paridad no detectan errores en 2 bits, ya que cambiar dos bits no
afecta la paridad. Sin embargo, los códigos pueden detectar errores en cualquier número impar de
bits. Por ejemplo, si se cambian tres bits en una palabra de código, entonces la palabra resultante
tiene la paridad incorrecta y no es una palabra código. Esto no nos ayuda mucho. Bajo el modelo de
error independiente, los errores de tres bits son mucho menos probables que los errores de 2 bits, que
no son detectables. Por lo que, para fines prácticos, la capacidad de detección de error de los códigos
de paridad 1 bit es útil sólo para errores de 1 bit. Otros códigos, con distancia mínima mayor que 2,
pueden usarse para detectar errores múltiples.
(Investigar sobre “Códigos para corrección de errores y detección de errores múltiples)
H-
Otros códigos: transmisión y almacenamiento de datos en serie.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
38
1. Datos en paralelo y en serie.
La mayoría de las computadoras y otros sistemas digitales trasmiten y almacenan datos en un
formato paralelo. En la transmisión paralela de datos, se proporciona una línea de señal para cada bit
de una palabra de datos. En el almacenamiento paralelo de datos, todos los bits de una palabra
pueden escribirse o leerse simultáneamente.
Los formatos paralelos no son costeables para algunas aplicaciones. Por ejemplo, la
transmisión paralela de bytes de datos en la red telefónica requeriría de 8 líneas telefónicas y el
almacenamiento paralelo de bytes de datos en un disco magnético requeriría una unidad de disco con
ocho cabezas de lectura / escritura separadas. Los formatos en serie permiten que los datos que los
datos se trasmitan o almacenen a un bit a la vez, reduciendo el costo del sistema en muchas
aplicaciones.
La figura 11 ilustra algunas de las ideas básicas en la trasmisión serial de datos. Una señal de
reloj repetitiva (de nombre RELOJ en la figura), define la velocidad con que los bits se trasmiten, un
bit por ciclo de reloj. Por lo que, el flujo de bits en bits por segundo (bps) numéricamente iguala la
frecuencia del reloj en ciclos por segundo (hertz, Hz).
Fig. 11. Conceptos básicos para la trasmisión de datos en serie.
El recíproco del flujo de bits se llama tiempo del bit y numéricamente iguala el período del
reloj en segundos (s). Esta cantidad de tiempo en la línea de datos serie (llamada DATOSER en la
figura) para cada bit que se trasmite. el tiempo ocupado por cada bit algunas veces se llama celda de
bit. El formato de la señal real que aparece en la línea durante cada celda de bit depende del código
de línea. En el código de línea más simple, llamado NRZ, se trasmite un 1 al colocar un 1 en la línea
durante la celda de bit completa, y un 0 se trasmite como un 0. Sin embargo, hay códigos de línea
más complejos que tienen otras reglas.
No obstante el código de línea, un sistema de trasmisión o almacenamiento serial de datos
necesita alguna forma para identificar el significado de cada bit en el flujo de bits en serie.
Por ejemplo, supóngase que se trasmiten en serie bytes de 8 bites. ¿Cómo puede decirse cuál
es el primer byte? Una señal de sincronización, de nombre SINC en la figura 11, proporciona la
información necesaria; ésta es 1 para el primer bit de cada byte.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
39
Evidentemente, necesitamos un mínimo de tres señales para recuperar una cadena de datos en
serie; un reloj para definir las celdas de bit, una señal de sincronización para definir las fronteras de
la palabra, y el dato serie. En algunas aplicaciones, como en la interconexión de módulos en un
sistema de computadora o de telecomunicaciones, se usa un alambre para cada una de estas señales,
puesto que reducir el número de alambres por conexión de n a tres es un ahorro considerable.
En muchas aplicaciones, el costo de tener tres señales separadas es aún muy alto (por
ejemplo, tres líneas de teléfono, tres cabezas de escritura / lectura). Tales sistemas típicamente
combinan las tres señales en un flujo de datos en serie único y hacen uso de circuitos analógicos y
digitales complejos para recuperar la información de reloj y de sincronización del flujo de datos.
2. Códigos de línea en serie.
Los códigos de línea más comúnmente usados para datos en serie se ilustran en la figura 12.
En el código de Sin Vuelta a Cero (NRZ del inglés Non Return to Zero), cada valor de bit se envía
por la línea durante toda la celda de bit. Este es el esquema de codificación más simple y confiable
para distancias cortas de trasmisión. Sin embargo, éste generalmente requiere que se envíe la señal de
reloj junto con el dato para definir las celdas de bit. De lo contrario, no es posible para el receptor
determinar cuántos ceros y unos están representados por un nivel continuo de 0 o 1. Sin un reloj para
definir las celdas de bit, la forma de la onda NRZ en la figura 12 puede ser erróneamente interpretada
como 01010.
Fig. 12. Códigos de línea comúnmente usados para datos en serie.
Un lazo detector de fase digital (DPLL, por las siglas en inglés de digital phase locked loop)
es un circuito analógico / digital, que puede usarse para recobrar una señal de reloj de un flujo de
datos serie. El DPLL trabaja sólo si el flujo de datos serie contiene suficientes transiciones de 0 a 1 y
de 1 a 0 para “sugerir” cuando toman lugar las transiciones del reloj original. Con datos codificados
NRZ, el DPLL trabaja sólo si los datos no contienen ningún tramo continuo largo de unos o de ceros.
Algunas trasmisiones y medios de almacenamiento serial son sensibles a las transiciones; es
decir, no pueden transmitir o almacenar niveles 0 o 1 absolutos, sólo transiciones entre dos niveles
discretos. Por ejemplo, un disco o cinta magnética almacenan información al cambiar la polaridad de
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
40
la magnetización del medio en las regiones correspondientes a los bits almacenados. Cuando la
información se recupera, no es factible determinar la polaridad de magnetización absoluta de una
región, sólo los cambios de polaridad entre una región y la siguiente.
Los datos almacenados en el formato NRZ en medios sensibles a las trasmisiones no pueden
recuperarse sin ambigüedad; los datos en la figura 1-16 pueden interpretarse como 01110010 o
10001101. El código Sin Vuelta a Cero con Inversión en unos (NRZI) suprime esta limitación al
enviar un 1 si el nivel es el opuesto al que se envió durante la celda de bit previo, y un 0 si es el
mismo nivel. un DPLL puede recuperar el reloj de datos codificados en NRZI siempre que los datos
no contengan ningún tramo continuo de ceros muy largo.
El código Vuelta a Cero (RZ) es similar al NRZ excepto que, para un bit, el nivel 1 se
trasmite sólo una fracción del tiempo de bit, usualmente ½ . Con este código, los patrones de datos
que contengan muchos unos crean muchas transiciones que se usan para recuperar la señal de reloj.
Sin embargo, como en otros códigos de línea, una cadena de ceros no tiene transiciones, y una
cadena larga de ceros hace imposible la recuperación de la señal del reloj.
Todos los códigos precedentes transmiten o almacenan sólo dos niveles de señales. El código
Vuelta a Cero Bipolar (BPRZ) tramite tres niveles de señales: +1, 0 y -1. El código es semejante a
RZ excepto que los unos se trasmiten alternadamente como +1 y -1; por esta razón, el código
también se conoce como Inversión de Marca Alterna (AMI, por las siglas en inglés de Alternate
Mark Inversion).
La mayor ventaja de BPRZ sobre los otros códigos es que para cualquier patrón de datos, el
nivel de señal promedio del flujo de datos serie BPRZ es cero. Esto mejora la inmunidad al ruido de
los circuitos analógicos que reciben señales BPRZ muy atenuadas enviadas a largas distancias. De
hecho, el código BPRZ se ha usado por décadas en la red telefónica, cuando las señales de voz
analógica se convierten en flujos de 8 000 muestras digitales de 8 bits por segundo que se trasmiten
en formato BPRZ por canales en serie de 64 Kbps.
Al igual que con un RZ, es posible recuperar la señal de reloj de un flujo BPRZ siempre que
no haya muchos ceros seguidos. Aunque la compañía telefónica no tiene control sobre lo que se dice
(al menos no por ahora), si posee una buena manera de darle la vuelta al problema. Si uno de los
bytes de 8 bits que resulta de muestrear el patrón de habla analógico se compone de puros ceros
simplemente cambian uno de sus bits a 1!.
M. Sc. Sanders A. Pacheco Araya.
Universidad de Costa Rica - Escuela de Ciencias de la Computación e Informática
Curso: CI-1203. Introducción a la Organización de Computadores. Sesión 2.
41
El último código de la figura 12 se llama código Manchester o difase. La principal
característica de este código es que, independientemente de los patrones de datos trasmitidos,
proporciona al menos una transición por celda de bit, haciendo muy fácil la recuperación de la señal
del reloj. Como se muestra en la figura, un 0 se codifica como una transición de 0 a 1, a la mitad de
la celda del bit, y un 1 se codifica como una transición de 1 a 0. La principal característica del código
de Manchester, es también su principal debilidad, ya que éste tiene más transiciones por celda de bit
que otros códigos. Además requiere un mayor ancho de banda para transmitir a una tasa de bit dada.
El ancho de banda no es un problema en cables coaxiales, el que, por cierto, usan las redes de área
local Ethernet para transmitir datos en serie codificados. Manchester a la razón de 10 Mbps.
sesion2.wpd
M. Sc. Sanders A. Pacheco Araya.
Descargar