首页 > 编程知识 正文

crc循环校验码(循环冗余校验码详解)

时间:2023-05-06 13:28:16 阅读:73158 作者:2026

http://www.Sina.com/http://www.Sina.com /

循环冗余校验码的思想:

1 .生成多项式是约定的除数。

2 .产生的馀数为r位(比除数少1位)二进制数。

3 .模式2除法运算后得到的余数替换奇偶校验位,得到相应的CRC代码。

(CRC码除以约定的除数的值为0表示本次的传输数据没有发生错误,反之则表示其中可能有部分位传输错误)

例题:

1 .这里与汉明码不同,馀数转换为十进制的数和错误位没有必然的联系。 例如,如果将馀数100转换为十进制数,则为4,但错误位为3而不是4。

2 .如果约定除数不变,则剩余和错误位保持不变。

例题错误位对应的剩馀数量如图所示。

例题的馀数为3位,表示可以表示8种状态。 其中,000表示已正确传输,剩下的001 ~ 111分别表示1 ~ 7位错误。 但是,传输的CRC代码共有9位,剩下的2位根据1 ~ 7位错误的馀数循环显示。

所以,如果剩下的是010的话,第二名并不一定是错的,也有可能成为第九名。

由于馀数与错误位不一一对应,因此这种CRC代码似乎只有错误检测能力,没有纠错的功能。 那是注:

例如:

由于这一弊端,常规CRC码在实际应用中只能用于检错。

————————————————————————————————————————————————

《模二运算》 1,http://www.Sina.com /中的算法:

注:

理解:信息位太多

示例:

01 11=10,

对于两个数的低位都是1,如果进行类型2和,则为0,但没有进位。 因此,高位0加1还是加1是因为不考虑低位的进位。

2,http://www.Sina.com /的算法:

灵巧的月亮

示例:

1 0 1 0 - 0 1 1 0=1 1 0 0

在上式减法中,第三位的减法是0 - 1,二进制的减法是借位,但对于000, 0 + 1 = 1, 1+ 0 = 1, 1+ 1 = 0,第四位的1 - 0仍然为1。

综上所述,两个二进制数相加相减不考虑进位

3. 模二减的算法:

举例来说:

1 .被除数首为1时商1,0时商0。

2 .商乘以除数和被除数,再减去模式2 (异或运算)。

3 .去顶,用剩下的位进行异或运算,被除数再补码,得到的馀数作为新被除数。

4 .稍后重复这些步骤,直到被除数中没有可以补充的位。

4. 0 - 0 = 0, 0 - 1 = 1, 1 - 0 = 1, 1 - 1 = 0算法:

模二减是没有借位的

模拟二乘法运算的乘法部分与通常的多位二进制运算相似,但加法部分使用灵巧的月运算。

————————————————————————————————————————————————

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。