Databitit
Syötä koodattava binäärisana, joka sisältää vain merkkejä 0 ja 1 (esimerkiksi 1011). Laskuri lisää pariteettibitit ja muodostaa koko koodisanan.
Laske binäärisanalle Hamming-koodin pariteettibitit ja muodosta valmis virheenkorjaava koodisana, joka korjaa yhden bittivirheen.
Syötä koodattava binäärisana, joka sisältää vain merkkejä 0 ja 1 (esimerkiksi 1011). Laskuri lisää pariteettibitit ja muodostaa koko koodisanan.
Tämä laskuri muodostaa binäärisanalle Hamming-virheenkorjauskoodin. Syötä databitit, niin laskuri laskee tarvittavat pariteettibitit, näyttää koodisanan pituuden, kunkin pariteettibitin kattamat kohdat ja valmiin koodisanan, joka korjaa yhden bittivirheen.
Hamming-koodi on virheenkorjauskoodi, joka lisää dataan ylimääräisiä pariteettibittejä. Niiden avulla vastaanottaja voi havaita ja korjata yhden bittivirheen, joka on syntynyt siirron tai tallennuksen aikana. Koodi on nimetty Richard Hammingin mukaan, ja se on yksi koodausteorian tunnetuimmista esimerkeistä.
Databittien määrästä m riippuen tarvittava pariteettibittien määrä r on pienin luku, joka toteuttaa epäyhtälön:
2^r ≥ m + r + 1
Ehdon idea on, että r pariteettibitillä on saatava 2^r erilaista tilaa: yksi jokaiselle mahdolliselle virhepaikalle (m + r kappaletta) ja yksi tilanteelle, jossa virhettä ei ole.
Pariteettibitit sijoitetaan niihin koodisanan kohtiin, joiden järjestysnumero on kahden potenssi:
kohdat 1, 2, 4, 8, 16, …
Loput kohdat täytetään databiteillä vasemmalta oikealle. Tämä sijoittelu tekee virheen paikantamisesta yksinkertaista, koska virheellisen kohdan numero saadaan suoraan pariteettitarkistusten tuloksista.
Jokainen pariteettibitti tarkistaa tietyt kohdat ja saa arvon, joka tekee näiden kohtien ykkösbittien määrästä parillisen (parillinen pariteetti). Kohdan numeron binääriesitys kertoo, mitkä pariteettibitit sitä valvovat:
Koodataan databitit 1011 (m = 4).
Pariteettibittien määrä: 2³ = 8 ≥ 4 + 3 + 1 = 8, joten r = 3 ja koodisanan pituus on 7.
Sijoitellaan bitit kohtiin 1–7 (p = pariteetti, d = data):
kohta: 1 2 3 4 5 6 7
sisältö: p₁ p₂ d₁ p₄ d₂ d₃ d₄ = p₁ p₂ 1 p₄ 0 1 1
Lasketaan pariteetit parillisella pariteetilla:
p₁ (kohdat 3,5,7) = 1 ⊕ 0 ⊕ 1 = 0
p₂ (kohdat 3,6,7) = 1 ⊕ 1 ⊕ 1 = 1
p₄ (kohdat 5,6,7) = 0 ⊕ 1 ⊕ 1 = 0
Valmis koodisana on siis 0110011.
Vastaanottaja laskee pariteettibitit uudelleen. Jos kaikki täsmäävät, virhettä ei ole. Jos jokin ei täsmää, virheellisen kohdan numero saadaan laskemalla yhteen niiden pariteettibittien paikat, jotka eivät täsmää. Tätä lukua kutsutaan syndroomaksi, ja se osoittaa suoraan käännettävän bitin.
Perusmuotoinen Hamming-koodi korjaa yhden bittivirheen koodisanaa kohden. Kun mukaan lisätään yksi yleinen pariteettibitti koko sanalle, saadaan SECDED-koodi (single error correction, double error detection), joka korjaa yhden virheen ja havaitsee kaksi.
Hamming-koodeja ja niiden laajennuksia käytetään muun muassa tietokoneiden keskusmuistissa (ECC-muisti), tallennusjärjestelmissä ja tietoliikenteessä. Ne ovat hyvä esimerkki siitä, miten vähäisellä määrällä lisäbittejä saadaan merkittävä parannus tiedon luotettavuuteen.