edubun
Italiano

Come sommano i numeri le porte

Una porta XOR e una porta AND bastano per sommare due bit. Collega in catena quattro sommatori completi e puoi sommare due numeri qualsiasi da 0 a 15.

Prova prima di andare avanti. Somma 0101 e 0011 sulla carta, in binario, come sommi in decimale, e scrivi ogni riporto sopra la colonna successiva. Ti servono solo tre fatti: 0 + 0 = 0, 0 + 1 = 1 e 1 + 1 = 10, cioè scrivi 0 e riporti 1. Con un riporto in arrivo, 1 + 1 + 1 = 11, quindi scrivi 1 e riporti 1. Il calcolo è nel paragrafo successivo, quindi coprilo prima.

Ecco il calcolo. Colonna più a destra: 1 + 1 = 10, scrivi 0, riporti 1. Poi: 0 + 1 più il riporto fa di nuovo 10, scrivi 0, riporti 1. Poi: 1 + 0 più il riporto, 10, scrivi 0, riporti 1. Colonna più a sinistra: 0 + 0 più il riporto fa 1. Il risultato è 1000, cioè 8, e 5 + 3 = 8. Tre colonne su quattro hanno avuto un riporto. Una calcolatrice, un videogioco e un foglio di calcolo finiscono tutti per fare esattamente questo. Dentro un processore ogni colonna è gestita da poche porte, e la scena parte dalla stessa somma. Poi prova 9 + 8. Serve un quinto bit.

Caricamento

Trascina per ruotare. Scorri o avvicina le dita per lo zoom.

A = 0101 (5) e B = 0011 (3). I riporti si propagano da destra attraverso tre posizioni e la somma è 1000 (8). Tocca un bit qualsiasi di A o di B, oppure scegli un numero dai menu. Prova 9 + 8: il risultato 17 richiede un quinto bit, il riporto in uscita a sinistra.

Alla colonna più a destra bastano due porte

Guarda da sola la colonna più a destra. Il bit del risultato, la somma, vale 1 quando esattamente un ingresso è 1. È la regola di XOR. Il riporto vale 1 solo quando entrambi gli ingressi sono 1. È la regola di AND. Quindi una porta XOR e una porta AND affiancate, alimentate dagli stessi due ingressi, sommano due bit. Questo piccolo circuito è un semisommatore. È solo «semi» perché non ha modo di ricevere un riporto dalla colonna alla sua destra.

Nelle altre colonne si sommano tre bit

In ogni altra colonna si incontrano tre bit: uno per ciascun numero e il riporto da destra. Un sommatore completo li riceve tutti e tre. La sua somma è A XOR B XOR riporto in ingresso, che vale 1 quando un numero dispari dei tre bit è 1. Il suo riporto in uscita vale 1 quando almeno due di essi sono 1. Due semisommatori e una porta OR formano un sommatore completo. Metti in fila quattro sommatori completi, collega ogni riporto in uscita al riporto in ingresso del sommatore alla sua sinistra, e hai un sommatore a 4 bit. Ogni riporto deve propagarsi da destra a sinistra prima che l'ultima colonna si stabilizzi, quindi questo schema si chiama sommatore a propagazione del riporto (ripple-carry). I processori reali sommano numeri a 64 bit con circuiti più astuti che calcolano i riporti in anticipo, ma la regola in ogni colonna è la stessa.

ABRiporto in ingressoSommaRiporto in uscita
00000
01010
11001
10101
11111

Che cosa succede quando il risultato è troppo grande

Quattro bit contengono da 0 a 15. Somma 9 e 8: il risultato vero, 17, in binario è 10001, cioè cinque bit. Un registro che tiene solo quattro bit memorizza 0001, cioè 1, e il riporto avanzato a sinistra è il segnale d'allarme. Questo è l'overflow. 15 + 1 in quattro bit lascia 0000. Quando succede, i processori attivano un flag perché i programmi possano accorgersene. La sottrazione riusa lo stesso sommatore. Per calcolare A − B, il processore inverte ogni bit di B e aggiunge 1, ottenendo il complemento a due di B, poi lo somma ad A e scarta il riporto in più. Per 5 − 3 in quattro bit: 3 è 0011, invertito è 1100, più 1 è 1101. Poi 0101 + 1101 = 10010, e tenendo quattro bit resta 0010, cioè 2.

