Addition binaire de nombres signés

Dans le chapitre précédent, nous avons vu que nous pouvions réutiliser le système de chaîne de full adders pour l’addition de nombres signés, mais nous devons encore gérer le problème de la retenue.

Reprenons notre cercle des nombres signés. Nous observons que la “rupture” n’est plus en haut comme avec les nombres non signés, mais en bas, lorsqu’on passe du grand nombre positif au plus petit nombre négatif et inversement.

Cercle des nombres signées avec overflow

Le résultat d’une addition provoque un dépassement de capacité (et donc un résultat faux) dans deux cas :

  • si le résultat de l’addition de deux nombres positifs est plus grand que le plus grand nombre positif
  • si le résultat de l’addition de deux nombres négatifs est plus petit que le plus petit nombre négatif

Dans ces deux cas, le système notifie le dépassement de capacité en mettant le flag V (pour oVerflow) du registre d’état à \(1\).

Important

Notez que le microprocesseur n’a qu’une seule opération pour faire une addition; et il ne sait pas s’il additionne des nombres signés ou pas. On a vu que le résultat était le même et le microprocesseur calcule toujours les deux flags (C et V). C’est au programmeur de déterminer lequel de ces flags est relevant pour le résultat (C pour des entiers non signés et V pour des entiers signés).