3

CRC 32 Generator 是一个 33 位的 bin 编号:

100000100110000010001110110110111

根据PDF 第 18 页

如果 C(x) 包含因子 (x + 1),则可以检测到奇数位错误

CRC 32 应该满足能够检测任何奇数位错误的特性。但是,CRC 32 生成器(即 C(x))不能被 11 整除。换句话说,CRC-32 多项式:

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

不包含因子(x + 1)

那么,如何才能满足财产呢?

注意:您可能会发现拥有一个在线模 2 算术计算器很有帮助。

4

1 回答 1

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.

于 2013-11-25T19:25:04.987 回答