Domanda

The CRC 32 Generator is a 33 bit bin number:

100000100110000010001110110110111

According to the PDF Page 18,

Odd number of bit errors can be detected if C(x) contains the factor (x + 1)

CRC 32 should satisfy the property of being able to detect any odd number of bit errors. However, the CRC 32 generator (which is the C(x)) is not divisible by 11. In another word, the CRC-32 polynomial:

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

does not contain the factor (x + 1).

So, how can the property be satisfied?

Note: You may find it helpful to have an online modulo-2 arithmetic calculator.

È stato utile?

Soluzione

Not all CRC polynomials are divisible by x+1. There is a tradeoff between the detection of one-bit errors and two-bit errors. It depends on what noise source you're trying to protect against. As you have noticed, the commonly used Ethernet/gzip/etc. polynomial is not divisible by x+1.

The CRC-32C (Castagnoli) polynomial is divisible by x+1. As it happens, it is also stronger overall, and is the CRC of choice for new applications. (Actually it didn't just happen -- it was the result of an exhaustive search.) It is also the CRC that the Intel crc32 instruction computes.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top