Si tu utilises le codage des "signed", c´est simple : il suffit de passer par un additionneur :
il faut d´abord savoir sur combien de bits tu es.
Si tu es sur un char, tu es en 8 bits.
Exemple donc : on va soustraire 5 - 3
le 5 est de code 00000101 (8 bits hein !)
le 3 est de code 00000011 (8 bits aussi)
tu fais subir une transformation a 3 pour le faire transformer en -3 (la est l´astuce)
--> TOUJOURS inverse tous les bits, puis ajoute 1.
Dans le cas de 3 :
00000011
reverse (NOT) :
11111100
ajoute 1 :
11111101
tu as le -3 :
Puis additionne 5 et -3
.00000101
.11111101
.--------
100000010
tu obtiens bien 2, avec un flag Carry (9e bit)
Voici comment marche la soustraction binaire avec les processeurs actuels.