4. Aritmética binaria en los computadores

Anuncio
Estructura y Tecnología de Computadores (ITIG)
Luis Rincón Córcoles
José Ignacio Martínez Torre
Ángel Serrano Sánchez de León
Tema 4. Aritmética binaria en los computadores
Programa
1.
2.
3.
4.
5.
Introducción.
Operaciones lógicas.
Bases de la aritmética binaria en coma fija.
Operaciones de desplazamiento.
Aritmética en coma fija.
a. Aritmética en binario natural.
b. Aritmética en signo-magnitud.
c. Aritmética en complemento (a 2, a 1).
d. Cambio de signo.
e. Extensión de signo.
6. Bibliografía.
Conceptos básicos: operaciones lógicas bit a bit (not, and, or), operaciones
aritméticas básicas en binario (+, -, *, /), desbordamiento, desplazamiento
(lógico, aritmético, circulares), cambio de signo, extensión de signo.
2
1
Tema 4. Aritmética binaria en los computadores
1. Introducción
Los computadores operan con los datos de forma diferente dependiendo del
sistema de representación utilizado.
• Coma fija: binario puro, signo-magnitud, complemento a 2, complemento a 1,
exceso a M, BCD.
• Coma flotante.
En los computadores el tamaño de los operandos está limitado.
• Coma fija: n = p+q bits (p: parte entera; q: parte fraccionaria).
• Coma flotante: n = p+q bits (p: mantisa; q: exponente).
Estudiaremos:
• La aritmética binaria básica.
• Los distintos tipos de operaciones lógicas y desplazamientos.
• La suma, la resta, la extensión de signo y el cambio de signo en algunos
sistemas de coma fija.
• La aritmética en coma flotante la veremos en un tema posterior.
3
Tema 4. Aritmética binaria en los computadores
2. Operaciones lógicas
De acuerdo con los axiomas del álgebra de Boole, las operaciones lógicas
toman bits individuales como operandos.
Sin embargo, los computadores realizan operaciones lógicas tomando datos
completos de n bits.
Operación lógica NOT (monaria): se invierten todos los bits del operando.
• Ejemplo: n=4 bits, A=0110.
A=0 1 1 0
NOT A = 1 0 0 1
Operaciones binarias: se realizan bit a bit con dos operandos.
• Ejemplo: n=4 bits, A=0110, B=1100.
A=0 1 1 0
B=1 1 0 0
A=0 1 1 0
B=1 1 0 0
A=0 1 1 0
B=1 1 0 0
A OR B = 1 1 1 0
A AND B = 0 1 0 0
A XOR B = 1 0 1 0
4
2
Tema 4. Aritmética binaria en los computadores
3. Bases de la aritmética binaria en coma fija
Las operaciones aritméticas en binario se realizan según tablas más sencillas
que las equivalentes en el sistema decimal. Para octal y hexadecimal se haría
de manera análoga.
Suma binaria
B
1
9
+ 15
acarreos
+
24
A
Resta binaria
SUMA
BINARIA
(+)
0
1
0
0
1
1
1
10
1 1 1
1 0 0 1
1 1 1 1
1 1 0 0 0
B
acarreo
-
83
21
acarreos
62
A
RESTA
BINARIA
(-)
0
0
0
1
1
11
0
1
1 0 1 0 0 1 1
1 0 1 0 1
1 1 1 1
minuendo
sustraendo
0 1 1 1 1 1 0
diferencia
5
Tema 4. Aritmética binaria en los computadores
Producto binario
1
12
× 6
0
0
72
0
1
PRODUCTO
BINARIO
(×
×)
0
0
1
B
A
×
1 1 0 0
1 1 0
0 0 0 0
1 1 0 0
1 1 0 0
1 0 0 1 0 0 0
64 + 8
multiplicando
multiplicador
Productos
parciales
resultado
= 72
6
3
Tema 4. Aritmética binaria en los computadores
División binaria
La división binaria se puede realizar igual que la decimal.
En el caso de la binaria es más sencillo porque se simplifica la elección de
cada dígito del cociente, ya que sólo pueden ser 0 ó 1.
Si el dividendo parcial es mayor o igual que el divisor, el siguiente dígito del
cociente es 1, si no es 0.
112
0
8
14
dividendo
-
1 1 1 0
1 0 0 0
0 1 1 0
-100
0 1 0
- 10
0 0
- 0
0
0 0 0
0
0
0
0
0
0
0
0
0
0 0
0 0
0 0
divisor
1 0 0 0
1 1 1 0
cociente
resto
7
Tema 4. Aritmética binaria en los computadores
Multiplicación y división de un número N por una potencia de la base r (rm):
N = a p-1 ⋅ r p -1 +
N ⋅ r m = a n-1 ⋅ r n-1+m +
+ a 0 ⋅ r 0 + a -1 ⋅ r -1 +
+ a 0 ⋅ r 0 +m + a -1 ⋅ r -1+ m +
+ a -q ⋅ r -q
+ a -p ⋅ r -p + m
La coma aparece a la derecha del dígito ai que cumple i+m = 0
detrás del dígito que originalmente era a-m.
i = -m, es decir
si m > 0 (producto) se mueve (desplaza) la coma p lugares a la derecha.
si m < 0 (división) se mueve (desplaza) la coma p lugares a
la izquierda.
Ejemplo:
(1101001,111)2 × 23 = (1101001111,0)2
(1101001,111)2 × 2-4 = (110,1001111)2
(10,53)10 × 104 = (105300,0)10
8
4
Tema 4. Aritmética binaria en los computadores
Situaciones especiales
El desbordamiento (overflow) es la circunstancia que sucede cuando el
resultado de una operación aritmética está fuera del rango de representación.
Desbordamiento positivo: el número es positivo y mayor que el más grande
representable.
Desbordamiento negativo: el número es más negativo (menor) que el
extremo inferior del rango de los negativos.
Es necesario detectar la condición de desbordamiento (¡el resultado
obtenido es erróneo!).
Subdesbordamiento (underflow): sucede cuando el número que queremos
representar está demasiado cercano a 0 y se confunde con él.
Subdesbordamiento positivo: el número es positivo.
Subdesbordamiento negativo: el número es negativo.
9
Tema 4. Aritmética binaria en los computadores
4. Operaciones de desplazamiento
Son operaciones unarias en las que los bits del operando se desplazan hacia
la izquierda o hacia la derecha.
La longitud del desplazamiento será s ≥ 1, generándose un “hueco” de s bits.
Según el criterio utilizado para dar valores a los s bits del hueco hay varios
tipos de desplazamientos:
Lógicos.
Aritméticos.
Circulares (rotaciones).
Los desplazamientos y rotaciones suelen involucrar a algún indicador de
resultado.
10
5
Tema 4. Aritmética binaria en los computadores
Desplazamiento lógico
En este caso los bits del hueco se rellenan con ceros.
• El último bit que sale se almacena en un indicador llamado C.
Ejemplos: n = 6 bits, A = 001011
Desplazamientos lógicos a la derecha:
Longitud s = 1
Longitud s = 2
Longitud s = 3
A’ = 000101
A’ = 000010
A’ = 000001
C=1
C=1
C=0
Desplazamientos lógicos a la izquierda:
Longitud s = 1
Longitud s = 2
Longitud s = 3
A’ = 010110
A’ = 101100
A’ = 011000
C=0
C=0
C=1
11
Tema 4. Aritmética binaria en los computadores
Desplazamiento aritmético
Se usa cuando se considera que el dato es un número en complemento a 2.
• Hacia la derecha: se replica el bit de signo.
• Hacia la izquierda: se rellena con ceros, y si se modifica el bit de signo en el
proceso el indicador V se pone a 1.
• El último bit que sale va al indicador C.
Ejemplos de desplazamientos aritméticos a la derecha:
n = 6 bits, A = 001011:
Longitud s = 1
Longitud s = 2
Longitud s = 3
A’ = 000101
C=1
n = 6 bits, B = 100101:
A’ = 000010
A’ = 000001
C=1
C=0
Longitud s = 1
Longitud s = 2
Longitud s = 3
B’ = 110010
B’ = 111001
B’ = 111100
C=1
C=0
C=1
12
6
Tema 4. Aritmética binaria en los computadores
Ejemplos de desplazamientos aritméticos a la izquierda:
n = 6 bits, A = 001011:
Longitud s = 1
Longitud s = 2
Longitud s = 3
A’ = 010110
A’ = 101100
A’ = 011000
C = 0, V = 0
C = 0, V = 1
C = 1, V = 0
n = 6 bits, B = 100101:
Longitud s = 1
Longitud s = 2
Longitud s = 3
B’ = 001010
B’ = 010100
B’ = 101000
C = 1, V = 1
C = 0, V = 1
C = 0, V = 0
13
Tema 4. Aritmética binaria en los computadores
Rotación
Los bits que salen por un extremo entran por el otro.
• El último bit que sale va al indicador C.
Ejemplos: n = 6 bits, A = 001011
Rotación a la derecha:
Longitud s = 1
Longitud s = 2
Longitud s = 3
A = 001011
A = 001011
A = 001011
A’ = 100101
A’ = 110010
A’ = 011001
C=1
C=1
C=0
Rotación a la izquierda:
Longitud s = 1
Longitud s = 2
Longitud s = 3
A = 001011
A = 001011
A = 001011
A’ = 010110
A’ = 101100
A’ = 011001
C=0
C=0
C=1
14
7
Tema 4. Aritmética binaria en los computadores
Rotación con extensión
Los bits que salen por un extremo entran por el otro, interponiéndose un indicador
en el proceso que actúa de almacén.
• El último bit que sale va al indicador C.
Ejemplos: n = 6 bits, A = 001011, inicialmente C=1
Rotación a la derecha con extensión:
Longitud s = 1
Longitud s = 2
Longitud s = 3
C = 1, A = 001011
C = 1, A = 001011
C = 1, A = 001011
C’ = 1, A’ = 100101
C’ = 1, A’ = 110010
C’ = 0, A’ = 111001
Rotación a la izquierda con extensión:
Longitud s = 1
Longitud s = 2
Longitud s = 3
C = 1, A = 001011
C = 1, A = 001011
C = 1, A = 001011
C’ = 0, A’ = 010111
C’ = 0, A’ = 101110
C’ = 1, A’ = 011100
15
Tema 4. Aritmética binaria en los computadores
Despl. a la Izquierda
Despl. a la Derecha
Lógico
Aritmético
Circular
Circular con
extensión
16
8
Tema 4. Aritmética binaria en los computadores
5. Aritmética binaria en coma fija
Estudiaremos las reglas básicas de la aritmética de algunos sistemas de
representación numérica en coma fija estudiados:
Binario puro.
Magnitud y signo.
Complemento a 2.
Complemento a 1.
17
Tema 4. Aritmética binaria en los computadores
5.a. Aritmética de binario puro
Sus reglas son las de la aritmética binaria ya estudiada, con la limitación del
tamaño de los operandos (n = p+q).
Desbordamiento: puede darse al realizar sumas, restas, multiplicaciones y
divisiones.
Suma: el resultado puede tener n+1 bits (acarreo superior C = 1)
acarreo
1101
+ 1111
13
+15
1 1100
28
1101
- 1111
13
- 15
1 1110
-2
DESBORDAMIENTO POSITIVO
Resta: el resultado puede ser negativo (acarreo superior C = 1)
acarreo
DESBORDAMIENTO NEGATIVO:
sustraendo mayor que minuendo
Producto: al multiplicar números de n bits el resultado puede necesitar hasta
2n bits (¡puede salirse de rango!).
División: hay desbordamiento si el divisor es 0.
18
9
Tema 4. Aritmética binaria en los computadores
5.b. Aritmética en magnitud y signo
Este sistema equivale al que los humanos usamos para operar.
Diferencia: opera en binario y no en base 10.
Las reglas básicas son similares a las del binario puro.
Diferencia: es preciso tratar por separado signos y magnitudes.
Suma: R = A + B
Signo(A) = Signo(B):
• Signo(R) = signo(A) = signo(B)
• |R| = |A| + |B|
A ≥ 0 y B ≤ 0:
• Si |A| ≥ |B|
signo(R) = 0 y |R| = |A| – |B|
• Si |A| < |B|
signo(R) = 1 y |R| = |B| – |A|
A ≤ 0 y B ≥ 0: igual que el caso anterior cambiando A por B.
Resta: similar a la suma, cambiando el signo del segundo operando.
19
Tema 4. Aritmética binaria en los computadores
Por tanto, al sumar o restar con módulo y signo se debe hacer lo siguiente:
1.
2.
3.
4.
Observar los signos y decidir qué operación se va a realizar.
Ordenar los módulos si hay que restar.
Operar con los módulos y detectar el posible desbordamiento.
Colocar el signo al resultado.
Producto:
1.
Se separan el signo y el módulo del multiplicando y del multiplicador.
2.
Se multiplican los módulos (da un resultado de hasta 2n-2 bits).
3.
Si los signos del multiplicando y el multiplicador son iguales, el resultado es
positivo, y si no es negativo.
El resultado puede tener hasta 2n-1 bits (¡puede salirse de rango!).
20
10
Tema 4. Aritmética binaria en los computadores
División:
1.
Se separan el signo y el módulo del dividendo y del divisor.
2.
Se dividen los módulos.
3.
Si los signos del dividendo y divisor son iguales, el cociente es positivo, y si no
es negativo.
4.
El signo del resto será siempre igual que el del dividendo.
Desbordamiento: se detecta al operar con los módulos.
Puede producirse al sumar dos números de igual signo o al restar dos números de
distinto signo.
También puede producirse desbordamiento en productos y divisiones.
21
Tema 4. Aritmética binaria en los computadores
5.c. Aritmética en complemento
Para simplificar el diseño de los circuitos aritméticos del computador sería muy
bueno que la suma y la resta pudieran ser tratadas sin distinciones, es decir,
que la resta pudiera realizarse como si fuese una suma y no con un circuito
radicalmente distinto.
En matemáticas se suele tratar a la resta como la suma de un opuesto, es
decir, A-B = A+(-B), pero aún así hay que utilizar la tabla de la resta.
Ejemplo: base r=10, n=2 dígitos.
23
– 02
La suma no sirve para hacer la resta.
21
Complementando
el sustraendo y
23
sumando:
+ 98
1 21
La suma casi sirve para hacer la resta
a excepción de un 1 como bit más
significativo.
22
11
Tema 4. Aritmética binaria en los computadores
La importancia del Cr de N reside en que permite restar aplicando la suma.
Ejemplo: Sistema decimal (base 10): C10N = 10n - N
Si n = 2, C10(2) = 102 - 2 = 100 - 2 = 98
100000
– 10100
Sistema binario (base 2): C2N = 2n - N
Si n = 4, C2(1010) = 10000 - 1010 = 0110
Si n = 5, C2(10100) = 25 - 10100 = 01100
01100
Inconveniente: hay que complementar el sustraendo.
Sin embargo, ya sabemos que en base 2 el C2N se puede calcular sin restar.
Debido a que en la complementación el minuendo siempre es de la forma
10...00, para el cálculo del C2 se procede de derecha a izquierda de la
siguiente manera:
Copiar todos los bits de N hasta el primer 1 inclusive.
El resto de los bits se obtienen cambiando 1s por 0s y 0s por 1s.
23
Tema 4. Aritmética binaria en los computadores
Suma en complemento a 2:
Además de permitir la resta mediante la operación de suma, los números
representados en complemento a la base permiten calcular la suma operando
con todos los bits de igual modo, sin hacer distinciones con el bit de signo.
Esto hace que la representación en complemento a 2 sea muy utilizada.
Si A >0 y B >0: aritmética binaria pura.
Ejemplo:
0100
+ 0010
4
+2
0110
6
Si A >0 y B <0: dos posibles casos dependiendo del valor absoluto de A y B
Si |A| ≥ |B|
R positivo, signo(R) = 0, se calcula R = |A| – |B|
A se representa normal
B se representa en C2
R = A + B = |A| + rn - |B| = rn + |A| - |B|
es un número positivo normal,
y se desprecia el bit de acarreo
Ejemplo:
6 + (-4) = 2
0110
+ 1100
6
- 4
1 0010
2
24
12
Tema 4. Aritmética binaria en los computadores
Si A >0 y B <0:
Si |A| < |B|
R negativo, signo(R) = 1, se calcula R = -(|B| – |A|)
A se representa normal
B se representa en C2
Ejemplo:
4 + (-6) = -2
0100
4
+ 1010
- 6
R = A + B = |A| + rn - |B| = rn - (|B| - |A|),
es un número negativo en complemento
1110
- 2
a la base, sin acarreo
Si A <0 y B >0: caso anterior cambiando A por B (conmutatividad).
Si A <0 y B <0
R negativo, signo(R) = 1, se calcula R = -(|A| + |B|)
A se representa en C2
B se representa en C2
Ejemplo:
R = A + B = rn - |A| + rn - |B| = rn+ (rn - (|A| + |B|)),
es un número negativo en complemento
a la base, y se desprecia el bit de acarreo
-2 + (-3) = -5
1110
-2
+ 1101
-3
1 1011
-5
25
Tema 4. Aritmética binaria en los computadores
Resta en complemento a 2:
Toda operación de resta en complemento a la base puede reducirse a un caso
de suma, sin más que complementar previamente el sustraendo.
Ejemplo: A = 6 10 = 0110 C2, B = 4 10 = 0100 C2, A-B = 2 10, n = 4, q = 0
Primero: complementar el sustraendo -B C2 = C2(B C2) = 1100 C2
Segundo: sumar A+(-B)
El acarreo superior se desprecia,
y el resultado es positivo
0110
+ 1100
10010
Ejemplo: A = -7 10 = 1001 C2, B = -3 10 = 1101
C2,
A-B = -4 10, n = 4, q = 0
Primero: complementar el sustraendo -B C2 = C2(B C2) = 0011 C2
Segundo: sumar A+(-B)
1001
+ 0011
1100
26
13
Tema 4. Aritmética binaria en los computadores
En sumas y restas en complemento a 2, el bit de acarreo superior
siempre se desprecia, y el resultado obtenido siempre es correcto (salvo
que se produzca desbordamiento).
Desbordamiento en sumas y restas: se detecta porque el resultado
presenta un signo erróneo.
Puede producirse desbordamiento al sumar dos números de igual signo o al restar
dos números de distinto signo.
Nunca puede haber desbordamiento al sumar números de distinto signo o al restar
números de igual signo.
El posible acarreo superior resultante en una suma o una resta no indica
desbordamiento.
También puede producirse desbordamiento en productos y divisiones.
27
Tema 4. Aritmética binaria en los computadores
Ejemplos de sumas con desbordamiento
A = 6 10 = 0110 C2, B = 3 10 = 0011 C2, A+B = 9 10, n = 4, q = 0
0110
+ 0011
1001
6
+3
¡¡-7!!
La suma de dos números positivos
no puede producir un número
negativo: hay desbordamiento (pero
no acarreo)
A = -3 10 = 1101 C2, B = -7 10 = 1001 C2, A+B = -10 10, n = 4, q = 0
1101
+ 1001
10110
-3
+ -7
¡¡6!!
La suma de dos números negativos no
puede producir un número positivo: hay
desbordamiento (y acarreo)
El acarreo superior se desprecia, y el
resultado es positivo
28
14
Tema 4. Aritmética binaria en los computadores
Aunque hay algoritmos para multiplicar y dividir directamente números en
complemento a 2, no los vamos a estudiar todavía (tema 14).
De momento, para multiplicar y para dividir haremos lo siguiente:
Pasamos los operandos a positivos.
Operamos en binario puro.
Si el análisis de los signos de los operandos revela que el resultado (o el cociente
o el resto) debe ser negativo, se complementa el dato obtenido.
De forma análoga a la aritmética estudiada para la representación en
complemento a la base, se puede estudiar la aritmética para la representación en
complemento restringido a la base (complemento a 1).
El acarreo superior siempre se desprecia.
Problema: si en sumas o restas el bit de acarreo superior vale 1, es preciso sumar
1 al resultado.
29
Tema 4. Aritmética binaria en los computadores
5.d. Cambio de signo
Binario puro: no es posible.
Magnitud y signo: basta con invertir el bit de signo.
Complemento a 2: se lleva a cabo mediante la complementación.
Ejemplo 1: cambiar de signo el número A C2 = 00011101 C2, n = 8, q = 0
-A C2 = C2(A C2) = 11100011 C2
Valor de -A C2 = 11100011 C2 = 1x20 + 1x21 + 1x25 + 1x26 - 1x27 = -29
Ejemplo 2: cambiar de signo el número -A C2 = 11100011 C2, n = 8, q = 0
-(-A C2) = C2(-A C2) = 00011101 C2
Valor de -(-A C2) = 00011101 C2 = 1x20 + 1x22 + 1x23 + 1x24 = 29
Ejemplo 3: cambiar de signo el número B C2 = 11001011 C2 , n = 8, q = 0
-B C2 = C2(B C2) = 00110101 C2
Valor de -B C2 = 00110101 C2 = 1x20 + 1x22 + 1x24 + 1x25 = 53
Complemento a 1: igual que en complemento a 2.
30
15
Tema 4. Aritmética binaria en los computadores
5.e. Extensión de signo
Es una operación consistente en que, dado un número A representado con n
bits, pasamos a representarlo con m bits, siendo n < m.
Binario puro: se rellenan los bits sobrantes en el destino con 0.
Ejemplo: extender X = 0110 2 de 4 a 8 bits
0110
00000110
Magnitud y signo: se desplaza a la izquierda el bit de signo, y el hueco en el
destino se rellena con bits a 0.
Ejemplo 1: extender X = 100110 MS de 6 a 8 bits
100110
10000110
Ejemplo 2: extender X = 010011 MS de 6 a 8 bits
010011
00010011
31
Tema 4. Aritmética binaria en los computadores
Complemento a 2: se replica el bit de signo hacia la izquierda.
Ejemplo 1: extender X = 100110 C2 de 6 a 8 bits
100110
11100110
Ejemplo 2: extender X = 010011 C2 de 6 a 8 bits
010011
00010011
Complemento a 1: se hace igual que en complemento a 2.
32
16
Tema 4. Aritmética binaria en los computadores
6. Bibliografía
C. CERRADA, V. FELIU. Estructura y Tecnología de Computadores I.
U.N.E.D., 1993.
J.M. ANGULO, J.GARCÍA. Sistemas Digitales y Tecnología de Computadores.
Paraninfo, 2002.
P. DE MIGUEL. Fundamentos de los Computadores. 7ª edición. Paraninfo,
1999.
W. STALLINGS. Organización y Arquitectura de Computadores. 5ªedición,
Prentice Hall, 2000.
D.A. PATTERSON, J.L. HENNESSY. Estructura y Diseño de Computadores.
Reverté, 2000.
A. PRIETO, A. LLORIS, J.C. TORRES. Introducción a la Informática. 3ª
edición, McGraw-Hill, 2002.
L. RINCÓN. Representación Digital de la Información en los Computadores.
Apuntes complementarios de la asignatura.
33
17
Descargar