Also ich finde, der Pseudocode hier veranschaulicht das Verfahren schon ganz gut:
Code:
Schieberegister := 0000... (Startwert)
solange Bits im String verbleiben:
falls das am weitesten links stehende Bit vom Schieberegister
ungleich zum nächsten Bit aus dem String ist:
Schieberegister := (Schieberegister linksschieben um 1, rechtes Bit 0)
xor CRC-Polynom
andernfalls:
Schieberegister := Schieberegister linksschieben um 1, rechtes Bit 0
nächstes Bit im String
Schieberegister enthält das Ergebnis
"Schieberegister" ist halt der Speicher in dem das ganze stattfindet.
Und mit den Tabellen in denen das ganze Zeug beretis abgespeichert ist, erspart man sich halt das "linksschieben um 1" weil das auf modernen CPUs so schlecht möglich ist (wenn die Datenmengen größer werden)
Mit den Tabellen kann man eben immer um 8 verschieben (also immer 1 Byte)