E' che voi pensate che un numero negativo sia un qualche cosa diverso da ... un numero
Un numero è rappresentato da una serie di bit ... per convenzione noi, nel caso vogliamo trattare numeri segnati, diciamo che "un certo bit" rappresenta il segno (... non è esattamente così, ma una semplificazione) ...
Esempio : prendiamo un CHAR = 8 bit ...
... nel caso lo vogliamo trattare come SEGNATO sappiamo che esso può assumere valori da -128 a +127, mentre, se lo trattiamo come NON SEGNATO esso assume valori da 0 a 255 eppure ... sempre gli stessi bit stiamo utilizzando.
Quindi, a seconda di come interpretiamo i bit lo stesso numero 0xFF può assumere il valore -1 (signed) oppure +255 (unsigned) ... il trucco è questo ... NON considerare il bit del segno e vedere il risultato di quella "differenza" NON come un numero segnato, ma interpretare TUTTI i bit semplicemente secondo il loro valore binario (unsigned)
Spero sia un po' più chiaro ...
... fate un po' di prove e vederete che la tecnica di Leo è basata proprio su questo
Guglielmo
P.S. : In realtà vi ho semplificato un po' le cose ... se volete una descrizione molto più rigorosa e corretta (... complemento a due) potete trovarla qui : http://www.micro.dibe.unige.it/maurizio_valle/Elettronica_Industriale_1/Capitolo%208.pdf