Der Hamming-Code ist ein fehlerkorrigierender Code: er fügt deinen Daten ein paar Paritätsbits hinzu, damit, wenn ein Bit bei der Übertragung oder Speicherung beschädigt wird, es automatisch erkannt und korrigiert werden kann, ohne etwas erneut zu senden. Er wird in ECC-Speicher, Kommunikation und Speicherung eingesetzt. Ein klassischer Hamming-Code korrigiert 1 fehlerhaftes Bit pro Wort; mit der SECDED-Erweiterung erkennt er zusätzlich 2. Die gesamte Berechnung erfolgt in deinem Browser.
1. Kodieren — gib deine Datenbits ein und erhalte das Codewort mit bereits eingefügter Parität; klicke auf ein Bit, um einen Fehler zu simulieren.
2. Erkennen und korrigieren — füge ein Codewort ein (mit oder ohne Fehler) und du siehst das Syndrom, das fehlerhafte Bit und das korrigierte Wort.
3. Simulator — sendet dasselbe Wort tausende Male über einen verrauschten Kanal und misst, wie viele korrigiert, erkannt oder fehlerhaft bleiben.
Der SECDED-Schalter und das Menü Beispiele sind in allen drei Tabs verfügbar. Alles wird beim Tippen automatisch neu berechnet (kein Button nötig).
Bei Kodieren gibt es zwei Modi:
• Bits — nur die Zeichen 0 und 1 (die Daten, ohne Paritätsbits: die werden automatisch hinzugefügt).
• Text — ASCII/Latin-1-Text; jedes Zeichen wird in 8 Bits umgewandelt (Zeichen außerhalb dieses Bereichs werden nicht unterstützt).
Bei Erkennen und korrigieren fügst du das vollständige Codewort ein (Daten + Parität), ebenfalls in 0 und 1. Jedes andere Zeichen markiert das Feld rot. Es gibt keine Längenbegrenzung: je mehr Datenbits, desto effizienter der Code (weniger Parität pro Bit).
Die Paritätsbits werden an den Zweierpotenz-Positionen (1, 2, 4, 8, 16…) platziert, und die Datenbits füllen den Rest auf. Für k Datenbits werden gerade so viele r Paritätsbits gewählt, dass 2^r ≥ k + r + 1 gilt (so ergeben 4 Datenbits → 3 Paritätsbits = Hamming(7,4); 8 Datenbits → 4 Paritätsbits).
Jedes Paritätsbit Pi deckt die Positionen ab, deren Index dieses Bit auf 1 gesetzt hat: P1 (1, 3, 5, 7…), P2 (2, 3, 6, 7…), P4 (4, 5, 6, 7…). Sein Wert wird (per XOR) so festgelegt, dass die Anzahl der abgedeckten Einsen gerade ist. Die Tabelle Abdeckung zeigt, welche Positionen jedes davon überwacht.
Beim Empfang des Wortes wird jede Parität mit einem XOR erneut geprüft. Das Syndrom ist die Summe der Paritätspositionen, die fehlschlagen, und entspricht durch ihre Anordnung genau der Position des fehlerhaften Bits: Syndrom 0 = kein Fehler; Syndrom 5 (= 101 binär) = Bit 5 ist fehlerhaft und wird zur Korrektur invertiert.
Achtung: Hamming geht immer von nur einem Fehler aus. Sind 2 Bits fehlerhaft, zeigt das Syndrom auf ein unschuldiges drittes Bit und „korrigiert“ es falsch → stiller Fehler (falsche Daten ohne Warnung). Dafür gibt es SECDED.
Beim Aktivieren von SECDED wird ein globales Paritätsbit (P0) hinzugefügt, das das ganze Wort abdeckt und die Mindestdistanz von 3 auf 4 erhöht. Damit korrigiert der Code 1 Fehler und erkennt 2 (kann Doppelfehler aber nicht korrigieren). Das nutzt der ECC-Speicher.
Die Logik kombiniert das Syndrom mit P0: Syndrom 0 und P0 korrekt = kein Fehler; Syndrom ≠ 0 und P0 falsch = 1 korrigierbarer Fehler; Syndrom ≠ 0, aber P0 korrekt = doppelter Fehler erkannt; nur P0 falsch = P0 selbst wurde beschädigt.
Klick nach dem Kodieren auf ein beliebiges Bit des Worts, um es zu "beschädigen", und beobachte sofort, wie das Syndrom das markierte Bit findet und korrigiert. Wenn du 2 oder mehr Bits änderst, siehst du den stillen Fehler (oder, mit SECDED, die Erkennung des Doppelfehlers). Nutze Wort wiederherstellen, um zum Original zurückzukehren, oder An Erkennen und korrigieren senden, um es im anderen Reiter zu analysieren.