Wie eine Hamming-Code-Software berechnet

August 24

Richard Hamming entwickelt des Hamming-Codes bei den Bell Labs in den 1940er Jahren für den Einsatz in der Telekommunikation, aber anschließend fand es Anwendungen in der Informatik. Der Hamming ist der bekannteste und am häufigsten verwendeten Codes "Fehler korrigieren". Diese Codes hinzufügen ein paar Bits in eine binäre Zeichenfolge. Wenn die Zeichenfolge übertragen-- und möglicherweise im Übergang beschädigt--erlauben der zusätzlichen Bits den Empfänger zu sagen, ob die übertragene Zeichenfolge beschädigt wurde. Der Hamming-Code weist auch welche Bit verändert wurde. Die Chance, dass mehr als ein Bit geändert wurde gilt in der Regel zu klein, zu kümmern.

Anweisungen

1 Ein Array, in dem Sie die Prüfbits für die Datenbits zu der Zeichenfolge, die übermittelt werden hinzufügen werden, eingerichtet. Um den Abstand richtig ist, ist es hilfreich, die kleine Funktion definieren, die zeigt gehen wo die Prüfbits. Die "Place_bit"-Funktion ist wie folgt definiert: "Int Place_bit (Int k) {Int i; für (ich = 1; ich GT k; i = 2 * ich) {Wenn (ich == k) return 1;} [[Return Sie 0;}" Diese Funktion liefert 1, wenn die Eingabe eine Potenz von 2 und ansonsten 0 ist. Mit dieser Funktion kann man die Datenbits in einem Array mit der Funktion "Place_data", die wie folgt definiert ist: "Int Place_data (String Data_string) {Int j, k; für (j = k = 0;data_string(k)! = ' \0';j++,k++) Wenn place_bit(k) dann j++ sonst data_ray(j) = data_string(k)} Dies setzt Datenbits in Data_ray, Räume zu verlassen, denn das Kontrollkästchen Sie Bit für die Korrektur der Fehler hinzufügen wird.

2 Berechnen Sie die Prüfbits und fügen sie Sie der belegte. Die Funktion dieses tut ist "Add_check_bits" und es sieht folgendermaßen aus: "Int add_check_bits() {Int m, n, p; für (m = 0; LT Data_ray_max m; m ++) Wenn place_bit(m) dann für (n = 0; n LT m; n ++) p = p XOR Datenray(m+n); Daten(m + n) = p}}. " Dies berechnet das Kontrollkästchen Kompatibilitätsbits und setzt die Bits an der richtigen Stelle.

3 Übertragen Sie die Zeichenfolge.

4 Neu die Prüfbits berechnet, wenn die Daten empfangen werden. Wenn die Prüfbits korrekt sind, wurden keine Bits bei der Übertragung geändert. Wenn nur ein Kontrollkästchen Bit falsch ist, wurde während der Übertragung, dass etwas korrigiert. Wenn mehr als eines der Kontrollkästchen Bits falsch ist, fügen Sie die Positionen der falsche Bits, das Bit zu finden, das beschädigt wurde. Der Code, den Fehler zu finden ist: "Int find_error() {Int k, m, n, p; für (k = 1; k LT Data_ray_max; k * = 2) {für (m = 0; LT Data_ray_max m; m ++) Wenn place_bit(m) dann für (n = 0; n LT m; n ++) p = p XOR Datenray(m+n); Daten(m + n) = p} wenn (p! = data_ray(m+n) return 1;} return 0;}. "

Tipps & Warnungen

  • Wenn Stellung k in Data_ray gefunden wurde, fehlerhaft ist, ist die Möglichkeit, es zu beheben mit der Fix_ray-Funktion, die wie folgt definiert ist: "Int Fix_ray (Int k){data_ray(k) = data_ray(k) XOR 1;}."
  • Der Hamming-Code kann erweitert werden, um für mehr als ein Bit der Korruption zu überprüfen, aber wenn Sie zu viele Bits überprüfen, können die Prüfbits Datenbits überwiegen. Wenn der Kanal dieser laut ist, könnte es besser, einfach beschädigte Signale übertragen sein.