Moltiplicare è spostare e sommare

La moltiplicazione nasce dagli stessi pezzi. In binario, moltiplicare per 2 sposta ogni bit di una posizione a sinistra, proprio come moltiplicare per 10 aggiunge uno zero in decimale: 0011 (3) diventa 0110 (6). Per 5 × 3, nota che 3 è 2 + 1. Quindi 5 × 3 = 5 × 2 + 5 × 1 = 1010 + 0101 = 1111, cioè 15. Un circuito moltiplicatore sposta e somma in questo modo, prendendo uno alla volta i bit a 1 del secondo numero.

Errori comuni
  • «1 + 1 = 2, quindi il risultato sta in un bit.» Un bit contiene solo 0 o 1. 1 + 1 = 10: il bit della somma è 0 e si riporta un 1. Se scarti il riporto il risultato diventa 0, che è sbagliato.
  • «Un semisommatore può sommare numeri di qualsiasi lunghezza.» Un semisommatore non ha un ingresso per il riporto da destra, quindi funziona solo nella colonna più a destra. Ogni altra colonna ha bisogno di un sommatore completo con tre ingressi. Un sommatore a 4 bit potrebbe usare un semisommatore e tre sommatori completi.
  • «L'overflow fa fermare il computer con un errore.» Il sommatore tiene semplicemente i bit per cui ha posto. 9 + 8 in quattro bit dà 0001, un risultato sbagliato che sembra del tutto normale. Il processore attiva un flag, e il programma deve controllarlo.
  • «La sottrazione ha bisogno di un suo circuito sottrattore.» Inverti i bit di B, aggiungi 1 e somma il risultato ad A con lo stesso sommatore. 5 − 3: 0101 + 1101 = 10010, e i quattro bit più bassi, 0010, valgono 2.
Nota per l'insegnanteFai fare la somma 0101 + 0011 prima di pronunciare la parola «sommatore», e fai scrivere agli studenti i riporti sopra le colonne. Gran parte delle tabelle del semisommatore e del sommatore completo si legge poi direttamente dal loro calcolo. Il passaggio dal semisommatore al sommatore completo è il punto in cui si perdono. Indica la seconda colonna della loro somma e chiedi quanti bit hanno sommato lì: tre. Il riporto che si propaga è facile da mettere in scena con quattro persone in fila che si passano verso sinistra un cartoncino del riporto. Il complemento a due richiede un esempio lento fatto a mano; la scena non sa sottrarre, quindi fai 5 − 3 alla lavagna e controlla che 0010 sia 2.
  1. Quanto fa 1 + 1 in binario?
  2. In un semisommatore, quale porta dà il bit della somma?
    • XOR
    • AND
    • OR
    • NOT
  3. In un semisommatore, quale porta dà il riporto?
    • AND
    • XOR
    • OR
    • NAND
  4. Quanti bit in ingresso riceve un sommatore completo?
  5. Un sommatore completo riceve A = 1, B = 1, riporto in ingresso = 1. Qual è il suo bit di somma?
  6. Somma 0110 e 0011. Scrivi quattro bit.
  7. Un registro a 4 bit somma 9 + 8 e tiene solo quattro bit. Che numero contiene?
  8. Qual è il complemento a due a 4 bit di 0011?
  9. Quanti sommatori completi servono a un sommatore a propagazione del riporto per numeri a 8 bit?
  10. Qual è la somma più grande che possono dare due numeri a 4 bit?
Punti chiave
  • Semisommatore: somma = A XOR B, riporto = A AND B.
  • Sommatore completo: tre ingressi; la somma vale 1 per un numero dispari di 1, il riporto per due o più.
  • Sommatori completi in catena formano un sommatore a propagazione del riporto; i riporti vanno da destra a sinistra.
  • Overflow: il risultato richiede più bit di quelli del registro. La sottrazione somma il complemento a due.
Fonti di questo corso (9)
  • (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
  • Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
  • IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
  • IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
  • Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
  • Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
  • Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
  • abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
  • John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).

Consultato il: 2026-10-17