【问题标题】:CRC divisor calculationCRC除数计算
【发布时间】:2011-11-08 10:57:59
【问题描述】:

我试图理解 CRC,但我对如何计算“除数”感到困惑。

example on wikipedia 中,除数为 11 (1011),输入 11010011101100

11010011101100 000 <--- input left shifted by 3 bits
1011               <--- divisor (4 bits) = x³+x+1
------------------
01100011101100 000 <--- result

除数是如何计算的?在这个例子中 (x³+x+1) x 是 2? 2 是从哪里来的?

【问题讨论】:

  • 二进制中的除数就是多项式的系数。 x^3 + x + 1 等于 1*x^3 + 0*x^2 + 1*x +1*1;读出系数得到 1-0-1-1

标签: algorithm crc


【解决方案1】:

写在下一句@wikipedia:

如果最左边除数位上方的输入位为 0,则不执行任何操作。如果最左边除数位上方的输入位为 1,则除数与输入进行异或。

这意味着:

1101 xor 1011 => 0110

【讨论】:

    【解决方案2】:

    从同一维基百科的“CRC 数学”部分开始,“对这种类似除法的过程的数学分析揭示了如何选择保证良好错误检测特性的除数。”这是它的关键。有些除数比其他除数更好,因此您只需找到一个标准除数并经常使用即可。

    该页面的底部描述了一些使用的不同 CRC 以及定义其除数的多项式。

    【讨论】:

    • 给定一个n 数字输入数据如何找出除数的位?
    【解决方案3】:

    二进制中的除数只是其多项式的系数。 x^3 + x + 1 = 1x^3 + 0x^2 + 1x +11;读出系数得到 1 0 1 1

    【讨论】:

      猜你喜欢
      • 2017-03-01
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 2017-02-11
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多