Quelle est la différence entre lindicateur de report et de dépassement lors de la multiplication binaire?


Meilleure réponse

Au début, nous devons souligner ces points:

  • ALU ne se soucie pas de savoir si vous faites des mathématiques signées ou non signées.
  • ALU fait juste le binaire math et définit les indicateurs de manière appropriée.
  • In signed numbers le bit de signe est un bit qui indique le signe du nombre. et Il est situé dans le bit le plus significatif.

– Dans unsigned arithmétique, nous devons surveiller lindicateur de retenue pour détecter les erreurs.

– Dans signé arithmétique, nous devons surveiller lindicateur de débordement pour détecter les erreurs.

– Le Carry Flag est défini si:

  • laddition de deux nombres entraîne une exécution des bits les plus significatifs (les plus à gauche) adde d.
  • 1111 + 0001 = 0000 => lindicateur de report est activé.
  • la soustraction de deux nombres nécessite un emprunt dans le plus significatif (le plus à gauche ) bits soustraits.
  • 0000 - 0001 = 1111 => lindicateur de report est activé.

– le Lindicateur de débordement est défini si:

  • la somme de deux nombres avec le bit de signe off donne un résultat numéro avec le bit de signe on.
  • 0100 + 0100 = 1000 => lindicateur de dépassement de capacité est activé.
  • la somme de deux nombres avec le bit de signe on donne un résultat avec le bit de signe off.
  • 1000 + 1000 = 0000 => lindicateur de dépassement de capacité est activé.
  • Notez que : signe mixte Laddition nactive jamais lindicateur de débordement.

– pour clarifier les choses, voyons ces 2 exemples:

1- supposons laddition binaire suivante `0111 + 0010 = 1001 `

– si nous faisons des mathématiques non signées

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

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

– si nous faisons des mathématiques signées

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

7 + 2 = -7 // error detected

2- Supposons laddition binaire suivante `1111 + 0001 = 0000`

– si nous faisons des mathématiques non signées

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

15 + 1 = 0 // error detected

– si nous faisons des mathématiques signées

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.

enfin, vous pouvez trouver plus dinformations ici: http://teaching.idallen.com/dat2343/10f/notes/040\_overflow.txt

Réponse

Dun point de vue mécanique, le drapeau de retenue est positionné quand il y a un report du bit le plus significatif. Lindicateur de débordement est défini lorsquil y a un report dans le bit le plus significatif.

Avec larithmétique non signée, vous navez quà vous soucier du report drapeau. Si quelque chose est effectué sur le bit le plus significatif, le résultat est trop grand pour être contenu dans un seul registre.

Pour larithmétique signée, la situation est plus complexe. Un débordement se produit lorsque lindicateur de report et lindicateur de débordement sont différents. Voici toutes les alternatives pour laddition sur deux 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

Notez que les lignes 2, 5 et 6 produisent des résultats incorrects en raison dun débordement et que ce sont également lorsque CF est différent de OF.

Certains processeurs peuvent faire cette comparaison pour vous et lOF que vous voyez peut être le résultat de la comparaison dun drapeau de report interne avec le drapeau de retenue (sortie). Il ne sera toujours valable que pour larithmétique signée.

Il fonctionne également avec dautres arithmétiques, y compris la multiplication.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *