Hamming-koodilaskuri

Laske binäärisanalle Hamming-koodin pariteettibitit ja muodosta valmis virheenkorjaava koodisana, joka korjaa yhden bittivirheen.

Databitit

Syötä koodattava binäärisana, joka sisältää vain merkkejä 0 ja 1 (esimerkiksi 1011). Laskuri lisää pariteettibitit ja muodostaa koko koodisanan.

Esimerkit:

Tulokset

  • Tulosta
  • Linkitä
  • Hamming-koodilaskuri

    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.

    Mikä on Hamming-koodi?

    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ä.

    Pariteettibittien määrä

    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.

    Pariteettibittien paikat

    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.

    Pariteettibitin arvon laskeminen

    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:

    Vaiheittainen esimerkki: (7,4)-koodi

    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.

    Miten virhe korjataan?

    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.

    Virheensieto ja SECDED

    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-koodi käytännössä

    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.

    Usein kysytyt kysymykset

    Mikä on Hamming-koodi?
    Hamming-koodi on virheenkorjauskoodi, joka lisää dataan pariteettibittejä niin, että yksi bittivirhe voidaan paikantaa ja korjata. Se havaitsee myös kaksi virhettä, jos mukaan lisätään yksi yleinen pariteettibitti. Koodin kehitti Richard Hamming 1950-luvulla.
    Kuinka monta pariteettibittiä tarvitaan?
    Pariteettibittien määrä r on pienin luku, jolle pätee 2^r ≥ m + r + 1, kun databittejä on m kappaletta. Esimerkiksi 4 databitille riittää 3 pariteettibittiä, koska 2³ = 8 ≥ 4 + 3 + 1 = 8. Tällöin muodostuu tunnettu (7,4)-Hamming-koodi.
    Mihin kohtiin pariteettibitit sijoitetaan?
    Pariteettibitit sijoitetaan koodisanassa niihin kohtiin, joiden järjestysnumero on kahden potenssi: 1, 2, 4, 8, 16 ja niin edelleen. Muut kohdat täytetään databiteillä järjestyksessä. Tämä sijoittelu tekee virheen paikantamisesta suoraviivaista.
    Miten pariteettibitin arvo lasketaan?
    Kukin pariteettibitti tarkistaa tietyt kohdat koodisanasta ja saa arvon, joka tekee näiden kohtien ykkösbittien määrästä parillisen (parillinen pariteetti). Pariteettibitti kohdassa 1 tarkistaa kohdat 1, 3, 5, 7…, kohdassa 2 kohdat 2, 3, 6, 7… ja niin edelleen.
    Kuinka monta virhettä Hamming-koodi korjaa?
    Perusmuotoinen Hamming-koodi korjaa yhden bittivirheen koodisanaa kohden ja havaitsee kaksi virhettä, jos käytetään lisättyä pariteettibittiä (SECDED). Vastaanottaja laskee pariteettibitit uudelleen ja saa virheen sijainnin niin sanottuna syndroomana.
    Oliko tästä laskurista apua?

    Linkitä tämä laskuri

    Kopioi koodi ja liitä se omalle sivustollesi.

    Suositut laskurit