比如有一道题是:
已知被校验的数据为6位二进制数,D=101101,求其海明码表示方法。
解体的原理及步骤如下:
若有k位数据,需要n位校验位 满足关系k+n<=2^n,此处k=6,则n=4
海明码是由数据与校验位组合而成的。其组合规则为:将数据与校验码自左至右进行编码(D1D2D3...D10,下标是编号),其中编号为2的幂的位均为校验位(第1,2,4,8位),其余为数据位。
则生成的码字为:ab1c011d01
再将每一数据位的编号展开成2的幂的和:
3=2+1 ;5=4+1; 6=4+2; 7=4+2+1; 9=8+1; 10=8+2
可以这样理解:编号为3的数据位与编号为1和2的校验位有关
然后逆向来关注校验位,
a(也即编号为1的校验位)与 编号为 3,5,7,9,的数据位有关,则 a=d3^d5^d7^d9(^是异或运算的意思)=1^0^1^0=0
同理:
b(也即编号为2的校验位)与 编号为 6,7,10的数据位有关,则 a=d6^d7^d10=1^1^1=1
c(也即编号为4的校验位)=d5^d6^d7=0^1^1=0
d(也即编号为8的校验位)=d9^d10=0^1=1
求出a,b,c,d 后就可以得到编好的海明码了
结果是:0110011101