任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的蠢睁多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。
如果是低速设计上游数据可能是串行的 显然如果采用并行实现有些浪费硬件资源 因为还要把串行输入存储起来形成整字节的并行输入CRC的“定义”不是唯一的 只要接收发送端采用的一致就行
不知道你看了什么资料 但是估计不是很好 不如直接看维基百科里的介绍
http://zh.wikipedia.org/wiki/%E5%BE%AA%E7%8E%AF%E5%86%97%E4%BD%99%E6%A0%A1%E9%AA%8C
“初始值”、“反射值”以及“最终圆卖早异或值”
对于一些复杂的校验和来说这些十六进制数值是很重要的,如 CRC-32 以及 CRC-64。通常小于 CRC-16 的 CRC 不需要使用这些值。通常可以通过改变这些值来得到各自不同的校验和,但是校配纯验和算法机制并没有变化
CRC 标准化问题
相同长度的CRC也可能有多种形式,据称 CRC-16 与 CRC-32 至少有 10 种形式,但没有一种在数学上是最优的
移位寄存器可以初始化成 1 而不是 0。同样,在用算法处理之橘雀前,消息的最初n个数据位要取反。这是因为未经修改的 CRC 无法区分只有起始 0 的个数不同的两条消息。而经过这样的取反过程,CRC 就可以正确地分辨这些消息了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)