海明码,码距,海明校验码

海明校验码是由RichardHamming于1950年提出、目前还被广泛采用的一种很有效的校验方法。它的实现原理,是在k个数据位之外加上r个校验位,从而形成一个k+r位的新的码字,使新的码字的码距比较均匀地拉大。
这种海明校验的方法只能检测和纠正一位出错的情况。所以如果有多个错误,就不能查出了。

什么是码距?

两个码组对应位上数字的不同位的个数称为码组的距离,简称码距,又称海明(Hamming)距离。
计算码距的一种方法,就是对两个位串进行异或(xor)运算,并计算出异或运算结果中1的个数。
例如110和011这两个位串,对它们进行异或运算,其结果是:
110⊕011=101;
异或结果中含有两个1,因此110和011之间的码距就等于2。
简单来说,就是,两对应相同位数的不同即码距+1,从首位开始对应;
例如00110和00100码距为1,12345和13344码距为2,Caus和Daun码距为2,1011001和10110110码距d=2

校验码

海明校验码公式(假设为k个数据位设置r个校验位
2^r-1>=k+r(能得知r和k的关系)

码:101

k=3
2^r-r>=k+1=4
易错点:2^r=r个2相乘,不是2乘r
选最小的码距
最小r为3
海明码长度:r+k=3+3=6

注意:海明校验码是放在2的幂次位上的,即“1,2,4,8,16,32······
所以校验码位数有规律,相对码位对应相对的校验码位数
1: 2
2~4: 3
5~11: 4
12~26: 5
27~57: 6
58~120:7

海明吗1234567
1,2,4是校验位,3,5,6,7是数据位
那么101:
信息位的位置分配是从高位到低位依次存放
第一个1是表格的第6位

1 2 3 4 5 6
1 0 1
r1 r2 r3

校验原则:被校验的海明位的下标等于所有参与校验该为的校验位的下标之和

1 r1
2 r2`
3=1+2 r1,r2 1
4 r3
5=4+1 r3,r1 0
6=4+2 r3,r2 1

同0,异1

r1:101 =1//101是校验了3、5、6
r2:10=1
r3:01=1

按照从低位到高位的排列顺序得到海明码:111101

那么码为1,怎么求海明码?

你可能感兴趣的:(软考,数据结构)