Detección de desbordamiento para el caso dado

0

Se agregan dos números de complemento de 2 que tienen los bits de signo x e y el bit de signo del resultado es z. Entonces, ¿qué función booleana indica la aparición de un desbordamiento? Creía que el desbordamiento se produce cuando el XOR de la suma y el acarreo es 1, hay desbordamiento, o no hay desbordamiento. Teniendo esto en cuenta, se me ocurrió la siguiente tabla de verdad:

X Y Z Overflow

0 0 0 0

0 0 1 1

0 1 0 1

0 1 1 0

1 0 0 1

1 0 1 0

1 1 0 0

1 1 1 1

¿Esta tabla es correcta?

    
pregunta user1369975

1 respuesta

5

¿Cuándo puede ocurrir un desbordamiento?

  • Al agregar un número positivo y otro negativo, se obtiene un número entre ellos (incluido el borde inferior), por lo que no es posible el desbordamiento.
  • Agregar dos números positivos siempre dará como resultado un número positivo.
  • Agregar dos números negativos siempre resultará en un número negativo.

- > Un desbordamiento solo es posible cuando ambos sumandos comparten el mismo signo.

¿Puede un desbordamiento envolverse más de una vez?

En el número de complemento de un n-bit 2,

  • el número máximo es \ $ 2 ^ {n-1} -1 \ $. Sumando dos de los rendimientos: $$ 2 \ cdot (2 ^ {n-1} -1) = 2 ^ n-2 = -2 $$
  • el número mínimo es \ $ - 2 ^ {n-1} \ $. Nuevamente agregando dos de ellos: $$ 2 \ cdot (-2 ^ {n-1}) = - 2 ^ n = 0 $$

- > En caso de desbordamiento, el resultado será siempre negativo para sumandos positivos y positivo para sumandos negativos.

Conclusión

Se ha producido un desbordamiento si, y solo si, ambos sumandos tienen el mismo signo y el resultado tiene el otro signo.

    
respondido por el Rainer P.

Lea otras preguntas en las etiquetas