【计算机基础|计算机组成原理】【11】循环冗余校验码

循环冗余校验码

基本思路

  • 数据发送方、接收方约定一个二进制 除数

  • 信息位k + 校验位r作为 被除数

  • 添加校验位后需保证除法的余数为0

  • 接收方接收数据后,进行除法检查余数是否为0,若余数非0则进行重传或纠错

实现步骤

例:设生成多项式G(x)=X^3 + X^2 + 1,信息码为101001,求对应的CRC码

  • 确定k、r以及生成多项式对应的二进制码

k = 信息码长度 = 6
r = 生成多项式最高次幂 = 3
n = 校验码位数 = k + r = 6 + 3 = 9
生成多项式G(x) = (1) * x^3 + (1) * x^2 + (0) * x^1 + (1) * x^0 = 1101 
  • 移位:信息码左移r位,低位补0

移位后的结果 = [信息位][r位] = [101001][000] = 101001000
  • 相除:对移位后的信息码,用生成多项式进行模2除法,产生余数即为校验位

CRC码 = 信息码 + 校验位 = [101001][001] = 101001001
  • 检错和纠错

  • 发送:101001001,记为C9C8C7C6C5C4C3C2C1

  • 接收:101001001,用1101进行模2除运算,余数为000,代表未出错

  • 接收:101001011,用1101进行模2除运算,余数为010,代表第2位(C2)出错(不严谨)

由于3个bit校验位(001)仅能表示2^3=8种状态,所以8以下的信息位有纠错能力,即2^r >= k + r - 1,则CRC码可纠错1位
  • 理论上循环冗余校验码检错能力有以下特点

  • 可检测出所有奇数个错误

  • 可检测出所有双比特的错误

  • 可检测出所有小于等于校验位长度的连续错误

循环冗余校验码通常用于计算机网络中数据传输,几千bit位信息码 + 几个位校验码,实际应用中只用于检错
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值