Was ist Hamming-Code?

Der bekannteste Fehlerkorrekturcode, der 1-Bit-Fehler korrigiert. Mit r Prüfbits ist ein Codewort 2^r − 1 Bit lang, von denen 2^r − 1 − r Bit Daten tragen. Der Hamming-Code (7, 4) mit r = 3 ergänzt 4 Datenbits um 3 Prüfbits. Jedes Prüfbit ist die Parität einer überlappenden Gruppe von Bits, und das Ergebnis der beim Empfänger wiederholten Prüfungen (das Syndrom) gibt die Position des falschen Bits als Binärzahl an. Sein minimaler Hamming-Abstand ist 3, und SECDED, das 1 Bit Gesamtparität hinzufügt, erkennt auch 2-Bit-Fehler. Er wird zum Beispiel für ECC in Serverspeichern verwendet.

Japanische Bezeichnung: ハミング符号

„Hamming-Code“ kommt in 5 Übungsfragen aus 2 Themen vor, z. B. Grundlagen der Informationstheorie und Kodierung, Logikschaltungen.

Fachgebiet: Grundlagen der Informationstheorie und Kodierung

Funktionsweise des (7, 4)-Codes

Die Bitpositionen werden von 1 bis 7 nummeriert, und die Positionen 1, 2 und 4, die Zweierpotenzen sind, sind die Prüfbits. Prüfung 1 macht die Zahl der Einsen über die Positionen gerade, deren Nummer im Binärsystem an der Einerstelle eine 1 hat (1, 3, 5, 7), Prüfung 2 über die Positionen mit einer 1 an der Zweierstelle (2, 3, 6, 7) und Prüfung 4 über die Positionen mit einer 1 an der Viererstelle (4, 5, 6, 7). Nur die Prüfungen, die den Binärstellen mit einer 1 in der Nummer der falschen Position entsprechen, schlagen fehl; die Summe der Gewichte der fehlgeschlagenen Prüfungen ergibt daher die falsche Position.

Coderate und Länge

Mit r Prüfbits ist das Codewort 2^r − 1 Bit lang, und je länger der Code, etwa (7, 4), (15, 11) und (31, 26), desto höher die Coderate: 4/7 ≈ 0,57, 11/15 ≈ 0,73 und 26/31 ≈ 0,84. Dafür kann ein Codewort nur 1 Bit korrigieren, sodass ein längeres Codewort mit höherer Wahrscheinlichkeit einen Fehler von 2 oder mehr Bits enthält.

SECDED und Speicher

Fügt man einem Hamming-Code 1 Bit Parität über das gesamte Wort hinzu, steigt der minimale Hamming-Abstand auf 4, was die Korrektur von 1-Bit-Fehlern (SEC) und die Erkennung von 2-Bit-Fehlern (DED) ermöglicht. 64 Datenbits benötigen 8 Prüfbits; deshalb sind Serverspeicher 72 Bit breit. Flash-Speicher und andere Bausteine, die mehr Fehler verkraften müssen, verwenden BCH-Codes oder LDPC-Codes.

Jetzt üben: Fragen zu Hamming-Code

Welcher Wert liegt der Coderate des Hamming-Codes (7, 4) am nächsten, der 4 Datenbits um 3 Prüfbits zu einem 7-Bit-Codewort ergänzt?

  1. AEtwa 0,43
  2. BEtwa 0,57
  3. C1,75
Antwort und Erläuterung anzeigen

Antwort: B. Etwa 0,57

Die Coderate ist der Anteil k/n der Datenbits k an der Codewortlänge n. Beim Hamming-Code (7, 4) beträgt sie 4/7 ≈ 0,57; etwa 57 % der gesendeten Bits sind Daten. Je niedriger die Coderate, desto mehr Prüfbits gibt es und desto leichter lässt sich der Code robust gegen Fehler machen, desto geringer ist aber die Effizienz der Datenübertragung.

Beim Hamming-Code (7, 4) seien die 7 Bit von links als Bit 1 bis 7 nummeriert, und die Bits 1, 2 und 4 seien Prüfbits. Prüfung 1 macht die Zahl der Einsen in den Bits 1, 3, 5, 7 gerade, Prüfung 2 die in den Bits 2, 3, 6, 7 und Prüfung 4 die in den Bits 4, 5, 6, 7. Im empfangenen Wort 0110001 ist 1 Bit falsch. Welches Bit ist es?

  1. ABit 2
  2. BBit 3
  3. CBit 6
