1150 | hamming | Hamming Code | ||||||||
| ||||||||||
Abzugebende Files: hamming.txt, hamming.java |
Der Algorithmus funktioniert folgendermaßen:
Die Bits des Codewortes werden mit 1 beginnend von links nach rechts durchnummeriert.
Jene Bits, die Potenzen von 2 sind, also 1, 2, 4, 8 usw. sind
Prüfbits. Die restlichen (3, 5, 6, 7, 9,... usw.) sind mit den Information
tragenden Datenbits gefüllt.
Jedes Prüfbit ist ein Parity-Bit für eine bestimmte Menge von Bits. Ein Bit
kann in Berechnungen verschiedener Prüfbits involviert sein. Um festzustellen,
zu welchen Prüfbits ein bestimmtes Bit, nämlich das mit der Nummer k, einen
Beitrag liefert, genügt es, k als Summe von Zweierpotenzen zu schreiben. Zum
Beispiel 11 = 8 + 2 + 1 oder 29 = 16 + 8 + 4 + 1. (Mit anderen Worten: Die
Zahl k wird in das Binärsystem umgerechnet).
Ein Bit liefert zu allen jenen Prüfbits einen Beitrag, deren Nummer in dieser Darstellung vorkommt. So wird etwa Bit 11 in den Berechnungen der Prüfbits 1, 2 und 8 berücksichtigt. Um nun ein Prüfbit zu ermitteln, werden alle Datenbits, die bei diesem Prüfbit zu berücksichtigen sind, mittels Exklusiv-Oder verknüpft.
Beispiel: Hammingcode der aus 4 Datenbits und aus 3 Prüfbits besteht:
Gleichung für das Prüfbit 1: P1 = x3 + x5 + x7
Gleichung für das Prüfbit 2: P2 = x3 + x6 + x7
Gleichung für das Prüfbit 4: P4 = x5 + x6 + x7
0+0=0
1+0=1
0+1=1
1+1=0
Anmerkung: Für das Exklusiv-Oder wird normalerweise ein Pluszeichen, das in einem Kreis liegt, geschrieben. Hier wurde das Zeichen + verwendet.
Die einzelnen Prüfbits sind durch Leerzeichen zu trennen, am Ende des Datensatzes ist ein Zeilenvorschub auszugeben.
Eingabedaten |
011011
100010 |
Ausgabedaten |
0 0 0 0
0 1 0 1 |
Bemerkung: Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:
java hamming < hamming.i1 > hamming.out1
Das erzeugte File hamming.out1 können Sie dann mit dem mitgelieferten Outputfile hamming.o1 vergleichen.