首页 > 编程知识 正文

介绍生活中的科学原理,海明校验码例题八位

时间:2023-05-04 19:12:17 阅读:138643 作者:4708

什么是海明校验码?

Richard Hamming于1950年提出并被广泛采用的一种有效检测方法,是只需增加少量奇偶校验比特就能检测出两位并行错误,甚至能检测出一位错误,并能自动恢复其错误比特正确值的有效手段

其实现原理是,通过在k个数据比特的基础上再加上r个奇偶校验位,形成k r比特的新码字,比较均匀地扩展新码字的码间距离。 将数据的每个二进制位分配给几个不同的奇偶校验位的组合,如果某个位出错,则某些相关奇偶校验位的值会发生变化。 这不仅可以发现错误,还可以指出哪些位是错误的,作为进一步自动纠错的依据。 (来源百度百科)

简单地说:汉明校验码为能够纠正1比特错误并检测2比特错误的自动恢复错误比特的校验码。

编码原则:

假设数据位的位数为 k 位,校验位数为 r 位,则创建xldhxc时必须满足汉明不等式。 也可以理解为信息位为k位,增加r位冗余位,构成一个nkr位的码字,汉明不等式也可以表示为如下。

在汉明不等式——中,1指示任何状态信息中没有错误,其馀的状态信息用于指示错误发生并发生在哪个位,并且校验位也发生错误在这里说明一下吧。 汉明校验码在设计之初就可以发现错误并进行修正,所以在看这个不等式的时候请保持错误发生的角度来看。 )

数据位与奇偶校验位的对应关系表:

信息代码位数1

2~45~1112~2627~5758~120校验码的位数为234567,在实际运用中应该是这样。 详情请参阅评论区域的说明。 再次感谢您— k+r — (*^_^* )

信息代码的位数1-3

4-1011-2526-5657-119校验数位45678

猫猫官人

设xldhxc的最高位的位数为m,最低位的位数为1,xldhxc为Hm Hm-1 H1。 xldhxc的xldhxc编制的基本规则:如下所示。

)1)奇偶校验位和数据位的数量之和是m,每个奇偶校验位Pi被xldhxc划分为位号为的位置,且剩下的每个比特是数据位Di,并且数据位从低位到高位顺序布置。

) xldhxc的编码规则(包括数据位和奇偶校验位本身)由每一位码校验,其中被校验的每个比特编号校验其每个奇偶校验位

3 )在增大合法码的码间隔的情况下,尽量均匀地增大所有的多个校验位,以提高对所有码的检错能力的平衡。

码距

那么什么是码距呢?任何一个代码都由码字组成,任意两个码字之间变化最小的二进制数被称为“数据校验码的代码间隔”。

——码间隔大于或等于2的数据校验码现在具有检错能力。 码距离越大,纠错能力越强,但无论如何变化,检错能力总是在纠错能力以上。

码距:位的二进制编辑xldhxc。

根据http://www.Sina.com/xldhxc不等式,因为在这个主题中数据位数量k=8,所以校验位数量r=5,所以xldhxc的位数为k r=13。

xldhxc :

举例说明:奇偶校验比特与数据比特的数量之和为m,每个奇偶校验比特Pi由xldhxc分成比特编号为的位置,剩下的每个比特为数据位Di,从下到上依次排列每个数据位

根据该规则,可以看出,奇偶校验位Pi应该位于1、2、4、8、16的位置,但是因为xldhxc总共是13个比特,所以应该位于第十六个位置的奇偶校验位实际上可以位于第十三个。

每个比特对应于——

通过http://www.Sina.com/http://www.Sina.com/(包括数据位和奇偶校验位本身)可检查解:xldhxc的关系

错误的xldhxc编号与奇偶校验位编号的关系:

xldhxc标签

数据位奇偶校验位

参加检查的奇偶校验位

奇偶校验位xldhxc位编号=奇偶校验位编号之和

H1

P1

1

1=1

H2

P2

2

2=2

H3

D1

一、二

3=1 2

H4

P3

4

4=4

H5

D2

1,4

5=1+4

H6

D3

2,4

6=2+4

H7

D4

1,2,4

7=1+2+4

H8

P4

8

8=8

H9

D5

1,8

9=1+8

H10

D6

2,8

10=2+8

H11

D7

1,2,8

11=1+2+8

H12

D8

4,8

12=4+8

H13

P5

13

13=13

