当原位码为n=11位的时候,k最少为4,则检测码最少为n+k=15位。 若检测码4位为$P_1,P_2,P_3,P_4$ 则其位置分别在1,2,4,8 若输入的数(原码)为00000000011,则其插入校验位的后为
首先,我们要知道,校验位的值代表了代码字中部分数据位的奇偶性(最终要根据是采用奇校验,还是偶校验来确定),其所在位置决定了要校验的比特位序列。
每一个校验位 ,要校验的 比特位序列计算规则如下:
Pn(第 n 个校验位,也是整个信息码字的第n位)的校验规则是:从当前位数起,校验$2^{n-1}$位,然后跳过$2^{n-1}$位,再校验$2^{n-1}$位,再跳过$2^{n-1}$位,……
比如P1,就是从第1位起,也就是从P1起,校验1位,然后跳过1位,再校验1位,...... 那么P1要校验的码字为:$P_10000001$
P2,就是从第2位起,也就是从P2起,校验 2 位,然后跳过2位,再校验2位,...... 那么P2要校验的码字为:$P_20000011$
从P3起,校验4位,然后跳过4位,再校验4位,...... 推出P3要校验的码字为:$P_30000011$
从P4起,校验8位,然后跳过8位,再校验8位,...... P4要校验的码字为:$P_40000011$
根据上面获得比特位序列得知, P1 校验码校验的位数是8位。这8位中除了第1位(也就是 P1 位)不能确定外,其余7位的值都是已知的,分别为:0、0、0、0、0、0、1。现假设采用的是偶校验(也就是要求整个被校验的位中的“1”的个数为偶数;如果“1”的个数为奇数,则是奇校验),从已知的7位码值可知,已有1个“1”,所以此时P1位校验码的值必须为“1”,才能使得“1”的个数为偶数,故得出$P_1 = 1$(换句话说就是做异或运算)
依次推算出P2 = 0,P3 = 0,P4 = 0
最后得出汉明码为:$100000000000011$