Sie sind nicht angemeldet.

hensel

Zuhörer

  • »hensel« ist der Autor dieses Themas

Beiträge: 1

Registrierungsdatum: 27.01.2013

1

27.01.2013, 14:19

Großes Verständnisproblem - Prüfbit / BCD-Code (Hamming

Hallo, es geht um das Thema Technische Informatik und ich habe
ein großes Problem beim Verständnis mit dem Prüfbit. Ich spreche im
folgendem vom sogenannten BCD-Code, bei dem man einen 4-stelligen
Binär-Code hat (zB 0010) und dann eine Prüfziffer hinzufügt die die 1en
im bisherigen Code auf Geradzahligkeit überprüft (zB 0010 da wäre die
Prüfziffer 1 und der gesamt zu sendende Code somit 00101 /// bei 0011
wäre die Prüfziffer 0 ->00110). Der Sender erledigt so wie ich das verstanden habe, hierbei die Aufgaben der Umwandlung von Dezimalziffer in Dualzahl (zb 3 wird zu 0011) und er ergänzt das Prüfbit. Danach schickt er die Nachricht weiter an den Empfänger.



Nun soll es angeblich so sein, dass der Empfänger dieser Nachricht so
herausfinden kann, ob bei der Übertragung ein Fehler vorliegt. Wenn zB
der Code 00100 bei ihm angekommt, sieht er die 1en sind nicht
geradzahlig, da muss ein Fehler vorliegen. Soweit so gut.

Aber wie um
Himmels Willen will man da denn einen Fehler ablesen, der den
ursprünglichen Binär-Code betrifft. Für mich wäre dann nur klar, dass
bei der Prüfziffer ein Fehler gemacht wurde und nicht korrekt auf
Geradzahligkeit überprüft wurde. Denn theorethisch wäre doch möglich,
dass der Sender sprich derjenige der die Dezimalziffer in eine Dualzahl umgewandelt hat
(zB 2 wird zu 0010) da einen Fehler gemacht hat.


Angenommen er sagt fälschlicherweise 2 wird zu 0100. Danach fügt er
das Prüfbit 1 (->01001) hinzu und alles wäre in den Augen des Empfängers
korrekt??? Weil es ja geradzahlig wäre, wie soll der Empfänger sehen,
dass der Sender beim Umwandeln einen Fehler gemacht haben könnte??? Und erst recht, wie soll der Empfänger dann erkennen, dass die Zahl falsch in Binärcode umgewandelt wurde? Ich stehe wirklich komplett auf dem Schlauch :(



Gleiches gilt im Übrigens bei dem Hamming-Code. Auch da verstehe ich
nicht, wenn ein falscher Code (keine geradzahligen 1en) angekommen ist,
wie man dann darauf rückschließen soll, dass bei der Übertragung ein
Fehler gemacht wurde. Es kann doch nur sein, dass bei der Prüfziffer
nicht genau überprüft wurde.....



Ich hoffe irgendjemand hat Ahnung von der Materie und versteht mein Problem :D

  • »Schokoholic« ist männlich

Beiträge: 2 516

Registrierungsdatum: 04.10.2006

Wohnort: Hannover

Beruf: Haarspaltung

2

27.01.2013, 14:35

Naja, der Zweck der Kanalcodierung (wozu fehlererkennende und fehlerkorrigierende Codes wie Paritätsbits und Hamming Codes gehören) ist doch der Schutz gegen Fehler bei der Datenübertragung. Man geht dabei davon aus, dass der Absender alles richtig macht.

Andersrum ergibt das doch auch gar keinen Sinn. Überleg mal, wie der Empfänger prüfen kann, ob der Absender auch das gesendet hat, was er wirklich meinte: um das zu überprüfen müsste der Empfänger wissen, was der Sender sagen wollte, also bräuchte man die Daten auch garnicht übertragen, weil der Empfänger sie eh schon kennt. Um bei deinem Beispiel zu bleiben: wenn der Absender die Zahl 2 senden will, muss er sie auch als Zahl 2 codieren. Wenn das schon fehlschlägt ist entweder der Algorithmus oder die Hardware kaputt. In beiden Fällen kann man dem Absernder sowieso nicht trauen, weil ja alles was er sendet falsch berechnet sein könnte. Auch zum Beispiel das Codewort zweimal zu übertragen bringt da nichts, denn wenn der Absender die Zahl 2 das erste mal als 0100 codiert, wird er das auch beim zweiten Mal tun.

Salz

Opa

  • »Salz« ist männlich

Beiträge: 144

Registrierungsdatum: 03.12.2009

3

27.01.2013, 14:36

Prüfbit

Nenn das ganze bitte nichtg BCD, das steht für Binary Coded Decimal und heisst, daß man jede Dezimalziffer getrennt in 4 Bit encodiert. Aus der Zahl 4711 wird in BCD also 0100 0111 0001 0001. Das ganze hat mit deinem Problem aber nichts zu tun.

Natürlich kann man nie ausschließen daß auch der Algorithmus für die Codierung und Erstellung der Prüfziffer immer korrekt arbeitet. Es kann immer mal ein Fehler im Prozessor oder beim Compilieren auftreten. Aber das kann man lokal mit Testfällen und Streßtests überprüfen.

Das ganze ist einfach eine Frage der Wahrscheinlichkeiten. Wie wahrscheinlich ist es, daß dein Programm aus 2 in binär 0100 macht, und wie wahrscheinlich ist es, daß bei der physikalischen Übertragung ein Fehler auftreten kann? Und letzteres ist einfach um Größenordnungen wahrscheinlicher, wenn du dein Programm vernünftig testest. Die Prüf- und Fehlerkorrekturverfahren wurden auch explizit für den Fall der physikalischen Übertragung entworfen.
Damals…