Vad är en Hamming-kod?

En Hamming-kod är en metod för att upptäcka och korrigera fel i en binär överföring. Det gör det genom att inkludera ytterligare binära siffror i sekvensen som används för kontroll, såväl som en algoritm som tillhandahåller detekteringslogiken. En sådan kod kan hitta två fel i vilken bitsekvens som helst och reparera en bit som kan vara felaktig. Den mest refererade Hamming-koden är känd som Hamming(7,4), där fyran anger det ursprungliga antalet startbitar och de sju representerar det totala antalet bitar i sekvensen efter att de ytterligare kontrollbitarna har inkluderats.

Tekniken har fått sitt namn från sin skapare, Richard Hamming, som publicerade metoden 1950. Hur Hamming-koden fungerar är genom att ta en sträng av bitar och infoga ytterligare kontrollbitar, kallade paritetsbitar, i sekvensen. Kontrollbitarna injiceras alltid i en position som är en potens av två, så vilket antal bitar som helst kan verifieras genom att inkludera ytterligare paritetsbitar. Detta kan fortsätta tills den sista paritetsbiten som lagts till i sekvensen är i en position som är en potens av två som är mindre än eller lika med den slutliga positionen i sekvensen.

Med alla paritetsbitar på plats är de återstående positionerna de faktiska databitarna. Givet fyrabitarsexemplet, då skulle bitpositionerna ett, två och fyra vara paritetsbitarna, medan positionerna tre, fem, sex och sju är data. När denna sekvens väl har etablerats börjar Hamming-kodens logik att fungera.

I en Hamming-kod används var och en av paritetsbitarna som har lagts till i sekvensen för att kontrollera några av bitpositionerna de är nära, inklusive sig själva. Paritetsbiten i position ett kontrollerar varannan bitposition, vilket i huvudsak är varje udda position i sekvensen. Den andra paritetsbiten, i position två, kontrollerar position två och tre, hoppar sedan över två positioner, kontrollerar två positioner till, hoppar över två till, och så vidare. Om det finns en paritetsbit i position fyra, fungerar den på samma sätt genom att den kontrollerar positionerna fyra till sju, sedan hoppar över fyra positioner, kontrollerar fyra till och framåt. Varje paritetsbit i sekvensen fortsätter på detta sätt genom hela sekvensen.

Processen genom vilken en Hamming-kod upptäcker och korrigerar ett fel är genom att lägga ihop bitarna i kontrollsekvensen för varje paritetskontroll, som var och en måste komma ut med ett jämnt tal. Med tanke på sjubitarsexemplet, för den första paritetskontrollen, adderas bitarna ett, tre, fem och sju. Om summan är ett jämnt tal, checkar pariteten ut, men om summan är udda finns det ett fel. Eftersom paritetskontrollerna överlappar varandra kommer två sådana fel att dyka upp. När de två-paritetsbitpositioner som inte lyckas komma med jämna totaler adderas, kommer det att avslöja den bit som behöver korrigeras.

I sju-bitars Hamming-kodexemplet, tänk på att biten i position nummer fem är felaktig. Summan av bitarna i positionerna ett, tre, fem och sju kommer ut som ett udda tal, liksom summan av bitarna i positionerna fyra till sju. Detta indikerar att paritetskontroller för kontrollbitarna i positionerna ett och fyra misslyckades. När en och fyra läggs ihop blir summan fem, vilket är positionen för den felaktiga biten i överföringen som behöver korrigeras.