海明不等式:2^r>=k+r+1;
r为冗余信息位,k为信息位;
例子:有数据D=101101,可知数据的位数K=6;
根据不等式可知r=4,即海明码位数6+4=10;
==》
二进制 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 |
X1 | X2 | D1 | X3 | D2 | D3 | D4 | X4 | D5 | D6 | |
值 | ? | ? | 1 | ? | 0 | 1 | 1 | ? | 0 | 1 |
如何插入4位校验码?
按照2的多少次方来定,如2^0,2^1,2^2,2^3,即应当插入在,1,2,4,8位。
求检验码的值,进行分组异或来确定,怎么分组呢?二进制相同位置的数位“1”为一组,这里就是
X1,D1,D2,D4,D5为一组,令五个数异或为0可得X1=0;也可这样想:令这五个数中“1”的个数为偶数个,也可得到X1=0;
以此类推,==> X2=0,X3=0,X4=1.
则海明码为:0010011101
纠错:
假设第五位出错,则接收的数据:0010111101
令之前的4的分组再次异或:
1.X1,D1,D2,D4,D5异或结果为1;
2、0
3、1
4、0
倒过来就是0101,即出错位就是第五位,取反即可。