One of the drawbacks shared by the CRC16 and the CRCCCIT is that
they will both fail to detect errors involving the omission of leading
null (zero) bits. The CRC32 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 nonzero initial CRC value is known as preconditioning.
The CRC32 also makes use of something called postconditioning
which means altering the value of the final CRC before returning.
CRC32 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 CRC32.
CRC32 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 CRC32 is:
x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11} + x^{10} + x^{8} + x^{7} + x^{5} + x^{4} + x^{2} + x + 1
