Paritätsbit bestimmen?
Hallo,
gegeben: 12-Bit Hamming Code 1110 0100 1111 kommt beim Empfänger an.
ges: Welche Stellen dieses Codes sind Parity-Bits? Wie lautet der Ursprungswert? Gehen Sie davon aus, dass nicht mehr als ein bit fehlerhaft ist und begründen Sie ihre Antwort.
Also man muss doch alle einsen addieren und wenn eine gerade Zahl rauskommt 1 als paritätsbit setzen. Wenn ungerade dann 0. Richtig? Jetzt müsste ich im Prinzip umgekehrt rechnen aber wie stelle ich das an?
1 Antwort
![](https://images.gutefrage.net/media/user/Omnivore11/1467413847632_nmmslarge__0_0_555_555_db79962e07d41275f7bd6de1d6a11bc1.jpg?v=1467413848000)
Welche Stellen dieses Codes sind Parity-Bits?
Alle Zweierpotenzen:
1110 0100 1111
Wie lautet der Ursprungswert?
1010 1111
Also 0xAF oder 175
Gehen Sie davon aus, dass nicht mehr als ein bit fehlerhaft ist und begründen Sie ihre Antwort.
Natürlich gehe ich davon aus. Hamming-Code kann schließlich nicht nur Bitfehler erkennen, sondern auch genau bestimmen. Das geht aber nur mit einem Bit, da die Hamming-Paritätsbits die Position des Fehlers anzeigen.
Also man muss doch alle einsen addieren und wenn eine gerade Zahl
rauskommt 1 als paritätsbit setzen. Wenn ungerade dann 0. Richtig?
Jain! Das kommtb darauf an, ob man sich auf gerade oder ungerade vorher einigt.
Ich mach nicht "richtig oder falsch". Wenn "gerade" gefordert ist, dann mach ich es immer so, dass bei Erzeugen oder Prüfen die Zahlenfolge für (bsp) 2^0 eine gerade Anzahl von Einsen hat. Ist sie ungerade, dann schreib ich dafür eine 1.
Jetzt müsste ich im Prinzip umgekehrt rechnen aber wie stelle ich das an?
Ganz genauso. Du nimmst deine Prüfbits für 2^0 bis 2^2. Für jedes Prüfbit zählst du die Einsen an der entsprechenden Stelle. Wenn die Anzahl ungerade ist, dann schreibstb du dir bei der Prüfung eben eine 1 auf. Merk dir einfach: Die Anzahl der 1en muss immer "gerade" sein.
Wenn kein Bitfehler entstand, dann sind auch die Anzahl der jeweiligen Einsen alle gerade. Ergo ist dein Ergebnis 000.
Wenn du aber ein Bitfehler hast (selbst in den Prüfbits) dann zeigt deine Prüfung die Stelle, an der der Fehler ist.
Ich hoffe ich konnte dir helfen!
Gruß
Omni
![](https://images.gutefrage.net/media/user/Omnivore11/1467413847632_nmmslarge__0_0_555_555_db79962e07d41275f7bd6de1d6a11bc1.jpg?v=1467413848000)
äääää....war ein Test ^^ 8 Nutzbits + 4 Paritätsbits = 12 Bit
also von 2^0 bis 2^3.
Da hatte ich wohl selbst ein Bitfehler zwischen die Synapsen ^^ Tschuldigung. 2^3 natürlich!
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Ok, und dann einfach in der Hexadezimaltabelle nachschauen, wo unser Prüfbit liegt und das mit dem Code 1110 0100 vergleichen?
![](https://images.gutefrage.net/media/user/Omnivore11/1467413847632_nmmslarge__0_0_555_555_db79962e07d41275f7bd6de1d6a11bc1.jpg?v=1467413848000)
Nö ich mach das anders.
Du berechnest nochmal alle Prüfbits gegen
Für das erste Prüfbit (2^0) zählst du alle Einsen auf der Position 1,3,5,7,9,11 (Eins-basierend)
Für das zweite Prüfbit zählst du alle Einsen auf Position auf Position 2,3,6,7,10,11
Bei 2^2: 4,5,6,7,12
Bei 2^3 8,9,10,11,12
Die Prüfbits selbst brauchst du nicht beachten. Die stecken in der Prüfung mit drin.
BSP:
1110 0100 1111
2^0: 4 .... ist schon gerade. Also brauch ich nichts "be'grad'igen"
1110 0100 1111
2^1 : 5 .... hier muss ich was begradigen. Also 1
2^2: 1110 0100 1111 : 2 .... 0 weil gerade
2^3: 1110 0100 1111 : 4 .... 0 weil gerade
es gibt also einen Fehler an Position 1*2^1 = 2
Also wird es korrigiert zu: 1010 0100 1111
Aber ACHTUNG! Das kann auch falsch sein. Denn wir haben das immer andersherum gemacht. Wir haben von rechts nach links die Prüfbits geschrieben und nicht von links nach rechts!
Und da komme ich auf was anderes:
2^0 : 1110 0100 1111 : 4 --> 0
2^1 : 1110 0100 1111 : 5 --> 1
2^2 : 1110 0100 1111 : 3 --> 1
2^3 : 1110 0100 1111 : 3 --> 1
Hier wäre ein Fehler an der Stelle 7 also.
WIE gerechnet wird (gerade oder ungerade) und WIE gelesen wird (rechts, links) das musst du mit deinem Dozenten klären. Das Prinzip ist jedenfalls immer das selbe.
Ich hoffe ich konnte dir helfen
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Vielen Dank! Das hat mir sehr geholfen :-)
![](https://images.gutefrage.net/media/user/Omnivore11/1467413847632_nmmslarge__0_0_555_555_db79962e07d41275f7bd6de1d6a11bc1.jpg?v=1467413848000)
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Úbrigens kam exakt die gleiche Aufgabe heute in der Klausur vor :D
![](https://images.gutefrage.net/media/user/Omnivore11/1467413847632_nmmslarge__0_0_555_555_db79962e07d41275f7bd6de1d6a11bc1.jpg?v=1467413848000)
Supi....dann muss du es ja (hoffentlich) richtig gelöst haben :-)
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
da besteht keine Zweifel :-) danke nochmal!
![](https://images.gutefrage.net/media/user/Omnivore11/1467413847632_nmmslarge__0_0_555_555_db79962e07d41275f7bd6de1d6a11bc1.jpg?v=1467413848000)
Kein Problem. :-) Bitte
Ich sehe aber gerade, dass ich etwas falsch gerechnet habe. Beim zweiten Beispiel ist es natürlich nicht die Zahl 7 (0111), sondern die Nummero 14 (1110). Ich hoffe du hast nix falsch gemacht.
Konnte man in deiner Klausur erkennen ob Odd/Even und Rechts/Links gemeint war?
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Ups, ich sehe erst jetzt deine Frage, sorry! Also falls dich das noch interessieren sollte: In der Klausur konnten wir das leider nicht ablesen, der Prof hat uns aber zum Glück gesagt, nach welcher Variante wir rechnen müssen! :-)
Danke! Zu den Zweierpotenzen: Warum denn nur bis 2^2?