Desbordamiento (overflow) Se produce cuando al operar dos números en una representación, el resultado obtenido está fuera del rango (no es representable) Habrá que detectarlo y dar un mensaje de error Fundamentos de Informática EUP-ULPGC Jose Torres Aritmética en binario natural Para sumar dos números en binario natural, se hace la suma binaria de los números Si se produce acarreo de orden superior (n), hay desbordamiento Para restar dos números en binario natural, se hace la resta binaria de los dos números Si se produce acarreo negativo de orden superior (n), hay desbordamiento Fundamentos de Informática EUP-ULPGC Jose Torres Ejemplo: n=8, rango de representación [0, 255] 6710 + 3510 = 010000112 + 001000112 = 011001102 = 10210 (6710 + 20010) = 010000112 + 110010002 = (1)000010112 Æ hay desbordamiento: el 26710 no es representable en binario natural con 8 bits 6710 - 3510 = 010000112 - 001000112 = 001000002 = 3210 (6710 - 20010) = 010000112 - 110010002 Æ se produce un acarreo negativo de orden 8 Æ hay desbordamiento: el -13310 no es representable en binario natural con 8 bits Fundamentos de Informática EUP-ULPGC Jose Torres Aritmética en complemento a 2 Para sumar dos números en C2, se hace la suma binaria de los números Para restar dos números en C2, se hace la suma binaria del minuendo y el complemento a 2 del sustraendo Un acarreo de orden superior no implica desbordamiento, simplemente se desprecia Habrá desbordamiento cuando los signos de los operandos son iguales y distintos al signo del resultado Fundamentos de Informática EUP-ULPGC Jose Torres Ejemplo: sean A y B variables enteras de un programa para computadora, con A=+8510 y B=-5510. Si la computadora utiliza aritmética en complemento a 2 con 8 bits, muestra la forma de calcular A+B , A-B, B-A y –A-B AC2=+8510= B’01010101; -AC2=-8510= C2(A)= B’10101011 -BC2=+5510= B’00110111; BC2=-5510= -(-B)= C2(-B)= B’11001001 (A+B)C2=AC2+BC2: 01010101+11001001= 100011110 (A-B)C2=A+C2(B)=AC2+(-BC2): 01010101+00110111=10001100 [operandos>0 y resultado<0 => desbordamiento] (B-A)C2=B+C2(A)=BC2+(-AC2): 11001001+10101011=101110100 [operandos<0 y resultado>0 => desbordamiento] -A-B=(-A)+C2(B)=(-AC2)+(-BC2): 10101011+00110111=11100010 Fundamentos de Informática EUP-ULPGC Jose Torres