3. Aritmética binaria Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 – 2007 Introducción La aritmética binaria es esencial en los ordenadores y en muchos otros tipos de sistemas digitales Para comprender los circuitos aritméticos es necesario conocer los principios básicos de estas operaciones Los objetivos de este tema son: Describir las operaciones de suma, resta, multiplicación y división de números binarios Introducir los distintos convenios usados para la representación de números negativos Detallar el proceso de realización de operaciones aritméticas en el formato más frecuentemente usado: complemento a 2 Aritmética binaria 2 1 Estructura del tema Introducción Operaciones aritméticas básicas Suma Resta Multiplicación División Representación de números enteros Signo-magnitud Complemento a 1 Complemento a 2 Resumen y bibliografía Aritmética binaria 3 Suma binaria La operación de suma se estructura en columnas El bit menos significativo del resultado de una columna es la suma de dicha columna El bit más significativo del resultado de una columna pasa como acarreo a la columna siguiente Las cuatro reglas básicas de la suma binaria son: suma 0, acarreo 0 0 + 1 = 01 suma 1, acarreo 0 1 + 0 = 01 suma 1, acarreo 0 1 + 1 = 10 suma 0, acarreo 1 0 + 0 = 00 Aritmética binaria 4 2 Suma binaria En el momento en el que aparece un acarreo igual a 1 nos vemos obligados a sumar tres bits en lugar de dos suma 1, acarreo 0 1 + 0 + 1 = 10 suma 0, acarreo 1 1 + 1 + 0 = 10 suma 0, acarreo 1 1 + 1 + 1 = 11 suma 1, acarreo 1 1 + 0 + 0 = 01 Ejemplo: 1110 + 1010 1 1 1 1 1 0 14 + 1 0 1 0 + 10 1 1 0 0 0 24 Aritmética binaria 5 Suma binaria Otro ejemplo: 1001001010’11 + 1101010111’1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 1 0 ’ 1 1 + 1 1 0 1 0 1 0 1 1 1 ’ 1 0 1 0 1 1 0 1 0 0 0 1 0 ’ 0 1 586’75 + 855’5 = 1442’25 Aritmética binaria 6 3 Resta binaria La operación de resta también se organiza en columnas Si el minuendo es menor que el sustraendo (0 menos 1) El resultado de la resta es la diferencia entre los dos Se produce un acarreo negativo, es decir, sumamos 1 al sustraendo de la siguiente columna Sumar un acarreo negativo a un 1 en el sustraendo implica la generación de un nuevo acarreo negativo Ejemplo: 1101 - 111 – 1 1 1 1 0 1 13 0 1 1 1 – 7 0 1 1 0 6 Aritmética binaria 7 Resta binaria Otro ejemplo: 1010101110’10 – 1001110100’01 1 0 1 0 1 0 1 1 1 0 ’ 1 0 1 1 1 1 – 1 0 0 1 1 1 0 1 0 0 ’ 0 1 0 0 0 0 1 1 1 0 1 0 ’ 0 1 686’5 – 628’25 = 58’25 Aritmética binaria 8 4 Multiplicación binaria Las reglas básicas de la multiplicación binaria son: 0x0=0 1x0=0 0x1=0 1x1=1 La multiplicación se realiza generando productos parciales, desplazando cada nuevo producto parcial una posición a la izquierda y luego sumándolos todos Ejemplo: 11 x 10 1 x 1 0 + 1 1 1 0 0 1 0 1 3 x 2 6 Aritmética binaria 9 Multiplicación binaria Otro ejemplo: 11010 x 101 1 1 0 1 0 x 1 0 1 1 1 1 0 1 0 0 0 0 0 0 1 1 + 1 1 0 1 0 1 0 0 0 0 0 1 0 Aritmética binaria 26 x 5 = 130 10 5 División binaria La división binaria sigue el procedimiento tradicional de multiplicación y resta al que estamos acostumbrados Ejemplo: 110 / 11 1 1 – 1 1 0 0 – 0 0 1 1 1 0 6 0 3 2 0 0 0 Aritmética binaria 11 División binaria Otro ejemplo: 100011 / 110 1 0 0 0 1 1 1 1 – 1 1 0 1 1 0 1 0 1 0 0 1 0 1 1 1 – 1 1 0 0 1 0 1 35 / 6 = 5 (resto = 5) Aritmética binaria 12 6 Estructura del tema Introducción Operaciones aritméticas básicas Suma Resta Multiplicación División Representación de números enteros Signo-magnitud Complemento a 1 Complemento a 2 Resumen y bibliografía Aritmética binaria 13 Números con signo Los sistemas digitales deben ser capaces de manejar tanto números positivos como números negativos Un número binario con signo se caracteriza por su magnitud y su signo La magnitud indica el valor del número El signo indica si es positivo o negativo Vamos a ver tres formatos binarios para representar números enteros En todos ellos, el bit más significativo representa el signo Todos los números en un ordenador tienen la mismo cantidad de bits, por lo que el bit de signo tiene una posición fija Aritmética binaria 14 7 Signo-magnitud El bit más a la izquierda representa el signo del número y el resto de bits representan la magnitud del número Un número negativo tiene los mismos bits de magnitud que su versión positiva, pero distinto bit de signo Se utiliza un 0 para el signo positivo Se utiliza un 1 para el signo negativo Dado que los números usados por un ordenador tienen tamaño fijo, supondremos números de 8 bits 26 25 24 23 22 21 20 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 16 + 4 + 1 21 16 + 4 + 1 –21 Aritmética binaria 15 Rango de valores en signo-magnitud Los números binarios naturales de n bits pueden tener valores que van desde 0 hasta 2n – 1 Dado que los números en formato signo-magnitud usan un bit de signo, un número de n bits sólo dedicará (n – 1) bits a representar la magnitud Los números en signo-magnitud pueden tener valores que van desde –(2n–1 – 1) hasta +(2n–1 – 1) Aritmética binaria binario decimal 000 0 001 1 010 2 011 3 100 –0 101 –1 110 –2 111 –3 16 8 Aritmética en signo-magnitud Suma y resta en signo-magnitud Se comparan el signo y la magnitud de los operandos Si el signo de los operandos es el mismo se suman las magnitudes y se mantiene el mismo signo Si el signo de los operandos es distinto, se resta la magnitud mayor menos la menor y se pone el signo de la mayor Multiplicación y división en signo-magnitud: Se multiplican o dividen las magnitudes Si los operandos tienen el mismo signo el resultado es positivo; en caso contrario el resultado es negativo Aritmética binaria 17 Desventajas en signo-magnitud En el formato signo-magnitud existen dos ceros, uno positivo y otro negativo, pero con el mismo significado La multiplicación y la división pueden hacerse basándose en sumas y restas, pero es necesario tener circuitos capaces tanto de sumar como de restar Dado que las operaciones de suma y resta necesitan realizar comparaciones, los circuitos aritméticos en signo magnitud tienden a ser más lentos de lo deseado Aritmética binaria 18 9 Estructura del tema Introducción Operaciones aritméticas básicas Suma Resta Multiplicación División Representación de números enteros Signo-magnitud Complemento a 1 Complemento a 2 Resumen y bibliografía Aritmética binaria 19 Complemento a 1 El complemento a 1 de un número binario se obtiene cambiando todos los 0 por 1 y todos los 1 por 0 Los números positivos se representan igual que los números positivos en formato signo-magnitud Los números negativos son el complemento a 1 del correspondiente número positivo Aritmética binaria 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 –21 21 20 10 Valor decimal en complemento a 1 El valor decimal de los números positivos se calcula de la misma manera que en signo-magnitud 26 25 24 23 22 21 20 0 0 0 1 0 1 0 1 16 + 4 + 1 21 El valor decimal de los números negativos se calcula asignando el valor negativo del peso correspondiente al bit de signo y luego sumando uno al resultado –27 26 25 24 23 22 21 20 1 1 1 0 1 0 1 0 –128 + 64 + 32 + 8 + 2 –22 + 1 –21 Aritmética binaria 21 Rango de valores en complemento a 1 El bit más significativo de los números en formato complemento a 1 0 001 1 010 2 011 3 100 –3 Los números en complemento a 1 101 –2 pueden tener valores que van desde 110 –1 111 –0 Un número de n bits sólo dedicará n – 1) bits a representar la magnitud ( decimal 000 representa el signo binario n–1 –(2 Aritmética binaria n–1 – – 1) hasta +(2 1) 22 11 Generalizació Generalización: complemento a la base – 1 El complemento a la base menos uno de un número se calcula restándolo a la potencia de la base que se corresponde con la cantidad de dígitos del número y luego restando uno al resultado Sistema decimal Complemento a 9 Con 2 dígitos decimales 28 100 Sistema binario Complemento a 1 Con 3 bits 011(2) 1000(2) – 011(2) – 1 = 100(2) (10) (10) – 28(10) – 1 = 71(10) La conversión de un número a este formato se puede realizar de forma sencilla, dígito a dígito en binario se intercambian 0’s y 1’s: 011(2) en decimal se resta cada dígito a 9: 28(10) 100 71 (2) (10) Aritmética binaria 23 Generalizació Generalización: complemento a la base – 1 Representando los números negativos en complemento a la base menos uno se simplifica la operación de resta La resta de dos números se expresa como la suma de un número positivo y otro negativo El minuendo se mantiene positivo El sustraendo se pasa a negativo calculando su complemento a la base menos uno con 3 bits 011 (2) – 011(2) = 0(2) con 2 dígitos decimales Aritmética binaria 28 (10) 011 (2) + 100(2) = 111(2) = – 0 – 28(10) = 0(10) 28 (10) + 71 (10) = 99(10) = – 0 24 12 Aritmética en complemento a 1 La operación de resta es innecesaria: para restar podemos limitarnos a sumar el complemento a 1 del número que queremos restar Por ejemplo, suponiendo números de 8 bits (1 byte): 00011000 – 00011001 = 00011000 + 11100110 0 0 0 1 1 0 0 0 +1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 24 – 25 = 24 + (–25) = –1 La multiplicación y la división también pueden realizarse partiendo de la suma Aritmética binaria 25 Aritmética en complemento a 1 La suma puede producir un acarreo en la última columna, que no puede representarse en 8 bits Para obtener el valor correcto debemos sumar este acarreo al resultado de la suma Por ejemplo, suponiendo de nuevo números de 8 bits: 00011001 – 00011000 = 00011001 + 11100111 + 0 0 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 + 0 0 0 0 0 0 0 1 Aritmética binaria 25 – 24 = 25 + (–24) = 1 26 13 Desbordamiento Dado que los números en un ordenador tienen una cantidad fija de bits, es posible un desbordamiento, es decir, que el resultado tenga demasiados bits Podremos identificar un resultado como incorrecto a causa de un desbordamiento porque no tendrá el signo que debería tener + 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 127 3 –125 Dos sumandos positivos no pueden sumar negativo Aritmética binaria 27 Desventajas del complemento a 1 En el formato complemento a 1 existen dos ceros, uno positivo y otro negativo, pero con el mismo significado La multiplicación, la división y la resta pueden hacerse basándose en sumas, pero los circuitos sumadores se complican porque en determinadas circunstancias hay que sumar un acarreo al resultado Debido a esta complicación, los circuitos aritméticos en complemento a 1 también tienden a ser más lentos de lo que se querría Aritmética binaria 28 14 Estructura del tema Introducción Operaciones aritméticas básicas Suma Resta Multiplicación División Representación de números enteros Signo-magnitud Complemento a 1 Complemento a 2 Resumen y bibliografía Aritmética binaria 29 Complemento a 2 El complemento a 2 de un número binario se obtiene sumando uno al bit menos significativo del complemento a 1 del número 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 + 1 1 1 1 0 1 0 1 1 21 –21 Un método alternativo es comenzar por el bit menos significativo hasta encontrar un 1 y luego hacer el complemento a 1 del resto del número Aritmética binaria 30 15 Valor decimal en complemento a 2 El valor decimal de los números positivos se calcula de la misma manera que en signo-magnitud 26 25 24 23 22 21 20 0 0 0 1 0 1 0 1 16 + 4 + 1 21 El valor decimal de los números negativos se calcula asignando el valor negativo del peso correspondiente al bit de signo –27 26 25 24 23 22 21 20 1 1 1 0 1 0 1 1 –128 + 64 + 32 + 8 + 2 + 1 –21 Aritmética binaria 31 Rango de valores en complemento a 2 El bit más significativo de los números en formato complemento a 2 representa el signo Un número de n bits sólo dedicará (n – 1) bits a representar la magnitud Los números en signo-magnitud pueden tener valores que van desde n–1 –(2n–1 ) hasta +(2 Aritmética binaria – 1) binario decimal 000 0 001 1 010 2 011 3 100 –4 101 –3 110 –2 111 –1 32 16 Generalización: complemento a la base El complemento a la base de un número se calcula restándolo a la potencia de la base correspondiente a la cantidad de dígitos del número Sistema decimal Complemento a 10 Con 2 dígitos decimales 28 100 Sistema binario Complemento a 2 Con 3 bits 011(2) 1000(2) – 011(2) = 101(2) (10) (10) – 28(10) = 72(10) Representando los números negativos en complemento a la base se simplifica la resta, permitiendo expresarla como la suma de un número positivo y otro negativo Con 3 bits 011 (2) – 011(2) = 0(2) Con 2 dígitos decimales 28 (10) 011 (2) + 101(2) = 1000(2) – 28(10) = 0(10) 28 (10) + 72 (10) = 100(10) Aritmética binaria 33 Ventajas del complemento a 2 Solo existe una representación del cero Todas las operaciones pueden hacerse con un circuito sumador, más simple que el usado por signo-magnitud o complemento a 1 y, por tanto, más rápido Por estos motivos, el complemento a 2 es el formato más utilizado por los ordenadores actuales Aritmética binaria binario signo-magnitud complemento a 1 complemento a 2 000 001 010 011 100 101 110 111 0 1 2 3 –0 –1 –2 –3 0 1 2 3 –3 –2 –1 –0 0 1 2 3 –4 –3 –2 –1 34 17 Suma en complemento a 2 Dado que el complemento a 2 es el formato más usado, estudiaremos su aritmética con más detalle Vamos a suponer que los números con los que trabajaremos tienen 8 bits (1 byte) A la hora de sumar dos números en complemento a 2, existen cuatro situaciones posibles Ambos números son positivos Los dos números tienen distinto signo ▫ El número positivo tiene un valor absoluto mayor que el negativo ▫ El número negativo tiene un valor absoluto mayor que el positivo Ambos números son negativos Aritmética binaria 35 Suma en complemento a 2 Si los dos valores sumados son positivos, el resultado también será positivo overflow), Existe la posibilidad de un desbordamiento ( es decir, de obtener un resultado incorrecto porque necesita más bits de los que se pueden representar 1 1 1 1 0 1 1 1 1 1 0 1 + 0 0 1 1 1 0 1 0 1 1 1 1 0 1 1 1 125 58 183 (max = 2 – 1 = 127) 7 Overflow!! El resultado debe ser positivo Aritmética binaria 36 18 Suma en complemento a 2 Si los dos valores sumados son negativos el resultado también será negativo carry) Existe la posibilidad de que aparezca un acarreo ( pero no invalida el resultado y debe descartarse 1 1 1 1 1 1 1 1 1 1 0 1 1 + 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 –5 –6 –11 Carry!! Se descarta y el resultado es correcto Aritmética binaria 37 Suma en complemento a 2 Si los dos valores sumados son negativos también existe la posibilidad de que ocurra un desbordamiento y, por tanto, el resultado sea incorrecto 1 1 1 0 0 0 0 0 1 1 + 1 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 –125 –58 –183 (min = –2 = 128) 7 Overflow!! El resultado debe ser negativo Carry!! Se descarta Aritmética binaria 38 19 Suma en complemento a 2 Si los dos valores sumados tienen distinto signo es imposible que ocurra un desbordamiento Cuando el valor absoluto del número positivo es mayor que el del negativo puede aparecer un acarreo, pero se descarta y el resultado es correcto 1 1 1 1 0 0 1 1 1 0 0 1 + 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 57 –29 28 Carry!! Se descarta y el resultado es correcto Aritmética binaria 39 Resta en complemento a 2 Para restar dos números se calcula el complemento a 2 del número restado y se suman, descartando cualquiera acarreo que pueda aparecer y controlando la posibilidad de que ocurra un desbordamiento 57 – 29 = 57 + (– 29) = 28 1 1 1 1 0 0 1 1 1 0 0 1 + 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 57 –29 28 Carry!! Se descarta y el resultado es correcto Aritmética binaria 40 20 Resta en complemento a 2 Para restar dos números se calcula el complemento a 2 del número restado y se suman, descartando cualquiera acarreo que pueda aparecer y controlando la posibilidad de que ocurra un desbordamiento –125 – 58 = –125 + (– 58) = –183 1 –125 –58 –183 (min = –2 = 128) 1 1 0 0 0 0 0 1 1 + 1 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 7 Overflow!! El resultado debe ser negativo Carry!! Se descarta Aritmética binaria 41 Sumas o restas en cadena Para sumar o restar varios números aplicamos la propiedad asociativa, es decir, sumamos o restamos los números de dos en dos 68 + 27 + 14 + 18 = ( (68 + 27) + 14) + 18 = 127 0 + 0 0 + 0 0 0 0 1 0 1 0 1 0 1 Aritmética binaria 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 68 27 95 14 109 18 127 42 21 Multiplicación en complemento a 2 La suma directa es el método más simple: sumar el multiplicando tantas veces como el multiplicador La desventaja de este método es que puede llegar a ser muy lento si el multiplicador es muy grande El método más común es el de los productos parciales Se multiplica el multiplicando por cada bit del multiplicador Cada producto parcial se desplaza un bit a la izquierda La suma de los productos parciales nos da el resultado Aritmética binaria 43 Multiplicación en complemento a 2 El signo del resultado depende de los signos de los números multiplicados Si son del mismo signo, el resultado es positivo Si son de distinto signo, el resultado es negativo Después de comprobar los signos, los números a multiplicar deben ser pasados a binario real Es bastante posible que el resultado tenga más bits que la representación de los operandos 3x3=9 Aritmética binaria 11 x 11 = 1001 44 22 Multiplicación en complemento a 2 Ejemplo: 83 X –59 = –4897 Los números tienen distinto signo, luego el resultado será un número negativo 83 = 01010011 –59 = 11000101 Pasamos los números a binario real Ignoramos el bit de signo del número positivo Deshacemos el complemento a 2 del número negativo y luego ignoramos el bit de signo 83 = 01010011 –59 = 11000101 59 = 00111011 Aritmética binaria 45 Multiplicación en complemento a 2 Realizamos la multiplicación entre los dos números positivos + + 1 + 1 1 0 Aritmética binaria + 1 1 1 0 0 0 0 1 0 1 0 1 0 x0 0 1 1 0 + 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 46 23 Multiplicación en complemento a 2 Multiplicando números de 8 bits hemos obtenido un resultado de 13 bits Supondremos que el resultado tiene 16 bits Será importante recordar esto para diseñar multiplicadores Dado que hemos multiplicado dos números positivos, el bit de signo debe ser positivo o habrá habido un desbordamiento 0001001100100001 Una vez obtenido el resultado, y dado que habíamos determinado que éste era negativo, calculamos el complemento a 2 del mismo 0001001100100001 1110110011011111 Aritmética binaria 47 División en complemento a 2 El esquema básico de división usado en los ordenadores está basado en la resta Dado que las restas en complemento a 2 son sumas, la división puede realizarse con circuitos sumadores El signo del resultado depende de los signos de los dos operandos de la división Si son del mismo signo, el resultado es positivo Si son de distinto signo, el resultado es negativo Tras comprobar los signos, cualquier número negativo debe ser convertido en el positivo corresponidente Aritmética binaria 48 24 División en complemento a 2 Ejemplo: 100 / 25 = 4 Los números tienen el mismo signo, luego el resultado será un número positivo 100 = 01100100 25 = 00011001 En caso de que alguno de ellos hubiera sido un número negativo hubiéramos tenido que deshacer el complemento a 2 El valor inicial del cociente es cero C=0 Aritmética binaria 49 División en complemento a 2 ) Restamos el divisor del dividendo (sumando su complemento a 2 para obtener el primer resto parcial y luego sumamos uno al cociente 01100100 – 00011001 01100100 + 11100111 = 101001011 C=C+1=0+1=1 Si el resto parcial es cero o negativo, damos la división por finalizada Si el resto parcial es positivo, repetimos el proceso, restando el divisor del resto parcial y volviendo a sumar uno al cociente Aritmética binaria 50 25 División en complemento a 2 Segunda iteración: 01001011 – 00011001 01001011 + 11100111 = 100110010 C = C + 1 = 1 + 1 = 10 Tercera iteración: 00110010 – 00011001 00110010 + 11100111 = 100011001 C = C + 1 = 10 + 1 = 11 Aritmética binaria 51 División en complemento a 2 Cuarta iteración: 00011001 – 00011001 00011001 + 11100111 = 100000000 C = C + 1 = 11 + 1 = 100 El resto parcial es cero, por lo que la división termina Sólo queda asegurarse de que el bit de signo es el correcto, en este caso, signo positivo C = 100 7 bits magnitud 1 bit de signo positivo Aritmética binaria C = 0000100 C = 00000100 52 26 Estructura del tema Introducción Operaciones aritméticas básicas Suma Resta Multiplicación División Representación de números enteros Signo-magnitud Complemento a 1 Complemento a 2 Resumen y bibliografía Aritmética binaria 53 Resumen La comprensión de las operaciones básicas de la aritmética binaria es importante para el diseño de los circuitos digitales que las realizan Existen varios formatos que permiten la representación de números enteros negativos Los ordenadores actuales utilizan generalmente el formato de complemento a 2 para representar números negativos porque permite simplificar en gran medida el diseño de los circuitos necesarios Aritmética binaria 54 27 Bibliografía Fundamentos de Sistemas Digitales (7ª edición) Capítulo 2 Thomas L. Floyd Prentice Hall, 2000 Principios de Diseño Digital Capítulo 2 Daniel D. Gajski Prentice Hall, 1997 Aritmética binaria 55 28