Paritätsbit bestimmen?

2 Antworten

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

Danke! Zu den Zweierpotenzen: Warum denn nur bis 2^2?

0
@hellokitty9899

äääää....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!

0
@Omnivore11

Ok, und dann einfach in der Hexadezimaltabelle nachschauen, wo unser Prüfbit liegt und das mit dem Code 1110 0100 vergleichen?

0
@hellokitty9899

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 111

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

1
@hellokitty9899

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?

0

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! :-)

0

Was möchtest Du wissen?