next up previous contents index Search
Next: References Up: 0.12.3 Cyclic Redundancy Checks Previous: CRC-16 CRC-32

One of the drawbacks shared by the CRC-16 and the CRC-CCIT is that they will both fail to detect errors involving the omission of leading null (zero) bits. The CRC-32 attempts to solve this problem by initializing the value of the CRC to 0xFFFFFFFF. The other two methods discussed operate with an initial CRC value of zero. This use of a non-zero initial CRC value is known as preconditioning. The CRC-32 also makes use of something called postconditioning which means altering the value of the final CRC before returning. CRC-32 flips the bits on the CRC. According to Rex and Binstock, this practice is not designed to increase the accuracy of error detection but is, rather, simply part of the definition of CRC-32.

CRC-32 operates with the same scheme as the other two methods previously addressed; it creates a numerator polynomial and a denominator polynomial. The latter is what you would expect:

\begin{displaymath}\sum_{n=0}^{31} x^n

The divisor in CRC-32 is:

x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1

Scott Gasch