轻松理解CRC差错检测算法(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)四
2016-12-12 21:35
621 查看
6 一个完整运算示例(作者版权声明见本系列第一篇)
已经定义了CRC运算,我们可以通过一个简单的除法来构建CRC运算的框架。因为,这就是CRC运算的全部。这部分会填补上细节,给出一个完整示例。
要实现一个CRC运算,我们要选出一个除数。在数学王国里,一个除数被叫作“生成多项式”,或者,简单地说“多项式”,它是任何CRC运算中的关键参数。或者叫除数的另外某个名称更易懂一些,但是多项式的说法,已经深深植根于这个领域中,如果不使用它,反而会造成困惑。折衷的结果是,我们以poly(译注:实在找不到合适的词)称呼CRC多项式。就把这样的数学名词想成是一类鹦鹉,“你好,poly”(译注:记得初一英语课本中的那只吗:->)。
你可以选择任意一个poly来实现你的CRC算法。然而,一些poly就是天生比另外一些好,这样一来,使用那些经过验证和测试的poly是明智选择。下一部分会着重讨论这个问题。
poly的宽度(最高非0位的位置)是非常重要的,因为它左右了整个计算。一般来说,16位宽或者32位宽被选用,为的是能在现代电脑上轻松实现。poly的宽度是就是最高位的真实位(译注:poly长度-1)。例如,10011的宽度是4,而非5。以示例为例,我们选择一个10011(宽度是4)的poly。
选取了一个poly之后,我们可以继续我们的运算了。只是简单地用poly去除信息。唯一的机巧点是,W(poly宽度)个0被附加到信息的后面,在CRC计算开始前。这样我们有:
原始的信息: 1101011011
poly: 10011
附加W位0之后的信息: 11010110110000
现在,我们简单地把优化后的信息用多项式来CRC除。和前面的除法一样:
除法得到了一个商,会被舍弃,一个余数,就是计算得到的校验和。计算就此结束。通常,校验和是被附加到发送的信息的尾部。这个例子中发送的信息就是: 11010110111110。另外一边,接收者,可以做以下二个中任一件事:
1.把信息和校验和分开。计算信息的的校验和(附加W个0),比较两个校验和。
2.把整个信息进行校验和运算,看下,这得到的余数是不是0.
两个操作都是等效的。不过,在下一部分中,我们选第2种方法,因为,它在数学上更整洁。
总结下,CRC类算法的步骤:
1 选择一个位宽W,一个poly(位宽W)记为G。
2 附加W个0到信息之后,称这个信息为M'。
3.用G去除M',得到的余数就是校验和。这就是全部的内容。
已经定义了CRC运算,我们可以通过一个简单的除法来构建CRC运算的框架。因为,这就是CRC运算的全部。这部分会填补上细节,给出一个完整示例。
要实现一个CRC运算,我们要选出一个除数。在数学王国里,一个除数被叫作“生成多项式”,或者,简单地说“多项式”,它是任何CRC运算中的关键参数。或者叫除数的另外某个名称更易懂一些,但是多项式的说法,已经深深植根于这个领域中,如果不使用它,反而会造成困惑。折衷的结果是,我们以poly(译注:实在找不到合适的词)称呼CRC多项式。就把这样的数学名词想成是一类鹦鹉,“你好,poly”(译注:记得初一英语课本中的那只吗:->)。
你可以选择任意一个poly来实现你的CRC算法。然而,一些poly就是天生比另外一些好,这样一来,使用那些经过验证和测试的poly是明智选择。下一部分会着重讨论这个问题。
poly的宽度(最高非0位的位置)是非常重要的,因为它左右了整个计算。一般来说,16位宽或者32位宽被选用,为的是能在现代电脑上轻松实现。poly的宽度是就是最高位的真实位(译注:poly长度-1)。例如,10011的宽度是4,而非5。以示例为例,我们选择一个10011(宽度是4)的poly。
选取了一个poly之后,我们可以继续我们的运算了。只是简单地用poly去除信息。唯一的机巧点是,W(poly宽度)个0被附加到信息的后面,在CRC计算开始前。这样我们有:
原始的信息: 1101011011
poly: 10011
附加W位0之后的信息: 11010110110000
现在,我们简单地把优化后的信息用多项式来CRC除。和前面的除法一样:
除法得到了一个商,会被舍弃,一个余数,就是计算得到的校验和。计算就此结束。通常,校验和是被附加到发送的信息的尾部。这个例子中发送的信息就是: 11010110111110。另外一边,接收者,可以做以下二个中任一件事:
1.把信息和校验和分开。计算信息的的校验和(附加W个0),比较两个校验和。
2.把整个信息进行校验和运算,看下,这得到的余数是不是0.
两个操作都是等效的。不过,在下一部分中,我们选第2种方法,因为,它在数学上更整洁。
总结下,CRC类算法的步骤:
1 选择一个位宽W,一个poly(位宽W)记为G。
2 附加W个0到信息之后,称这个信息为M'。
3.用G去除M',得到的余数就是校验和。这就是全部的内容。
相关文章推荐
- 轻松理解CRC差错检测算法(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)五
- 轻松理解CRC差错检测算法(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)七
- 轻松理解CRC差错检测算法(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)三
- CRC校验的精彩介绍(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)
- A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS
- 轻松理解CRC差错检测算法(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)八
- 轻松理解CRC差错检测算法(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)一
- 轻松理解CRC差错检测算法(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)六
- A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS
- A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS
- 轻松理解CRC差错检测算法(A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS)二
- A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHM
- 轻松理解CRC差错检测算法七 -注解
- 基音检测算法的性能:Performance Evaluation of Pitch Detection Algorithms
- Motion Detection Algorithms视频中运动检测算法源代码及演示代码
- 图像处理之简单脸谱检测算法(Simple Face Detection Algorithm)
- 神奇的图像处理算法(Amazing algorithms to enhance or transform images)
- 学习boost之0.02 对CRC算法的理解
- 算法导论(Introduction to Algorithms )— 第二章 算法入门 — 2.1 插入排序
- fault tolerance中的错误和故障检测(Error and Fault Detection Mechanisms)