Sistemi e Architetture

Somma e Sottrazione Binaria

Esegui l'operazione passo dopo passo, colonna per colonna, esattamente come a mano — utile anche per verificare un esercizio già svolto sulla carta.

= 200
= 150

Esegui tutti i passi per vedere il risultato finale.

Il riporto (carry) nella somma

Nella somma in colonna, ogni bit si calcola insieme al bit corrispondente dell'altro numero e al riporto generato dalla colonna precedente (quella meno significativa, a destra). Quando la somma di una colonna vale 2 o 3, si scrive il bit meno significativo del risultato e si riporta 1 alla colonna successiva — esattamente come nella somma in colonna decimale.

Con due numeri a 8 bit, il riporto generato dall'ultima colonna (il bit più significativo, 27) diventa un nono bit: il risultato di una somma a 8 bit può quindi richiedere 9 bit per essere rappresentato senza perdere informazione.

💡

Se il registro che memorizza il risultato è largo solo 8 bit, quel nono bit (il riporto finale) va perso: il valore letto sarà diverso da quello matematicamente corretto. Provalo nel calcolatore con 11001000 + 10010110 (200 + 150).

Sottrarre senza sottrarre: il complemento a 2

I calcolatori non implementano un circuito separato per la sottrazione: usano lo stesso circuito della somma. L'idea è semplice: A − B si calcola come A + (complemento a 2 di B).

Il complemento a 2 di un numero a 8 bit si ottiene in due passaggi: si inverte ogni bit (complemento a 1, cioè il NOT bit a bit), poi si somma 1 al risultato. Il numero ottenuto, sommato all'originale, dà sempre 0 (a meno del riporto finale, che si scarta).

Il risultato della somma A + complemento_a_2(B) si interpreta poi come un numero con segno: se il bit più significativo è 0 il numero è positivo e si legge normalmente; se è 1 il numero è negativo, e il suo valore si ottiene sottraendo 256 al valore binario letto come se fosse senza segno.

Il riporto finale generato da questa somma si scarta sempre: è una conseguenza naturale del metodo, non un segnale di errore (a differenza della somma normale, vedi sezione successiva).

Overflow di segno e riporto finale: due cose diverse

È facile confondere due concetti che riguardano entrambi l'ultimo bit, ma hanno significati opposti:

Riporto finale (somma senza segno)

Indica che il risultato non entra in 8 bit. È un'informazione persa se ignorata: il valore letto sarà sbagliato. Va sempre considerato un avviso.

Riporto nella sottrazione (complemento a 2)

Va sempre scartato: non indica un problema. L'eventuale errore nella sottrazione si manifesta invece come overflow di segno, quando il risultato vero non rientra nell'intervallo rappresentabile −128…127.

Nel calcolatore qui sopra, prova 11001000 − 00110010 (200 − 50): il risultato vero (150) non è rappresentabile in 8 bit con segno, perché supera 127. Il tool segnala l'overflow di segno, distinto dal riporto (che in quel caso viene comunque scartato).