一、奇偶校验
奇校验:增加一位校验位,使1的个数为奇数
偶校验:增加一位校验位,使1的个数为偶数
奇偶校验只有在出错二进制位个数是奇数的情况下才有效
二、海明码
用冗余数据位来检测和纠正代码差错的理论和方法,特点:
校验位数量:由2>m+k+1决定,其中m为信息码,k为校验码
校验位位置:在2的幂次方位置上(1、2、4、8。。。)
隐藏条件:偶校验,确定校验位数值
1、确定校验位位置
问题1:数据位D3由哪些校验位监督?
3的二进制为0011,从右往左数,
第0个二进制位为1,说明它受2**0=1监督
第1个二进制位为1,说明它受2**1=2监督
第2个二进制位为0,说明它不受2**2=4监督
第3个二进制位为0,说明它不受2**3=8监督
所以2收到校验位C1和C2监督。
也可以换一种思路,3=2+1(类似于IP地址10进制2进制转换的方法),所以受到2和1监督。
问题2:校验位C8监督了哪些数据位?
上图中,右下角的表,从第一列(8)竖着看下来,值为1的行对应的数据位,就是C8监督的数据位。
2、接收方检错和纠错
下图中,第一行和第三行计算结果为1,说明出现了错误。找到它们两个都有的数据,但是其他行都没有的数据,为C5,说明C5出错了,将其取反(改为0),即可纠正。
快速计算方法:将计算结果从下往上排列第得0101,把它看成二进制的0101,转换为十进制为5,说明就是第5位出现了错误。
海明码这里,时间久了再回来看,可能会有些迷糊,但是要写下来可能花的时间不少,要是看着有些迷糊,就去看看视频:软考网络工程师上午计算题四:海明码和CRC校验哔哩哔哩bilibili
三、CRC循环冗余检验
在发送端,先把数据划分为组。假定每组k个比特 CRC运算在每组M后面再添加供差错检测用的n位冗余码,然后构成一个帧发送出去。一共发送(k+ n)位。
这种为了进行检错而添加的冗余码常称为帧检验序列FCS(Frame Check Sequence)。
CRC循环冗余码的计算
加的时候是模2加,也就是异或运算。
余数有n位,就在被除数后面加上n-1个0。最后得到的余数(冗余码)为也为n-1位。4
接收方用收到的数据去除以除数P,如果的到的余数为0,则说明数据没有出错。
广泛使用的生成多项式P(X)
以太网中常用的是CRC-32。
例题
例题1:
例题2:
四、真题
真题2018.5
真题2016.11
被除数为100111,余数有5位。