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:
The divisor in CRC-32 is:
x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
|