Capítulo 2 Aritmética Binaria Entera • Aritmética Binaria Entera Ö Una de las principales aplicaciones de la electrónica digital es el diseño de dispositivos capaces de efectuar cálculos aritméticos, ya sea como principal objetivo (calculadoras, computadoras, máquinas registradoras, etc.) o bien, como una subfunción que les permita realizar su cometido principal (medidores, controladores, registradores, etc.) Por ello, y dado que los sistemas digitales sólo pueden manejar información binaria, es necesario entender las operaciones aritméticas fundamentales en términos del sistema de numeración binario. En este capítulo se tratan las operaciones fundamentales en el sistema binario solamente para números enteros. Un tratamiento más general debe contener un tratamiento de números fraccionarios, es decir, la aritmética de punto fijo y la de punto flotante. La primera de estas dos es una extensión casi inmediata del la aritmética entera. @ Notación En este capítulo cuando no se anote el subíndice de un número que sólo contiene unos y ceros se sobreentenderá que está en binario. 2.1.- ADICIÓN O SUMA BINARIA En forma similar a como realizamos las sumas en decimal, para realizarlas en otros sistemas es necesario aprender de memoria algunas sumas básicas, especialmente las sumas de dígito con dígito; en decimal éstas son 100 sumas (tablas de sumar), mientras que en binario son sólo 4, puesto que en binario sólo hay dos dígitos: O Tabla de sumar: + 0 1 0 0 1 1 1 10 F Cuando la tabla anterior se usa en una suma de cantidades de varios bits, se suma columna por columna de LSB a MSB y si aparece el caso 1+1, se anota el 0 y se acarrea el 1 a la siguiente columna. Ejemplos: 1) sumar 101101 + 10101, es decir, 4510 + 2110 Acarreos: + 1 1 1 1 101101 10101 100100 Acarreos: + 2) sumar 11101 + 111, es decir, 2910 + 710 10 1 2910 710 3610 Capítulo 2 Aritmética Binaria Entera Acarreos: 1 1 1 1 Acarreos: 11101 + 00111 100100 1 2910 710 3610 + q 2.2.- SUSTRACCIÓN O RESTA BINARIA En forma similar a la suma, es conveniente memorizar la siguiente O Tabla de restar: 0 1 0 0 1 1 -1 0 F Cuando la tabla anterior se usa en la resta de cantidades de varios bits, se resta columna por columna de LSB a MSB y si aparece el caso de restar 0 - 1 se interpreta como si fuera 10 - 1, resultando un 1 y un acarreo negativo, o préstamo de 1 tomado de la siguiente columna. Ejemplos: 1) restar 101101 - 10101, es decir, 4510 - 2110 Préstamos: -1 + 101101 10101 011000 4510 2110 2410 - 2) restar 11101 - 111, es decir, 2910 - 710 Préstamos: -1 -1 11101 + 00111 10110 + 2910 710 2210 q 2.3.- REPRESENTACIÓN DE NÚMEROS NEGATIVOS. En la construcción de dispositivos digitales que realicen operaciones de resta se puede obtener un considerable ahorro si esta operación es realizada mediante los mismos dispositivos que realizan la suma, de esta manera no es necesario construir dos tipos de dispositivos, y el problema se convierte más bien en cómo manejar adecuadamente los números negativos para realizar restas usando sumas. 2.3.1.- MAGNITUD SIGNADA O El método de representación de números negativos que consiste en anteponer un signo “-” al valor absoluto de la cantidad se le llama magnitud signada y es el método tradicionalmente usado en decimal, ya que está pensado en su manipulación por humanos. Ejemplos: -510, -10112, .5EH, ... etc. 11 Capítulo 2 Aritmética Binaria Entera F La principal desventaja del método de magnitud signada es que requiere de dos métodos diferentes, uno para la suma y otro para la resta. 2.3.2.- SISTEMA DE NUMERACIÓN DE COMPLEMENTO A LA BASE (COMPLEMENTO A DOS) Un método de representación de cantidades negativas que permite realizar restas mediante sumas consiste en representar los números negativos por su complemento, es decir, por lo que les falta para cierta cantidad tomada como base. O En el sistema de numeración de complemento a la base r, los números negativos de n dígitos se representan por la cantidad que les falta para completar rn. Es decir, en este sistema, la cantidad -Nr se representa por su complemento, es decir, como rn-N y en ocasiones se denota [N]r. Ejemplos: 1) Caso decimal (complemento a 10) para 2 dígitos (r=10, n=2) -1510 = 102 - 15 = [85]10 De esta manera, una resta como 45 - 15, se puede realizar mediante la suma 45 + 85 =(1)30, despreciando el acarreo indicado entre paréntesis, ya que sólo se están usando 2 dígitos. 2) Caso binario (complemento a 2) para 4 dígitos (r=2, n=4) -01012 = (10000 - 0101)2 = [1011]2 De esta manera, una resta como 1010, se puede realizar mediante la suma 1010 - 0101 + 1011 0101 (1)0101 despreciando el acarreo indicado entre paréntesis, ya que sólo se están usando 4 dígitos. q Observación: En el sistema de complemento a dos los número positivos se escriben sin ningún cambio. O Bit de signo (S) En el sistema de numeración de complemento a dos el MSB se denomina bit de signo y se usa para indicar el signo del número representado, de acuerdo a la siguiente convención: S = 0 El número es positivo y el resto de los bits indica su magnitud directamente. S = 1 El número es negativo y está en la forma complementada Ejemplo: Expresar +5 y -5 en una palabra de 8 bits en el sistema de complemento a 2. + 5 es positivo y se expresará directamente pro su magnitud en binario como 0000101 - 5 es negativo y estará expresado en la forma de complemento a 2 como: +5=00000101 Complemento a 2: 1 1 1 1 1 0 1 1 = - 510 Obsérvese que de acuerdo a esta convención del sistema de complemento a dos, al aplicar el complemento a 2 a un número binario, equivale a cambiarle el signo (multiplicar por -1) q Ejemplo: 11010112 es un número de 7 bits, incluyendo el bit signo. ¿Cuál es su equivalente decimal ? 12 Capítulo 2 Aritmética Binaria Entera Como el bit signo es = 1, el número es negativo y se encuentra en su forma complementada. 1 1 0 1 0 1 1 : número negativo 0 0 1 0 1 0 1 : valor absoluto (complemento a dos del número) 21 : equivalente decimal del complemento entonces: [1101011]2 = -2110 q Ejemplo: Si (01101011)2 es un número de 8 bits, incluyendo el bit signo. Cuál es su equivalente decimal?. Como el bit signo es = 0, el número es positivo y el resto de los bits indican su magnitud. número positivo: valor absoluto : 0 1 1 0 1 0 1 1 = 10710 01101011 entonces (01101011)2 =+10710 q Ejemplo: Cuál es el equivalente en binario de complemento a dos de (-535)10 ? Usaremos hexadecimal como paso intermedio a binario. Convirtiendo +535 a Hexadecimal: 16 535 33 --> 7 2 --> 1 0 --> 2 Por tanto (+535)10 = (010 0001 0111)2 (+535)10 = 010 0001 0111 101 1110 1001: complemento a dos por lo tanto (-535)10 = [101 1110 1001]2 Obsérvese que para indicar este resultado se requieren por lo menos 11 bits q 2.3.3.- COMPLEMENTO A LA BASE DISMINUIDA Una alternativa al sistema de complemento a la base es el complemento a la base menos 1. en este sistema un número negativo -N de n dígitos en base r se representa por lo que le falta para llegar a rn-1 y se suele denotar por [N]r-1, es decir, [N]r-1 = rn - 1 - N. en otra palabras, [N]r-1 = [N]r -1. Ejemplos: 1) Caso decimal (complemento a 9) para 2 dígitos (r=10, n=2) -1510 = 102 - 1 - 15 = 99 - 15 = [84]9 De esta manera, una resta como 45 - 15, se puede realizar mediante la suma 45 + 84 =(1)+29, (sumando el acarreo indicado entre paréntesis como una corrección del resultado). 2) Caso binario (complemento a 2) para 4 dígitos (r=2, n=4) -01012 = (10000 - 1 - 0101)2 = (1111 - 0101)2 = [1010]1 13 Capítulo 2 Aritmética Binaria Entera De esta manera, una resta como 1010, se puede realizar mediante la suma 1010 - 0101 + 1010 0101 (1)0100 + 1 0101 (sumando el acarreo indicado entre paréntesis). q 2.3.4.- OBTENCIÓN DE COMPLEMENTOS BINARIOS SIN USAR RESTAS. La ventaja que provee el sistema de complementos al convertir una resta en una suma no sería tal si para obtener el complemento usamos la definición, ya que esta requiere una resta. A continuación se describen dos algoritmos que permiten obtener el complemento a 2 sin usar restas: Algoritmo 1 @ 1) Se copian los bits del número de LSB a MSB hasta encontrar el primer bit 1. 2) Se prosigue invirtiendo los bits restantes (es decir, cambiando 1’s por 0’s y 0’s por 1’s) hasta llegar al MSB. Ejemplo. Para obtener el complemento a 2 de N=10110100 ò se copian los primeros bits hasta el primer 1: se invierten los bits restantes: resultando finalmente: ò 100 01001 01001100 q Algoritmo 2 @ 1) Se obtiene el complemento a 1 del número invirtiendo todos sus bits. 2) Se suma 1 al resultado anterior. Ejemplo. para obtener el complemento a 2 de N= 010110 se invierten todos los bits (complemento a 1): 101001 se suma 1 al resultado: +1 resultando finalmente: 101011 q 2.3.5.- SUMAS Y RESTAS USANDO COMPLEMENTO A DOS. A continuación se dan algunos ejemplos de restas usando complemento a dos, se introduce el concepto de sobreflujo y el de bit de signo. O Sobreflujo. Se dice que una operación (en el sistema de complemento a dos) produce un sobreflujo, cuando el resultado requiere más bits que los que se están usando en la operación. Para visualizar el concepto de sobreflujo, es conveniente tener en mente el rango representable en complemento a dos con n bits. Ejemplo: ¿Cuál es el rango de números representables en complemento a dos con 3 bits? En este caso es simple representar todos los números e interpretarlos en decimal: 14 Capítulo 2 Aritmética Binaria Entera Complemento a 2 000 001 010 011 100 101 110 111 Decimal 0 1 2 3 -4 -3 -2 -1 entonces el rango es de -4 a +3. No es difícil concluir que en general el rango representable con n bits será de -2n-1 a +2n-1-1. q F De acuerdo al ejemplo anterior, si intentamos sumar (por ejemplo) 3+2 usando tres bits, el resultado (5) no podrá ser expresado con tres bits, ya que se sale del rango y se tendrá un sobreflujo. Ejemplo: Realizar las siguientes sumas en binario de complemento a dos, usando 4 bits. Indicar el signo del resultado y en donde se produce sobreflujo: a) 4+3 b) -4 + 5 0100 +0011 0111 El resultado es positivo y no hay sobreflujo 1100 +0101 10001 El resultado es positivo y no hay sobreflujo c) -4 - 5 1100 +1011 10111 El resultado es positivo, lo cual no puede ser pues se están sumando dos datos negativos e hay sobreflujo. d) 6 + 5 0110 +0101 1011 El resultado es negativo, lo cual no puede ser pues se están sumando dos datos positivos e hay sobreflujo. e) 9 + 2 Esta operación NO se puede realizar con 4 bits, ya que el 9 requiere al menos 5 bits para ser expresado en el sistema de complemento a 2 . q Interpretación del acarreo en el resultado de sumas en complemento a 2 "Si los signos de los números que se suman son diferentes, cualquier acarreo obtenido es falso y deberá de ser ignorado". Ejemplo: Ver inciso (b) del ejemplo anterior. "Si los signos de los números que se suman son iguales, el acarreo es verdadero y actúa como el bit signo. En ausencia de acarreo se considera que este es 0, así la respuesta es positiva". Ejemplos ver incisos (a), (c) y (d) del ejemplo anterior. 15 Capítulo 2 Aritmética Binaria Entera Ejemplo: Efectúe las siguientes operaciones y exprese el resultado en decimal con su signo (MSB = bit signo) a).- 01111011 + 1 0 1 1 0 0 1 0 como los signos de los números son 1 0 0 1 0 1 1 0 1 diferentes, el acarreo se ignora bit signo = 0 = + resultado = + 00101101 = +4510 b).- 10010111 + 1 0 1 0 0 1 1 0 como los signos son iguales, el acarreo es el bit de signo del resultado 100111101 acarreo = bit signo = 1 = resultado =- complemento a 2 de 00111101 = -11000011 = - 19510 q 2.4.- MULTIPLICACIÓN BINARIA El conjunto básico de multiplicaciones de un sólo bit que hay que memorizar se resume en la siguiente O Tabla de multiplicar: * 0 1 0 0 1 1 0 0 Sin embargo, al realizar multiplicaciones de números de varios bits, usamos las mismas reglas de la multiplicación decimal. de manera que una multiplicación de este tipo se convierte al final en varias sumas. Ejemplo: 1011 *101 1011 0000 +1011 110111 1110 *510 5510 2.4.1.- MULTIPLICACIÓN POR SUMAS Y CORRIMIENTOS Como se puede observar en el ejemplo, la multiplicación puede realizarse en una forma más sistematizada como se indica enseguida, de acuerdo a los bits del multiplicador, comenzando por el LSB hacia el MSB. El algoritmo descrito a continuación es especialmente útil si la multiplicación va a ser realizada por una máquina digital (circuitos o computadora digital). 16 Capítulo 2 Aritmética Binaria Entera : Algoritmo 1) Si el primer bit en el multiplicador es 1, anote el multiplicando como resultado parcial. 2) Si el primer bit del multiplicador es 0; anote ceros como resultado parcial. 3) Se recorre el multiplicando un lugar a la izquierda. 4) Por cada 1 en el multiplicador después del primer bit sume el multiplicando al resultado parcial. Enseguida recorra el multiplicando un lugar a la izquierda. 5) Por cada cero en el multiplicador después del primer bit, no sume, únicamente recorra el multiplicando un lugar a la izquierda. 6) Repita el procedimiento hasta incluir todos los bits del multiplicador. Ejemplo: 0 0 1 0 0 0 1 multiplicando 0 0 1 1 0 0 1 multiplicador 0010001 +0010001- - 0010011001 + 0010001 00110101001 - 00110101001 producto * Comprobando en decimal: (17)10 * (25)10 = (425)10 q 2.5.- DIVISIÓN BINARIA En la división de números binarios se puede aplicar el mismo procedimiento de prueba y error que se usa en la división decimal. Ejemplo: 0001010 1001 1011101 -1 0 0 1 001010 -1001 00011 Cociente 10 9 93 3 Residuo 2.5.1 DIVISIÓN POR RESTAS Y CORRIMIENTOS En forma similar a la multiplicación, la división se puede sistematizar para realizarla por restas y corrimientos. En este algoritmo el cociente es obtenido bit por bit, así, cada siguiente sólo puede ser 0 ó 1. Así comenzando de izquierda a derecha, si se puede substraer el divisor del dividendo, se anotará un 1 17 Capítulo 2 Aritmética Binaria Entera en el cociente, en caso contrario el dígito será 0. Después de cada paso se hace un corrimiento del divisor hacia la derecha. Ejemplo: La división 5710 /310: 0 1 0 0 1 1 Cociente divisor 1 1 1 1 1 0 0 1 dividendo 1 Corrimiento 1 1 0 0 0 0 0 111001 2do Corrimiento -1 1 0 0 0 0 001001 3er Corrimiento 011000 001001 4to Corrimiento 001100 001001 5to Corrimiento -0 0 0 1 1 0 000011 6to Corrimiento -0 0 0 0 1 1 000000 er 18 no se efectúa resta se efectúa resta no se efectúa resta no se efectúa resta se efectúa resta se efectúa resta residuo