【自学笔记/计算机网络】奇偶校验码,循环冗余码,海明码

资料来源于互联网(博客,教学视频等,如有侵权请联系删除);
仅作个人笔记,供自己回顾,或者有需要的小伙伴一起交流学习,不作其他用途。

一.奇偶校验码

这个比较简单,容易理解,就是编码中”1”的个数为奇数就是奇校验码,”1”的个数为偶数就是偶校验码,其中一位是校验位。

【例】设校验位在最低位,编码1100111,则奇校验码为11001110,偶校验码为11001111。

【偶校验的硬件实现】各信息位进行异或运算,结果即为偶校验位。
1 ⨁ 1 ⨁ 0 ⨁ 0 ⨁ 1 ⨁ 1 ⨁ 1 = 1 1\bigoplus1\bigoplus0\bigoplus0\bigoplus1\bigoplus1\bigoplus1=1 1100111=1
∴1100111的偶校验码为11001111

【硬件进行偶校验】将接收到的各信息位进行异或运算,若结果为1,说明出错。

如收到11001011(这里第6位发生了错误),
1 ⨁ 1 ⨁ 0 ⨁ 0 ⨁ 1 ⨁ 0 ⨁ 1 ⨁ 1 = 1 1\bigoplus1\bigoplus0\bigoplus0\bigoplus1\bigoplus0\bigoplus1\bigoplus1=1 11001011=1
∴传输过程中发生了错误。

【Tip】奇偶校验只能检查奇数个比特错误,检错能力50%。出现偶数个比特位错误则检查不出来。

在这里插入图片描述

二.循环冗余码(CRC)

相关概念不赘述,这里介绍发送时的编码方式和接收时检错方式。

1.发送方

设要发送的数据为1101011011,生成多项式为10011。过程可参照下图。

1.生成多项式5位,则阶数位4(比多项式少一位),在数据后面补4个0(阶数为几就补几个0),得到11010110110000

2.采用模2除法。这里可以直接使用异或操作(对应位同0异1)

3.得到余数1110,将1110替换第1步的4个0,得到最终要发送的数据11010110111110。
在这里插入图片描述
【Tip】根据模2运算规则,加法不进位,减法不借位,所以这里正好是异或操作。

2.接收方

接收方收到的数据依然按照上面的方法除以生成多项式,得到:

1.余数为0,数据无错,保留(下左图)

2.余数不为0,数据有错,丢弃(下右图)
在这里插入图片描述

三.海明码

海明不等式:
2 r ≥ k + r + 1 2^{r}\geq k+r+1 2rk+r+1
【说明】

k:信息位数;r:校验位数(可以校验出 2 r 2^{r} 2r种状态)。

信息位+校验位,总共k+r位可能发生错误,再加1种正确的情况,总共k+r+1种情况。

校验位数必须可以校验出这k+r+1种情况。

1.发送方

设要发送的数据为101101,根据海明不等式,k=6,则r最小为4,因此对应的海明码有10位,其中4位是校验码。

设这4位校验码为P1,P2,P3,P4,将他们分别插在发送数据的第1,2,4,8位(第n个就放在 2 n − 1 2^{n-1} 2n1位置)。
在这里插入图片描述
P1在第1 位,对应的二进制位0001,0001第1位为1,因此满足"XXX1"的数据位都可以被P1校验,即P1可以校验第3,5,7,9位(下表红色标记)(同理,P2在第2位,对应的二进制0010,因此满足"XX1X"数据位都可以被校验,即P2可以校验第3,6,7,10位(下表绿色标记))
在这里插入图片描述
对这几个校验位的数值进行异或运算,并令异或的结果为0。
P 1 ⨁ 1 ⨁ 0 ⨁ 1 ⨁ 0 = 0 P1\bigoplus1\bigoplus0\bigoplus1\bigoplus0=0 P11010=0
因此可以得出P1=0。

同理可得P2,P3,P4的值。
在这里插入图片描述
将计算出来的P1,P2,P3,P4放到对应的位置,得到海明码0010011101

2.接收方

假设接收方收到了数据0010010101(我们肉眼可以看出是第7位发生了错误,但是接收方不知道,得算出来是第7位)

还是按照上面的方式,计算P4,P3,P2,P1的与各自校验位的异或值,分别得到0,1,1,1

0111对应的十进制位7,即第七位出错。
在这里插入图片描述

【Tip】通常情况下还要再进行一次全体偶校验,才能知道是发生了1位错误还是两位错误。

理由如表所示,这里第6、7位发生了错误,显然得到的校验结果不是错误的位数。
在这里插入图片描述
因此在最低位(或者最高位)添加全校验位进行一次偶校验

  • 发送方:设置全校验位为1。
    在这里插入图片描述
  • 接收方:若第7位发生错误,将导致偶校验失败;若第6、7位同时发生错误,将导致偶校验成功。
    在这里插入图片描述

因此有如下结论:

①②③④=0000 & 全体偶校验成功→无错误;
①②③④≠0000 & 全体偶校验成功→有1位错,可纠正;
①②③④≠0000 & 全体偶校验失败→有2位错,需重传。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值