suma kontrolna crc32

0

witam, czy jest mógłby pomóc zrozumieć mi jak działa poniższy algorytm obliczania crc32

''0: crc32 = 0xFFFFFFFF; // wartość początkowa
1: for(i = 0; i < n; i = i + 1) // pętla od 0 do n - 1
2: crc32 = (crc32 >> 8) XOR A[(crc32 AND 0xFF) XOR B[i]];
4: crc32 = crc32 XOR 0xFFFFFFFF;''

pochodzi on z Obliczanie sum kontrolnych CRC-32

z tego co wiem to zmiennej crc32 przypiujemy 0xFFFFFFFF(h) = 4294967295(d) = 11111111111111111111111111111111(b)
czy 0xFFFFFFFF(h) może też oznaczać -1 ??

0

Zależy od sposobu przechowywania liczb ze znakiem. Przy 32-bitowch liczbach zakodowanych przy użyciu kodu uzupełnienia do 2 rzeczywiście 0xffffffff == -1.

0

Czy jest ktoś w stanie wytłumaczyć 2 ostatnie linijki ? w 3 chyba wykonujemy operacje XOR z wartością początkową, ale po co jest te przesuniecie bitowe ? I dlaczego w 4 jeszcze raz jest operacja XOR ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1