Complemento a due

In informatica, Il complemento a due, o complemento alla base, è il metodo più diffuso per la rappresentazione dei numeri con segno. L'espressione complemento a due viene spesso usata impropriamente per indicare l'operazione di negazione (cambiamento di segno) nei computer che usano questo metodo. La sua enorme diffusione è data dal fatto che i circuiti di addizione e sottrazione non devono esaminare il segno di un numero rappresentato con questo sistema per determinare quale delle due operazioni sia necessaria, permettendo tecnologie più semplici e con maggiore precisione; si utilizza un solo circuito, il sommatore, sia per l'addizione che per la sottrazione.

Col complemento a due, il bit più significativo del numero ha peso negativo o positivo; da questo deriva che tutti i numeri che cominciano con un "1" sono numeri binari negativi, mentre tutti i numeri che cominciano con uno "0" sono numeri binari positivi.

Un numero binario positivo si può rendere negativo invertendone i bit e sommando 1 al valore risultante. Ciò è matematicamente giustificabile se osserviamo come si comporta la somma di un numero binario e del suo inverso: il risultato è una sequenza , che in complemento a 2 rappresenta -1. In simboli:

Allo stesso modo si può ottenere il valore assoluto di un numero binario negativo, ossia prendendo il complementare (invertendo il valore dei singoli bit) e aggiungendo 1 al numero binario risultante.

Un numero binario di cifre può rappresentare con questo metodo i numeri compresi fra e .

Ad esempio, un numero binario di 8 cifre può rappresentare i numeri compresi tra -128 e +127.

Questo metodo consente di avere un'unica rappresentazione dello zero (quando tutti i bit sono zero, eliminando così la ridondanza dello zero che si verifica con la rappresentazione in segno e modulo), e di operare efficientemente addizione e sottrazione sempre avendo il primo bit a indicare il segno.

Infatti se il bit più significativo (il primo) è uguale a 1, il numero in complemento a due sarà negativo, mentre se questo è uguale a zero il numero sarà positivo, ecco un esempio: