检错编码——奇偶校验与循环冗余码CRC校验

奇偶校验

奇偶校验是最简单的数据校验码,在计组时已经学过,它可以检测出一位数据出错或者奇数位数据出错,缺点就是不能确定出错的位置和不能检测出偶数位数据出错。但是在实际数据传输中,一位数据出错的概率比同时多位出错的概率要高,故而奇偶校验码的检错能力低,但还是在实际中广泛应用。

一些概念:

奇偶校验码:在若干有效信息数据位后面加上一位二进制位作为校验位,这样组成了奇偶校验码。

码距:简单来说就是两个二进制数比较,在同一数位的地方,数位值不同的个数有多少个

两种计算码距的方法

比如0100和1111
直接观察法:可以看出,有3个数位值不同,所以码距为3.
异或计算法:0100⊕1111=1011 ,结果为1011,里面有几个1就代表有多少个数位值不同,即码距是多少,这里码距是3。

 怎么计算:(这里以奇校验为例,偶校验即将校验码置为0)

  • 假设我们的原始编码是10110111,因为我们规定计算机采用奇校验,所以我们在原编码最左边多加了一个校验位,并置为1,那么原编码就变成了奇校验码,有奇数(7)个1。
  • 传输过程中奇数个数据改变:在传输过程中有奇数个数位值发生了改变,那么我们通过奇校验运算,可以发现现在变成了6个1,和奇校验码相比有3个数位值发生了改变,奇校验码不再有奇数个1,而是变成了偶数个1,可以判断我们的数据发生了改变,可以检查出错误。
  • 传输过程中有偶数个数据改变:在传输过程中有偶数个数位值发生了改变,那么我们通过奇校验运算,可以发现现在变成了7个1,和原奇校验码7个1一样,都是奇数,这时我们便无法通过奇校验运算判断数据是否发生了改变,即无法检查出偶数个错误。

 循环冗余校验码CRC

CRC码也是检错校验码中的一种。在K位信息位后拼接R位检验位,组成CRC码。他的检错能力要强于奇偶校验。

 一些概念:

 生成多项式:发送端和接受端会有一个生成多项式G(x)约定生成

FCS帧检验序列(冗余码):要传输的数据信息后面加生成多项式的阶位相同的个数0,再与生成多项式进行模二除法的余

原理:

  1. 首先,发送端和接受端会有一个生成多项式G(x)约定,生成多项式G(x)的最高次幂为R。任意一个二进制数码都可用一个系数为0或1的多项式与之对应。例如:二进制数码 1101 对应的G(x)=1*X3+1*X2+0*X1+1*X0= X3+X2+1(说人话就是由发送端与接收端定好)
  2. 求生成多项式的阶,在原数据部分后面加与阶个数相同的0
  3. 2得到的结果与生成多项式进行模二除法,产生的余数FCS序列
  4. 在原来的数据后面加上FCS冗余码,形成CRC码
  5. 接收端收到CRC码后与生成多项式进行模二除法,得到的余数为0代表传输没有差错,否则出错

 以例题举个栗子:

要发送1101 0110 11,生成多项式为10011,求最后应该生成的CRC码

CRC校验以非常接近于1的概率认为传输过程中没有出现差错。我们可以不合理的认为CRC码校验成功传输就没有差错。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值