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