8. Aritmetica con enteros

Anuncio
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
Descargar