一、海明码的形成方式:
1、首先海明码是由信息位和校验位组成的
2、信息位校验位的关系 校验位的位数r 信息位的位数i 2^r - 1 >= i+r
3、校验位的位置是2的整数次方 如 1 2 4 8 ......
4、海明码位数分组
(因为海明码其实是分组的奇偶校验码,所以有个分组的概念)
1 - 1、3、5、7
2 - 2、3、6、7
4 - 4、5、6、7
规律是:海明码的每一位数都由若干校验位校验,校验位本身也被校验。
每个被校验位的位数(即在海明码中的位置)等于校验位位数的和
5、分组后 计算校验位的方式:
配偶原则:该组的1的个数为偶数个 ∑pi % 2=0
配奇原则 :该组的1的个数为奇数个∑pi % 2=1
二、海明码为什么可以校验1位错?
1、为什么能发现错
由于海明码在生成时,就按照配偶原则或者配奇原则来,因此只要有错误,我们就会从校验组的
计算中发现,如按配偶原则来生成的海明码,发现某一组中1的个数为奇数,那就说明这一组出
了一个错。
2、怎样确定是哪一位错
我们需要计算出每一组的“配置参数”,(这个词是我自己造的)配置参数为1,代表该组的1的个
数 不符合生成时的配置原则,配置参数为0代表该组1的个数符号生成海明码时的配置原则。
根据由各组的配置参数按组号从大到小顺序组成的一串2进制数,我们可以直接算出哪一位错
了。
3、为什么可以发现是哪一位错?
因为分组时,第i组独占第2^(i-1) 位,第i组和第j组共享第2^I'(i-1)+2^(j-1) 位,以此类推。
因此,在我们找是哪里出错时,我们可以通过计算每一组的配置参数来看该组有没有出错
只要把每一组的配置参数都算出来,就可以根据被校验位共享的机制,精确计算出出错位的
位置了。