奇偶校验码,海明码,

奇偶检验码

一个二进制码字,如果它的码元有奇数个1,就称为具有奇性。例如,码字“10110101”有五个1,因此,这个码字具有奇性。同样,偶性码字具有偶数个1。注意奇性检测等效于所有码元的模二加,并能够由所有码元的异或运算来确定。对于一个n位字,奇性由下式给出:奇性=a0⊕a1⊕a2⊕…⊕an

奇偶校验可描述为:给每一个码字加一个校验位,用它来构成奇性或偶性校验。可以看出,附加码元d2,是简单地用来使每个字成为偶性的。因此,若有一个码元是错的,就可以分辨得出,因为奇偶校验将成为奇性。奇偶校验编码通过增加一位校验位来使编码中1个个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。因为其利用的是编码中1的个数的奇偶性作为依据,所以不能发现偶数位错误。
 

奇偶校验码  keywords:(1)正确与否的表示,0表示正确,1表示检)验不通过(海明码可用)。

(2)校验码位置,一般放在高位(题目中若为低位也可以为低位)。

  (3)奇偶的区别:数1出现的次数。如果1出现的次数为奇数,则表示奇校验通过;如果数1的次数为偶数,奇校验不通过,偶校验通过;

  (4) 数原编码。

例题(1)110100111  1的个数为6个,奇校验不通过为1;偶检验通过为0;

(2)001000111     1的个数为4个,奇校验不通过为1;偶检验通过为0;

(3)010110011     1的个数为5个,奇校验通过为0;偶检验不通过为1;

海明码

海明码(也叫汉明码)具有一位纠错能力。本文以1010110这个二进制数为例解释海明码的编码和校验方法。

  编码

  确定校验码的位数x

  设数据有n位,校验码有x位。则校验码一共有2x种取值方式。其中需要一种取值方式表示数据正确,剩下2x-1种取值方式表示有一位数据出错。因为编码后的二进制串有n+x位,因此x应该满足

2x-1 ≥ n+x   

  使不等式成立的x的最小值就是校验码的位数。

本质:分组奇偶校验码

确定校验位个数

海明码的码组长度需要符合:2^r – 1 (r代表校验位个数)

为什么是这个公式呢?因为:只有这样才能保证校验位足够覆盖整个需要校验的码组。

比如说:校验位有3位,那就是2^3 = 8 – 1 = 7 这样就可以校验长度为7的码组,如果按实际来说,也就是信息位 4 位,校验码 3 位。

通过上面分析,我们知道校验位 r 加上信息位 k 就等于 2^r – 1 , 这也就是为什么书上有 k + r <= 2^r – 1 的原因,下面是一些 R 和 K的关系表

信息码位数12~45~1112~2627~5758~120
校验码位数234567

注:表中数据取自网络

确定校验位的位置

知道了需要多少位校验码,还需要知道把校验码放在哪个位置上才行,这个只要记住,信息位在非2n的位置上,而校验位是在2n的位置上就可以了,条件再严格点就是,书上说的信息位所在海明码中的下标是需要等于前面几个校验组的下标,看到这里不懂没有关系,下面进行简单的例题分析。

举个粟(例)子:

信息字码组 : 1101 , 这时候信息位 k = 4 , 根据 k + r <= 2^r – 1 ,得出 r = 3 , 那就按书上说的,用P1、P2、P3来表示这3位校验码,这时候我们就来做填字格游戏。

P1 P2 1 P3 1 0 1

位置就这么简单的确定下来了,如果位数更多的话也是一样的,校验位就是在 1、2、4、8、16…….这些位置上。

计算校验位 Pi

上面已经知道要在什么位置插入校验码,现在就差下锅的料了,怎么求校验位实际的值呢?很简单!

根据海明码定义,是通过将信息进行分组,才得以实现检错和纠错的能力,就像一开始的图,每一个Pi都会包含3个信息位。

问题来了,那我怎么知道这些信息位是哪几个?还是书上的定义……

重点

比如说信息 1 1 0 1 ,从上面填字格游戏我们可以看出,被分别安排在 H3,H5,H6,H7的位置(这些位置怎么来的?7位数从1到7给每位编号嘛!)

则:H3 = H1+H2 (这里是等式右边下标相加等于等式左边下标的意思,下面一样)

H5 = H1+H4

H6 = H2 + H4

H7 = H1 + H2 + H4

通过上面的关系式,我们可以看出,右边在海明码中的数位,正好都是校验码的位置,下面来正式求校验码了。

P1(H1) = H3 ⊕ H5 ⊕ H7 (⊕表示异或)

P2(H2) = H3 ⊕ H6 ⊕ H7

P3(H4) = H5 ⊕ H6 ⊕ H7

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值