Antwort und Erläuterung anzeigen

Antwort: C. Bit 6

Im empfangenen 0110001 sind die Bits 1, 3, 5, 7 gleich 0, 1, 0, 1, die Zahl der Einsen ist gerade (Ergebnis von Prüfung 1: 0); die Bits 2, 3, 6, 7 sind 1, 1, 0, 1, ungerade (Ergebnis von Prüfung 2: 1); die Bits 4, 5, 6, 7 sind 0, 0, 0, 1, ungerade (Ergebnis von Prüfung 4: 1). Die Ergebnisse von Prüfung 4, Prüfung 2 und Prüfung 1 nebeneinander ergeben 110, als Binärzahl gelesen 6, also ist Bit 6 falsch. Invertiert man Bit 6, erfüllt 0110011 alle 3 Prüfungen.

Häufige Fragen

Was geschieht bei einem Hamming-Code, wenn ein 2-Bit-Fehler auftritt?

Bei einem Hamming-Code ohne Gesamtparität lässt ein 2-Bit-Fehler das Syndrom trotzdem auf irgendeine Position ungleich 0 zeigen; ein richtiges Bit wird invertiert, und der Fehler wächst auf 3 Bit. Um das zu verhindern, verwenden Speicher und ähnliche Bausteine SECDED mit zusätzlicher Gesamtparität und melden einen 2-Bit-Fehler als Fehler, statt ihn zu korrigieren.

Werden Hamming-Codes heute noch verwendet?

Ja. Sie lassen sich einfach und schnell berechnen und werden daher überall dort eingesetzt, wo die Latenz klein bleiben muss, etwa für ECC von Speichern und zum Schutz von Caches und Registern. Wo viele Fehler effizient korrigiert werden müssen, etwa in der Kommunikation, verwendet man leistungsfähigere Codes wie LDPC-Codes.

„Hamming-Code“ in den Erläuterungen

Fragen mit „Hamming-Code“ (5)

  1. Welcher Wert liegt der Coderate des Hamming-Codes (7, 4) am nächsten, der 4 Datenbits um 3 Prüfbits zu einem 7-Bit-Codewort ergänzt?
  2. Beim Hamming-Code (7, 4) seien die 7 Bit von links als Bit 1 bis 7 nummeriert, und die Bits 1, 2 und 4 seien Prüfbits. Prüfung 1 macht die Zahl der Einsen in den Bits 1, 3, 5, 7 gerade, Prüfung 2 die in den Bits 2, 3, 6, 7 und Prüfung 4 die in den Bits 4, 5, 6, 7. Im empfangenen Wort 0110001 ist 1 Bit falsch. Welches Bit ist es?
  3. 32 Datenbits erhalten einen SECDED-Code, der 1-Bit-Fehler korrigiert und 2-Bit-Fehler erkennt. Die Zahl r der Prüfbits eines Hamming-Codes ist der kleinste Wert mit 2^r ≥ Zahl der Datenbits + r + 1; bei SECDED kommt 1 Bit für die Parität über das gesamte Wort hinzu. Wie viele Prüfbits werden benötigt?
  4. 5 Codewörter des Hamming-Codes (7, 4) werden nebeneinandergestellt und in dieser Reihenfolge gesendet: zuerst das 1. Bit aller 5 Codewörter, dann das 2. Bit aller 5 und so weiter (Interleaving der Tiefe 5). Der Empfänger stellt die ursprüngliche Reihenfolge wieder her und korrigiert dann in jedem Codewort einen 1-Bit-Fehler. Welches ist die größte Länge eines Bündelfehlers (Fehler, die sich auf aufeinanderfolgende Bits konzentrieren), der immer korrigiert werden kann?
  5. Welchen Wert hat das Paritätsbit, wenn zu den 7-Bit-Daten 1011001 ein gerades Paritätsbit hinzugefügt wird?

Verwandte Begriffe

Paritätsbit ECC (Fehlerkorrekturcode) Binärer symmetrischer Kanal Hamming-Abstand Huffman-Kodierung Informationsentropie Informationsgehalt Kraft-Ungleichung Lauflängenkodierung Mittlere Codewortlänge

Zur Glossarübersicht