通过观察上面的表格,我们可以发现,5个校验位只与本身有关,数据位则与多个校验位有关。D1由P1和P2校验、D3由P2和P4校验... ...

P1校验D1、D2、D4、D5、D7

P2校验D1、D3、D4、D6、D7

P3校验D2、D3、D4、D8

P4校验D5、D6、D7、D8

其中D4和D7都出现了三次,其余的数据位置出现了两次,这就说明对于每一个数据位的校验能力是不均衡的(不符合规则三的要求),为了平衡一下,因此我们增添P5。

P5校验D1、D2、D3、D5、D6、D8

就此我们可以得出一个结论:当一位数据位Di发生变化时,必将引起三个校验位Pi的变化,即合法的xldhxc的码距都为4。

根据上面的校验关系,我们写出校验位的偶校验方程:

那么什么是偶校验呢?

奇偶校验码:

——发送方:附加1位冗余位,使码字中“1”的个数保持为奇数或偶数。

——接收方:根据所收到的码字中“1”的个数是奇数或偶数判别是否有传输差错。

所以偶校验就是附加1位冗余位,使得码字中“1”的个数保持偶数个。奇校验就是附加一位冗余位,使得码字中“1”的个数保持奇数个。 

(来源自我的之后的博客!) 

偶校验方程:(⊕为异或符号(其实这里取巧了,因为当“1”的个数是偶数个时,经过异或运算之后结果就为0了。)

P1=D1⊕D2⊕D4⊕D5⊕D7

P2=D1⊕D3⊕D4⊕D6⊕D7

P3=D2⊕D3⊕D4⊕D8

P4=D5⊕D6⊕D7⊕D8

P5=D1⊕D2⊕D3⊕D5⊕D6⊕D8

那么我要是进行奇校验,那怎么书写奇校验方程呢?

在原方程的基础上加上一个⊕1就好了,譬如上面的P1就变成了P1=D1⊕D2⊕D4⊕D5⊕D7⊕1。

你要是觉得这个花里胡哨, 那来一点实在一点的,直接按照奇偶校验的原理来求解校验位的取值!

假设要传送的数据为:10110110,那么:

P1校验D1、D2、D4、D5、D7

P2校验D1、D3、D4、D6、D7

P3校验D2、D3、D4、D8

P4校验D5、D6、D7、D8

P1对应的校验数据为01010(75421),如果是偶校验,01010中“1”的数目为偶数个,所以P1=0;如果是奇校验,01010中“1”的数目为偶数个,所以为了凑足奇数个,所以P1=1。

P3对应的校验数据为1011(8432),如果是偶校验,1011中“1”的数目为奇数个,所以为了凑足偶数个,所以P3=1;如果是奇校验,1011中“1”的数目为奇数个,所以P3=0。

接下来看看xldhxc如何进行检错和纠错的!

检错和纠错机制:

假设发送端发送的数据为D8~D1,海明校验位的取值就是P1、P2、P3、P4、P5,;在数据接收端,接收到的海明校验码为、、、、。

令:S1=⊕P1、S2=⊕P2、S3=⊕P3、S4=⊕P4、S5=⊕P5。

当S1~S5全为零时,表示无错。(因为S1~S5都为零,表示~和P1~P5完全相同;说明接收端和发送端的数据完全一样,没有发生错误。)

当S1~S5中仅有一位不为0时,说明有一个校验位出错。

当两位不为零时,表示两位xldhxc出错。

当三位不为零时,表明一个数据位出错。出错的xldhxc位号由S4~S1四位的编码值得出。(因为一个数据位的变化必将引起三个校验位的变化,所以当三位不为零时,就表明一定有一个数据位出错了。)

当中有4位或5位不为0时,表明出错情况严重,系统可能出现故障,应该检查系统硬件的正确性。

举例说明:如果要传送的数据为:10110110,请编写xldhxc。

根据校验方程求得:P1=0,P2=0,P3=1,P4=1,P5=1;所以,xldhxc为1101110111000

假设在传送过程中发生了错误,接收方接收到得数据为10111110,D4位由0变成了1,发生了错误,根据校验方程,求得:

=1、=1、=0、=1、=1;因此求得S1=1、S2=1、S3=1、S4=0、S5=0。

由于S1~S5中有3个不为零,由此可以判断有一个数据位出现了错误;又因为S4~S1的编码为0111,说明第7位xldhxc出错,也就是D4出错了。

Ending... ...

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。