Soustraction binaire
Pour effectuer une soustraction, le microprocesseur possède une opération spécifique, mais en interne, il utilise le même circuit que pour l’addition en inversant simplement le deuxième nombre (avec le complément à 2). Autrement dit, pour calculer \(a - b\), le processeur calcule \(a + (\overline{b} + 1)\).
Par exemple \(3 - 1\) est calculé comme :
Notez que dans cet exemple le flag de retenue (C
) est à \(1\), mais si on considère les nombres non signés, le résultat est bien correct.
Si l’on reste avec des nombres non signés et qu’on calcule \(2 - 3\), le microprocesseur calcule
La retenue (C
) est à \(0\) mais le résultat (\(7\)) est faux.
Le flag C
doit donc être interprété différemment pour une soustraction de nombres non signés et on devrait plutôt parler d’emprunt plutôt que
de retenue.
- Si le flag
C
est à \(1\), il n’y pas eu d’emprunt et le résultat est correct. - Si le flag
C
est à \(0\), il y a eu un emprunt, ça correspond à un dépassement de capacité et le résultat est faux
Pour les nombres signés, c’est le flag V
qui indique un dépassement de capacité et la logique est la même que pour l’addition :
- Si le flag
V
est à \(0\), le résultat est correct - Si le flag
V
est à \(1\), il y a eu un dépassement de capacité et le résultat est faux
Notez que le flag V
sera toujours \(0\) si les nombres sont de même signe.