奇偶校验、海明校验

目录

1.奇偶校验

a.偶校验

b.奇校验

2.海明校验


作用: 为了防止计算机在处理信息的过程中出现错误,将信号采用专门的逻辑电路进行编码以检测错误,甚至校正错误。

方法:在每个字上添加一些校验位,用来确定字中出现错误的位置。

1.奇偶校验

        这种检错必须保证合法数和非法数的数目相等,因为奇数个1和偶数个1的组合的数目是相等的,规定一方为合法数,当有一位数字改变,合法数就会变成非法数,就说明出现错误。

实验原理 :通常是为一个字节补充一个二进制位,称为加偶安慰,用设置校验位的值为0或1,使字节的8位和该校验位含有1值的个数为奇数或偶数,在使用奇数个1的方案进行校验时,称为奇校验;用偶数个1的方案进行校验时,称为偶校验。

a.偶校验

定义:设X = (X0,X1,…,Xn-1)

        C = X0 ⊕ X1 ⊕ …… ⊕ Xn ;当X中有偶数个1的时候,校验位C=0,有奇数个1的时候C=1,即保证 C ⊕ X0 ⊕ X1 ⊕ …… ⊕ Xn始终有偶数个1

形成的校验位C与X0,X1,…,Xn-1一同参与逻辑运算,即

A = C ⊕ X0 ⊕ X1 ⊕ …… ⊕ Xn 若A = 1,说明在传送的过程中 说明有一位发生了变化;若A = 0,说明传送正确。

b.奇校验

定义:设X = (X0,X1,…,Xn-1)

C = X1 ⊕ …… ⊕ Xn ;当X中有偶数个1的时候,校验位C=1,有奇数个1的时候C=0,即保证 C ⊕ X0 ⊕ X1 ⊕ …… ⊕ Xn始终有奇数个1。

形成的校验位C与X0,X1,…,Xn-1一同参与逻辑运算,即

A = C ⊕ X0 ⊕ X1 ⊕ …… ⊕ Xn 若A = 0,说明在传送的过程中 说明有一位发生了变化;若A = 1,说明传送正确。

 

2.海明校验

特点:能检测出二位同时出错,亦能检测出一位出错并能自动纠错。

实验原理:在k个数据位之外加上r个校验位,从而形成一个k+r位的新码字,当某一位出错后,就会引起相关的几个校验位的值发生变化,从而达到检错、纠错的目的。

发现并纠正一位错:校验位r不仅要检验每个数据位是否出错(k个数据位),还需要能够检验校验位本身是否发生错误(r个校验位),还要考虑没有发生错误的情况(1)。所以需要的校验位组合与数据位的关系需要满足

                                                                2^r >= k + r + 1

编码规律:若海明码的最高位号为m,最低位号为1,即HmHm-1…H2H1

        <1> 校验位与数据位之和为m,每个校验位Pi在海明码中被分在位号2^i-1 的位置,其余各位为数据位,并按从低到高诸位一次排列的关系分配各数据位。

 

        <2> 海明码的每一位码Hi(包括数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。这样安排的目的,是希望校验位的结果能正确反映出出错位的位号。

 

校验位的编码规则(发送端):根据每个校验位所参与校验的数据位可得(求Pi相当于奇/偶校验)

 

译码规则(接收端):

                                                S1=P1 ⊕ D1⊕D2⊕D4⊕D5⊕D7

                                                S2=P2 ⊕ D1⊕D3⊕D4⊕D6⊕D7

                                                S3=P3 ⊕ D2⊕D3⊕D4⊕D8

                                                S4=P4 ⊕ D5⊕D6⊕D7⊕D8

线路实现:

 

一般都是高电平输出

假设利用偶校验,

①无错:S1 = 0,S2 = 0,S3 = 0 ,S4 = 0

②一位出错:假设D6出错,则S4S3S2S1=1010,转化为十进制即H10出错,即D6出错,然后对其进行取反操作,纠正错误。

判断一位错还是两位错:

                P5=D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕D8⊕P4⊕P3⊕P2⊕P1

                S5=P5⊕P4⊕P3⊕P2⊕P1⊕D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕D8

任何偶数个数出错,S5一定为0,因此可区分两位出错或一位出错。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值