Che cos’è un codice di Hamming?

Un codice di Hamming è un metodo per rilevare e correggere gli errori in una trasmissione binaria. Lo fa attraverso l’inclusione di ulteriori cifre binarie nella sequenza utilizzata per il controllo, nonché un algoritmo che fornisce la logica di rilevamento. Tale codice è in grado di trovare due errori in qualsiasi sequenza di bit e riparare un bit che potrebbe essere errato. Il codice di Hamming più comunemente indicato è noto come Hamming(7,4), dove il quattro indica il numero originale di bit iniziali e il sette rappresenta il numero totale di bit nella sequenza dopo che sono stati inclusi i bit di controllo aggiuntivi.

La tecnica prende il nome dal suo creatore, Richard Hamming, che pubblicò il metodo nel 1950. Il modo in cui funziona il codice di Hamming consiste nel prendere una stringa di bit e inserire nella sequenza ulteriori bit di controllo, denominati bit di parità. I bit di controllo vengono sempre iniettati in una posizione che è una potenza di due, quindi è possibile verificare qualsiasi numero di bit includendo bit di parità aggiuntivi. Ciò può continuare fino a quando l’ultimo bit di parità aggiunto alla sequenza si trova in una posizione che è una potenza di due minore o uguale alla posizione finale nella sequenza.

Con tutti i bit di parità in posizione, le posizioni rimanenti sono i bit di dati effettivi. Dato l’esempio a quattro bit, quindi, le posizioni dei bit uno, due e quattro sarebbero i bit di parità, mentre le posizioni tre, cinque, sei e sette sono i dati. Una volta stabilita questa sequenza, la logica del codice di Hamming entra in funzione.

In un codice di Hamming, ciascuno dei bit di parità che sono stati aggiunti alla sequenza viene utilizzato per verificare alcune delle posizioni di bit a cui sono vicini, inclusi se stessi. Il bit di parità nella posizione uno controlla ogni altra posizione di bit, che è essenzialmente ogni posizione dispari nella sequenza. Il secondo bit di parità, in posizione due, controlla le posizioni due e tre, quindi salta due posizioni, controlla altre due posizioni, ne salta altre due e così via. Se c’è un bit di parità nella posizione quattro, agisce in modo simile in quanto controlla le posizioni da quattro a sette, quindi salta quattro posizioni, ne controlla altre quattro e va avanti. Ogni bit di parità nella sequenza continua in questo modo per tutta la sequenza.

Il processo mediante il quale un codice di Hamming rileva e corregge un errore consiste nel sommare i bit nella sequenza di controllo per ogni controllo di parità, ognuno dei quali deve uscire con un numero pari. Dato l’esempio a sette bit, per il primo controllo di parità vengono sommati i bit uno, tre, cinque e sette. Se il totale è un numero pari, viene verificata la parità, ma se il totale è dispari, si verifica un errore. Poiché i controlli di parità si sovrappongono, verranno visualizzati due di questi errori. Quando vengono sommate le posizioni di due bit di parità che non riescono a fornire totali pari, si rivelerà il bit che deve essere corretto.

Nell’esempio del codice di Hamming a sette bit, si consideri che il bit nella posizione numero cinque non è corretto. La somma dei bit nelle posizioni uno, tre, cinque e sette risulterà dispari, così come la somma dei bit nelle posizioni da quattro a sette. Ciò indica che i controlli di parità per i bit di controllo nelle posizioni uno e quattro non sono riusciti. Quando uno e quattro vengono sommati, il totale è cinque, che è la posizione del bit errato nella trasmissione che deve essere corretto.