¿Cómo determinar el desbordamiento de un sumador / restador?

4

Supongo que en la suma binaria (sin números negativos), ¿se produce un desbordamiento cuando hay una ejecución?

Luego, para el restador (complemento 2s), ¿cómo puedo determinarlo? ¿Por mi comprensión de mis apuntes de clase, el desbordamiento ocurre cuando hay un cambio en el signo o en la entrega de MSB diferente al de la ejecución? ¿Es eso cierto?

Luego, suponga \ $ 011_ {2s} + 001_ {2s} = 100_ {2s} \ $ la respuesta es correcta, pero llevar a MSB es 1, pero llevar a cabo es 0, por lo que de acuerdo con la regla anterior, es un desbordamiento ?

  11
  011
+ 001 (2s)
=======
 0100

Supongamos \ $ X \ $ & \ $ Y \ $ son los bits de mi signo, \ $ S \ $ se genera mi MSB y \ $ C_ {in}, C_ {out} \ $ son mi Carry in & afuera. Implementaré Overflow, \ $ O \ $ as

Supongamos que lo anterior fuera correcto, implementaré la lógica para determinar un desbordamiento como $$ Overflow = (Sign 1 \ odot Sign 2) (Sign 2 \ oplus Carry Out) + (Carry In \ oplus Carry = Out) $$

    
pregunta Jiew Meng

1 respuesta

2

De enlace :

"Los dos últimos bits de la fila de acarreo (lectura de derecha a izquierda) contienen información vital: si el cálculo produjo un desbordamiento aritmético, un número demasiado grande para que lo represente el sistema binario (en este caso mayor que 8 bits). Existe una condición de desbordamiento cuando estos dos últimos bits son diferentes entre sí. Como se mencionó anteriormente, el signo del número se codifica en el MSB del resultado ".

Entonces, su ejemplo, cuando se realiza en 3 bits, tiene un desbordamiento, porque el acarreo hacia el bit más alto es 1, el arrastre hacia fuera es 0. (También es fácil de ver intuitivamente: comienza con dos números positivos y finaliza con un número negativo). Intentaste hacer que las cosas fueran un poco confusas al escribir el resultado en 4 bits, pero omitiste la ejecución del 3er bit. Cuando se realiza en 4 bits, no hay desbordamiento, porque los dos últimos bits de acarreo (dentro y fuera del cuarto bit) son ambos 0.

La forma correcta de tomar nota de su adición (en tres bits) es:

 011
  011
+ 001 (2s)
=======
  100
    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas