Hai mai mandato un messaggio e ti sei chiesto: «E se qualcosa si perde durante la trasmissione?» Questa demo ti mostra come il computer trova e corregge gli errori automaticamente.
Quando un computer manda dati a un altro (su un cavo, via WiFi, su internet), i dati viaggiano come una sequenza di 0 e 1 — i bit. Ma i fili non sono perfetti: interferenze, rumore elettrico o un raggio cosmico possono capovolgere un bit (da 0 a 1 o viceversa) senza che nessuno se ne accorga.
Richard Hamming (1950) ha inventato un modo brillante: prima di trasmettere i dati, aggiungi qualche bit extra che "riassumono" gli altri attraverso l'operazione XOR. Se un bit si rompe durante il viaggio, questi bit guardiani ti dicono esattamente quale.
XOR restituisce 1 se i due bit sono diversi, 0 se sono uguali:
Trucco utile: se fai XOR di tanti bit, il risultato è 0 se il numero di 1 è pari, 1 se è dispari. Questo si chiama bit di parità.
Noi usiamo Hamming(12,8): partiamo da 8 bit di dati e aggiungiamo 4 bit guardiani, per un totale di 12 bit da trasmettere. I bit guardiani occupano le posizioni 1, 2, 4, 8 (potenze di 2). I bit di dati occupano le posizioni 3, 5, 6, 7, 9, 10, 11, 12.
Ogni Pn controlla tutte le posizioni il cui numero ha il bit n acceso in binario:
Il ricevitore ricalcola i 4 bit di parità. Se tutti danno 0 → nessun errore. Se uno o più danno 1 → c'è un errore. I 4 risultati formano un numero binario a 4 cifre: quel numero è la posizione del bit sbagliato! Esempio: S8=0, S4=1, S2=1, S1=0 → 0110 in binario = 6 → il bit sbagliato è alla posizione 6. Basta invertirlo e il messaggio è riparato. 🎉