Hallo zusammen,
ich benötige einmal eure Hilfe was die Berechnung einer Checksumme nach folgender Formel angeht:
Message Checksum = (((Checksum >> 6) & 0x03) + (Checksum >> 3) + Checksum) & 0x07
Die Checksum beträgt 1555 Dezimal. Und komme dann über Bitverschiebung (>>) und Bitmanipulation (&) auf eine Message Checksum von 5 Dezimal.
Ich berechne dies wie folgt:
**((Checksum >> 6) & 0x03)[/u]
1555 Dez. = 0110 0001 0011 hex >> 6 (Bitverschiebung um 6 nach rechts)
[u] 0000 0001 1000 hex & 0x03 (betrachtung der niedrigsten 2 bit)[/u]
[u] 00 hex = 0 Dez.[/u]
[u]__(Checksum >> 3)__[/u]
1555 Dez. = 0110 0001 0011 hex >> 3 (Bitverschiebung um 3 nach rechts)
[u] 0000 1100 0010 hex = 194 Dez.[/u]
[u]__(((Checksum >> 6) & 0x03) + (Checksum >> 3) + Checksum) & 0x07__[/u]
0 Dez. + 194 Dez. + 1555 Dez. = 1749 Dez. = 0110 1101 0101 hex & 0x07 (betrachtung der niedrigsten 3 bit)
[u] 101 hex = 5 Dez.**[/u]
Message Checksum = 5 Dezimal.
Ich hoffe man kann nachvollziehen, was ich hier gerechnet habe.
Kann mir bitte jemand bestätigen, das meine Rechnung so richtig ist und die Message Checksum = 5 Dezimal beträgt?
Oder mir erläutern, wo mein Rechen- /Denkfehler liegt?
Vielen dank im voraus.
Gruß,
Norman