一个编码系统的码距就是整个编码系统中任意两个码字的最小距离。若一个编码系统有四种编码分别为:0000,0011,1100,1111,此编码系统中0000与1111的码距为4;0000与0011的码距为2,是此编码系统的最小码距。因此该系统的码距为2。
1、在一个码组内为了检测e个误码,要求最小码距应该满足:d>=e+1
2、在一个码组内为了纠正t个误码,要求最小码距应该满足:d>=2t+1
3、在一个码组内同时纠错检错,要求最小码距应该满足:d>=e+t+1
例:假如现在要对A、B两个字母进行编码。可以选用不同长度的编码,以产生不同码距的编码,分析它们的检错纠错能力。
1、若用1位长度的二进制编码。A=1,B=0。这样A、B之间的最小码距为1。合法码:{0,1};非法码:{0,1};
2、若采用2位长度的二进制编码,可选用11,00作为合法编码,也可以选用01,10作为合法编码。若A=11,B=00为例,A、B之间最小码距为2.合法码:{11,00};非法码:{01,10}。
3、若用3位长度的二进制编码,可选用111,000作为合法编码。A、B之间最小码距为3。合法码:{111,000};非法码:{001,010,011,100,101,110}。
只能检测代码中奇数位出错的编码,但不能发现偶数位出错的情况。
海明码的校验码的位置必须是2ⁿ位置(n从0开始,代表从左边数起分别是第1、2、4、8、16、32....),信息码也就是在非2n位置。
设数据位是n位,校验位是k位,则n和k必须满足一下关系:2k≥n+k+1