2011-09-01 315 views
6

我试图理解CRC,我越来越困惑如何计算'除数'。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 3 + x + 1)x是2? 2从哪里来?

+2

二进制中的除数只是它的多项式的系数。 'x^3 + x + 1'等于'1 * x^3 + 0 * x^2 + 1 * x + 1 * 1';阅读关卡获得1-0-1-1 – Nemo

回答

1

从同一个维基百科的“CRC数学”部分启动“这种分工样过程的数学分析揭示了如何挑选,保证良好的无差错除数检测属性“。这是它的关键。有些因子比其他因子好,所以你只需找到一个标准的因子,然后使用它。

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

0

这是写在接下来的一句@wikipedia:

如果最左边的除数位上方输入位为0,什么也不做。如果最左边的除数位上方的输入位为1,则除数与输入异或。

这意味着:

1101 xor 1011 => 0110 
-2

二进制除数只是其多项式的系数。 x^3 + x + 1 = 1 * x^3 + 0 * x^2 + 1 * x + 1 * 1;读取关键字得到1 0 1 1

             maninder singh walia walia