循环冗余码校验CRC码 算法步骤+详细实例计算
题目描述:待发送的信息为1001,生成多项式为G(x)=1011,计算余数R(x),传递的信息T(x),展示循环冗余校验的过程。(算法步骤没看明白没有关系,都是看示例想清楚的,看下面给出示例就好~)是已知的),根据CRC编码的规则,得到编码后的消息。,依据发送接收消息双方约定的生成多项式。,检验发送消息的过程中是否出现了错误。,余数不为0,说明接受到的消息错误❌。(除法规则与上述相同),得到余数为
通信过程:(白话解释)
我们将原始待发送的消息称为 MMM,依据发送接收消息双方约定的生成多项式 G(x)G(x)G(x)(意思就是G(x)G(x)G(x) 是已知的),根据CRC编码的规则,得到编码后的消息 TTT,将该“加密”后的消息 TTT 发送给接收方,接收方能够根据 TTT,检验发送消息的过程中是否出现了错误。
算法步骤:
- 将 kkk 位信息写成 k−1k-1k−1 阶多项式 M(x)M(x)M(x)
- 设生成多项式G(x)G(x)G(x)的阶为 rrr
- 用模2除法计算xrM(x)/G(x)x^rM(x)/G(x)xrM(x)/G(x) ,获得余数多项式 R(x)R(x)R(x)
- 用模2减法球的传送多项式 T(x)T(x)T(x),T(x)=xrM(x)−R(x)T(x)=x^rM(x)-R(x)T(x)=xrM(x)−R(x),则T(x)T(x)T(x) 多项式系数序列的前kkk位位信息位,后rrr位为校验位,总位数 n=k+rn=k+rn=k+r
- 接收方解码方法:将 T(x)T(x)T(x) 除以 G(x)G(x)G(x) ,得到一个属,如果这个余数为0,则说明传输中无错误发生,否则说明传输有误。
(算法步骤没看明白没有关系,都是看示例想清楚的,看下面给出示例就好~)
CRC计算示例:
题目描述:待发送的信息为1001,生成多项式为G(x)=1011,计算余数R(x),传递的信息T(x),展示循环冗余校验的过程。
生成多项式G(x)=1011G(x)=1011G(x)=1011,对应的阶为 r=3r=3r=3 (总位数-1),
将原始待发送的信息M(x)M(x)M(x)左移 r=3r=3r=3 位,得到M(x)′=1001000M(x)'=1001000M(x)′=1001000(右侧补3个0),
用左移后的M(x)′M(x)'M(x)′除以给定的生成多项式 G(x)G(x)G(x),
运算结果得到余数 R(x)=110R(x)=110R(x)=110,
将待发送信息 M(x)M(x)M(x) 左移后的信息加上得到的余数 R(x)R(x)R(x),就得到应传送的信息
T(x)=1001000+110=1001110T(x)=1001000+110=1001110T(x)=1001000+110=1001110,
发送码即为 100111010011101001110,其中前4位为原始发送信息为 100110011001,后3位为校验位 110110110。
- ( M(x) = 1001 )(信息码:9)
- ( G(x) = 1011 )(生成多项式:( x^3 + x + 1 ))
- 余数 ( R(x) = 110 ) → 发送码:1001110
接收方校验过程:
若接受到的消息为 100011010001101000110,用该数除以 G(x)G(x)G(x)(除法规则与上述相同),得到余数为 000000000,说明接受到的消息正确✔。
若接收到的信息为:100111010011101001110,用该数除以 G(x)G(x)G(x)(除法规则与上述相同),得到余数为 011011011,余数不为0,说明接受到的消息错误❌。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)