将生成多项式转换为二进制数

时间:2012-01-13 04:57:43

标签: c crc polynomial-math

我有一个生成多项式,必须转换为二进制数才能在我的CRC代码中使用。例如,这些是正确转换的那个,我想知道它们是如何完成的。

这些用于ROHC CRC计算:

用于3位CRC的多项式是: C(x)= 1 + x + x ^ 3

这是0x06 用于7位CRC的多项式是: C(x)= 1 + x + x ^ 2 + x ^ 3 + x ^ 6 + x ^ 7

这是0x79

想知道0x06和0x79是如何从这些方程式中得出的。

1 个答案:

答案 0 :(得分:2)

这些似乎是反向二进制表示法。

当表示CRC多项式时,每个项映射到一位。此外,最高阶项是隐含的,并且被省略。

分解你的两个例子:

1 + x + x^3                    = 1101
1 + x + x^2 + x^3 + x^6 + x^7  = 11110011

砍掉最高阶的任期:

1101     -> 110      = 0x06
11110011 -> 1111001  = 0x79