Forum: PC-Programmierung CRC: Frage zur Wikipedia-Beschreibung


von Dennis S. (eltio)


Lesenswert?

Hallo zusammen,

auf der Wikipedia-Seite steht bei der Implementierung [01], "falls  das 
am weitesten links stehende Bit vom Schieberegister ungleich dem 
nächsten Bit aus dem Datenstrom ist" und bei dem Code-Beispiel [02]
1
if (((crc32 & 0x80000000) ? 1 : 0) != datastream[i])

Sollte das nicht am Ende datastream[i+1] heißen? Oder liegt das an der 
Schleifenzähler-Inkrementierung von "++i" anstatt "i++"?

Gruß
Dennis

[01] 
http://de.wikipedia.org/wiki/Zyklische_Redundanzpr%C3%BCfung#Implementierung
[02] 
http://de.wikipedia.org/wiki/Zyklische_Redundanzpr%C3%BCfung#Berechnung_einer_CRC-Pr.C3.BCfsumme_in_C_und_Pascal.2FDelphi

von Karl H. (kbuchegg)


Lesenswert?

Dennis S. schrieb:

>  Oder liegt das an der
> Schleifenzähler-Inkrementierung von "++i" anstatt "i++"?

Nein, das spielt hier keine Rolle.

Aber ich verstehe deine Frage nicht wirklich.
Das 'nächste' Bit aus dem Datenstrom ist doch das in datastream[i].
Die for-Schleife arbeitet doch alle Bits von 0 weg bis zur Länge des 
Datenstroms durch.

von Karl H. (kbuchegg)


Lesenswert?

Ah.
'nächstes' ist hier nicht im Sinne einer Nachbarschaftsbeziehung zu 
verstehen, sondern als 'das nächste zu bearbeitende'. Also: eines nach 
dem anderen. Und das erste ist nun  mal das an der Datenstrom Position 
0. Oder eben
1
   for( i = 0; i < Länge; ++i )
2
     bearbeite das 'nächste', das i-te, Bit.

von Dennis S. (eltio)


Lesenswert?

Ach... Danke Karl Heinz und sorry für die blöde "Frage"! facepalm

Ich hatte mich fälschlicherweise durch die Formulierung verwirren lassen 
und das "nächste Bit" völlig falsch interpretiert. Keine Ahnung was mich 
da geritten hat... :-/

Gruß Dennis

von Karl H. (kbuchegg)


Lesenswert?

Dennis S. schrieb:
> Ach... Danke Karl Heinz und sorry für die blöde "Frage"! *facepalm*
>
> Ich hatte mich fälschlicherweise durch die Formulierung verwirren lassen
> und das "nächste Bit" völlig falsch interpretiert. Keine Ahnung was mich
> da geritten hat... :-/

Passt schon.
Du bist nicht der Einzige, dem sowas mal passiert. Sowas kommt vor. 
Umgangssprachliche 'Beschreibungen' oder auch Pseudocode (bei dem man 
absichtlich nicht auf eine bestimmte Programmiersprache Bezug nimmt) 
sind des öfteren erstaunlich schwer eindeutig zu formulieren. Das liegt 
wohl daran, dass natürlich Sprache an sich nicht unbedingt sehr präzise 
bzw. auch oft sehr mehrdeutig sein kann. Erstaunlich ist eigentlich, 
dass Zuhörer trotzdem die gemeinte Bedeutung (meistens) heraushören.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.