Dieser 11:49, 29. Jul. 2020‎ von "VermCad" eingeführte Beispielcode enthält m. E. eine falsche Zeile: ... CRC := CRC xor (B shl 8); ... Der Ausdruck "B shl 8" heißt ja wohl, dass der Inhalt des Bytes B achtmal nach links verschoben wird. Beim jedem Linksshift tritt das höchstwertige Bit nach links aus und ist verloren. An die niederwertigste Stelle des Bytes wird ein Null-Bit eingeschoben. Das alles achtmal, sodass das Byte B auf jeden Fall anschließend Null ist. Wird dann das Wort CRC mit dem entstandenen Null-Byte XOR-verknüpft, ändert sich an dessen Wert genau nichts. Wozu also dieses Statement? Vermutlich müsste die Variable B vom Typ Word sein, damit dann die XOR-Verknüpfung zwischen dem höherwertigen Byte vom Wort CRC und dem von B stattfindet. Ich hoffe, dass der Compiler aber nichts gegen die Zuweisung B := Buffer[I] hat (Zuweisung eines Bytes an eine Word-Variable). Der Typ von Buffer ist hier nicht deklariert, nur in der Überschrift als "Array of Byte" erwähnt. Alternativ könnte man folgende Formulierung (hier als Pseudocode) schreiben: ... CRC := HighByteOf(CRC) xor B; ... -- Golter 13:07, 13. Mär. 2021 (CET)