Hamming-Code
Englisch: Hamming code
Eine Familie linearer fehlerkorrigierender Codes, die den 1950 von Richard Hamming erfundenen Hamming(7,4)-Code verallgemeinert.
Hamming-Code: Fehler sind in den Daten selbst eingebaut
Ein Hamming-Code ist eine Methode, Daten mit zusätzlichen Bits zu kodieren, sodass Einzelbit-Fehler automatisch erkannt und korrigiert werden können. Die häufigste praktische Variante, Hamming(7,4), nimmt 4 Bits echte Daten und addiert 3 Paritätsbits, was ein 7-Bit-Codewort ergibt. Wenn dieser 7-Bit-Block durch elektronische Störungen oder Speicher wandert, kann jeder Bitfehler vom Empfänger präzise lokalisiert und auf seinen ursprünglichen Zustand zurückgesetzt werden, ohne eine Neuübertragung anzufordern.
Die Eleganz von Hamming-Codes liegt in ihrer systematischen Struktur. Jedes Paritätsbit deckt eine bestimmte Teilmenge der Datenbits ab, positioniert bei Potenzen von zwei (Positionen 1, 2, 4 in einem 7-Bit-Wort). Durch Überprüfung, welche Paritätsbits fehlschlagen, berechnet der Decoder eine Binäradresse, die direkt auf das fehlerhafte Bit zeigt. Das ist der Grund, warum Hamming(7,4) jeden Fehler in einem 7-Bit-Block korrigieren kann: Die drei Paritätsbits erzeugen 2^3 = 8 mögliche Syndromwerte, genug um jede der sieben Positionen plus einen Fehlerfrei-Zustand zu kennzeichnen.
Erweiterte Hamming-Codes addieren ein zusätzliches Paritätsbit über das gesamte Codewort und ermöglichen Erkennung (nicht aber Korrektur) von Zweibit-Fehlern. Hamming(8,4) ist die erweiterte Variante von Hamming(7,4). Größere Varianten wie Hamming(15,11) und Hamming(31,26) packen mehr Datenbits mit derselben Korrekturmöglichkeit, was die Effizienz verbessert; sie folgen dem Muster, dass jeder Code Hamming(2^m - 1, 2^m - m - 1) Einzelfehler mit m Paritätsbits korrigieren kann.
Hamming-Codes haben praktische Anwendung in frühen Computerspeichern (Einzelbit-Fehlerkorrektur in DRAM war in älteren Systemen üblich), in Telekommunikationsgeräten und in eingebetteten Systemen, wo der Rechenaufwand zum Dekodieren minimal ist. Sie versagen bei stark gestörten Kanälen, wo Multibit-Fehler überwiegen, und werden durch robustere Familien wie Reed-Solomon- oder LDPC-Codes abgelöst. Für Speicher und kurze Übertragungsstrecken mit niedriger Fehlerquote bleiben Hamming-Codes allerdings effizient, weil ihr Overhead bescheiden ist und die Dekodierung schnell läuft.
Der Kompromiss ist starr: Korrekturfähigkeit ist an die Codelänge gebunden. Man kann nicht einfach mehr Paritätsbits zu einem Hamming(7,4) hinzufügen, um Doppelfehler zu korrigieren; man muss zu einer anderen Familie wechseln. Das schränkt die Flexibilität ein, sich an verändernde Kanalbedingungen anzupassen. Moderne Anwendungen bevorzugen oft Turbo-Codes oder Faltungscodes wegen ihrer Anpassbarkeit, aber Hamming-Codes bleiben das pädagogische Referenzwerk für Fehlerkorrektur und treten weiterhin in Legacy-Systemen und sicherheitskritischen eingebetteten Designs auf, wo Einfachheit und Vorhersagbarkeit zählen.