¿Cuál es la diferencia en el indicador de acarreo y desbordamiento durante la multiplicación binaria?


Mejor respuesta

Al principio, debemos enfatizar esos puntos:

  • ALU no le importa si estás haciendo matemáticas con o sin signo.
  • ALU solo hace el binario matemáticas y establece las banderas de forma adecuada.
  • En signed numbers el bit de signo es un bit que indica el signo del número. y está ubicado en el bit más significativo.

– En unsigned aritmética, necesitamos observar el indicador de acarreo para detectar errores.

– En firmado aritmética, necesitamos observar el indicador de desbordamiento para detectar errores.

– El Carry Flag se establece si:

  • la suma de dos números provoca un arrastre de los bits más significativos (más a la izquierda) suma d.
  • 1111 + 0001 = 0000 => la bandera de acarreo está activada.
  • la resta de dos números requiere un préstamo en el más significativo (más a la izquierda ) bits restados.
  • 0000 - 0001 = 1111 => la bandera de acarreo está activada.

– el Indicador de desbordamiento se establece si:

  • la suma de dos números con el bit de signo off da un resultado número con el bit de signo on.
  • 0100 + 0100 = 1000 => el indicador de desbordamiento está activado.
  • la suma de dos números con el bit de signo on da como resultado un número de resultado con el bit de signo off.
  • 1000 + 1000 = 0000 => el indicador de desbordamiento está activado.
  • Tenga en cuenta que : signo mixto La adición nunca enciende la bandera de desbordamiento.

– para hacerlo más claro, veamos esos 2 ejemplos:

1- Supongamos la siguiente adición binaria `0111 + 0010 = 1001 `

– si estamos haciendo matemáticas sin firmar

0111 + 0010 = 1001 // overflow flag is turned on.

7 + 2 = 9 // its ok, we only care about the carry flag

– si estamos haciendo matemáticas con signos

0111 + 0010 = 1001 // overflow flag is turned on.

7 + 2 = -7 // error detected

2- asume la siguiente adición binaria `1111 + 0001 = 0000`

– si estamos haciendo matemáticas sin firmar

1111 + 0001 = 0000 // carry flag is turned on.

15 + 1 = 0 // error detected

– si estamos haciendo matemáticas con signos

1111 + 0001 = 0000 // carry flag is turned on.

-1 + 1 = 0 // its ok we only care about the overflow flag

// remember: Mixed-sign addition never turns on the overflow flag.

finalmente, puede encontrar más información aquí: http://teaching.idallen.com/dat2343/10f/notes/040\_overflow.txt

Respuesta

Desde un punto de vista mecanicista, la bandera de acarreo se activa cuando hay un acarreo del bit más significativo. La bandera de desbordamiento se activa cuando hay un acarreo en el bit más significativo.

Con la aritmética sin firmar solo tienes que preocuparte por el acarreo bandera. Si se realiza algo del bit más significativo, el resultado es demasiado grande para estar contenido en un solo registro.

Para la aritmética con signo, la situación es más compleja. El desbordamiento ocurre cuando la bandera de acarreo y la bandera de desbordamiento son diferentes. Aquí están todas las alternativas para sumar dos bits.

00 + 00 = 00, (0 + 0 = 0 decimal), CF = 0, OF = 0

01 + 01 = 10, (1 + 1 = -2 decimal) CF = 0, OF = 1 overflow

01 + 10 = 11, ( 1 + -2 = -1 decimal), CF = 0, OF = 0

01 + 11 = 00, ( 1 + -1 = 0 decimal), CF = 1, OF = 1

10 + 10 = 00, ( -2 + -2 = 0 decimal), CF = 1, OF = 0 overflow

10 + 11 = 01, ( -2 + -1 = 1 decimal), CF = 1, OF = 0 overflow

11 + 11 = 10, (-1 + -1 = -2 decimal), CF = 1, OF = 1

Tenga en cuenta que las líneas 2, 5 y 6 producen resultados incorrectos debido al desbordamiento y que estos también son cuando CF es diferente de OF.

Algunos procesadores pueden hacer esa comparación por usted y el OF que ve podría ser el resultado de comparar un indicador de acarreo interno con el indicador de acarreo (out). Seguirá siendo válido únicamente para aritmética con signo.

También funciona con otras aritméticas, incluida la multiplicación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *