3

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.

Wei Zhong
  • 580
  • 10
  • 17
  • This question appears to be off-topic because it is about Maths, belongs to http://math.stackexchange.com – Raptor Nov 25 '13 at 04:25
  • 1
    Yes, but it a question from computer network. I think someone can answer this question here. – Wei Zhong Nov 25 '13 at 04:36
  • 1
    This sounds like it's directly copied from a homework assignment. – that other guy Nov 25 '13 at 04:55
  • @WeiZhong Finish homework at home, on your own. – Raptor Nov 25 '13 at 05:47
  • @ShivanRaptor this is not my homework, if you see homework like this, that may be Stanford PHD homework, if they have homework for PHD... – Wei Zhong Nov 25 '13 at 15:03
  • @thatotherguy it is not homework, it is a question comes in my mind. – Wei Zhong Nov 25 '13 at 15:04
  • "CRC 32 should satisfy the property of being able to detect any odd number of bit errors." Who says that? – starblue Nov 25 '13 at 16:52
  • @starblue Interesting! Actually it is the famous "Computer Networking: A Top-Down Approach" sixth edition by Kurose Ross. On Page 444 of that book, you will find the exact sentence: "Also, each of the CRC standards can detect any odd number of bit errors", here the CRC standards refer to 8- 12- 16- and CRC32 which the author cites before that sentence. – Wei Zhong Nov 25 '13 at 21:28

1 Answers1

4

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.

Mark Adler
  • 101,978
  • 13
  • 118
  • 158
  • I agree, actually the book "Computer Networking: A Top-Down Approach" sixth edition is somehow misleading (as I mentioned in my comments above), which makes me think that CRC32s are always divisible by x+1. Now I know that there are many CRC32, thank you! – Wei Zhong Nov 25 '13 at 21:36