CRC 多项式的最低指数

Lowest exponent of a CRC polynomial

我从未见过没有最低项 x⁰ = 1 的 CRC 多项式。

有没有我没见过的例外情况? 为什么所有 CRC 多项式都具有最低项 x⁰?

形式为 xn + ... + x0 的 CRC 多项式用于 n 位 CRC(它用于用产生 n 位余数的 CRC 多项式对数据位进行无借位除法,即 CRC)。如果 CRC 多项式的形式为 xn + ... + x1(没有 x0 术语),那么它实际上是一个 n-1 位 CRC。

但是,在某些情况下,通用代码可能会使用不同的表来快速计算 32 位或 16 位 CRC,其中代码主要部分的唯一区别是常量。代码的编写就好像 CRC 的形式是 x32 + ... + x0,但允许大部分相同的代码要生成 16 位 CRC,多项式的形式为 x32 + ... + x16。最后一步校正完成,将最终 CRC 右移 16 位,以将 16 位 CRC 置于正确的位中。这方面的一个例子是在这个 500 多行 fast crc32/16 assembly 示例中使用 pclmulqdq 指令(无进位乘法),在这种情况下设置为产生 16 位 CRC。