循环冗余校验码(CRC码)

循环冗余校验码的思想:
在这里插入图片描述
例题:
在这里插入图片描述
在这里插入图片描述

注:
1.生成多项式即为约定的除数。
2.产生的余数为R位(比除数少一位)二进制数。
3.模二除法后得到的余数替换校验位,即得到对应的CRC码。

(CRC码除以约定的除数后等于0表示此次传输数据没有发生错误,反之则表示其中可能某些比特传输错误)
在这里插入图片描述

在这里插入图片描述
注:
1.这里与海明码不同,余数转换成十进制后的数与出错位没有必然的联系,例如,余数100转换成十进制后为4,但是出错位并不是4,而是3。
2.如果约定的除数不变,余数与出错位固定不变。

如图所示,给出了例题中出错位对应的余数:
在这里插入图片描述
例题中的余数有3位,说明可以表示8种状态,其中000代表传输正确,剩下001 ~ 111会分别表示1 ~ 7位出错,但是传输过去的CRC码一共有9位,剩下的2位会根据1 ~ 7位的出错余数循环表示。
所以说如果余数为010不一定会代表第2位出错,也有可能是第9位。

因为余数没有与出错位一一对应,这样子的CRC码好像只有检错能力,并没有起到纠错的功能,那是因为信息位太多
如:
在这里插入图片描述
因为这个弊端,通常CRC码在实际应用中只用来检错。
在这里插入图片描述

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

《模二运算》

1、模二加的运算法则:

0+0=0, 0 + 1 = 1, 1+ 0 = 1, 1+ 1 = 0
理解:两个二进制数相加相减不考虑进位
例:
01 + 11 = 10,
对于两个数的低位都是1,进行模二和为0,但是没有进位,所以高位的0 加1 还是1,因为不考虑低位的进位。

2、模二减的运算法则:

0 - 0 = 0, 0 - 1 = 1, 1 - 0 = 1, 1 - 1 = 0
例:
1 0 1 0 - 0 1 1 0 = 1 1 0 0
上式的减法中,第三位的减法中0 - 1,如果按照二进制的减法是有借位的,但是对于模二减是没有借位的,所以才会有第四位中的1 - 0仍然为1。

综上:模二加、模二减的结果与异或运算相同。

3.模二除的运算法则:

以例题为例:
在这里插入图片描述
1.被除数首位为1时商1,为0时商0。
2.商乘以除数与被除数进行模二减法(异或运算)。
3.去除首位,其余位数进行异或运算,被除数再补位,得到的余数作为新的被除数。
4.往后重复这些步骤直到被除数没有位可以补下来为止。

4.模二乘运算法则:

0 * 0 = 0, 0 * 1 = 0, 1 * 0 = 0, 1 * 1 = 1
模二乘法的运算的乘法部分与普通多位二进制数运算相似,但是加法部分用的则是模二加运算。
————————————————————————————————————————————————

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值