汉明码计算
现在有一个二进制字符串:10110110111
,我们要计算它的奇偶校验
汉明公式:2^n >= x + n + 1 (n为校验码位数 x为二进制字符串位数)
2^n >= 11 + n + 1
所以得到n=4
校验码位置:2^i(i=0,1,2,…,校验码位数-1)
得到校验码的位置为1
,2
,4
,8
,因此我们可以列出以下表格(红方框表示校验码位置)
然后将需要编码的二进制字符串填入表格中
接着将序号中二进制数第1位(从右往左数)为1、第2位为1、第3位为1、第4位为1的序号以次放入第1、2、3、4组
第1组:1(0011) 3(0011) 5(0101) 7(0111) 9(1001) 11(1011) 13(1101) 15(1111)
第2组:2(0100) 3(0011) 6(0110) 7(0111) 10(1010) 11(1011) 14(1110) 15(1111)
第3组:4(0100) 5(0101) 6(0110) 7(0111) 12(1100) 13(1101) 14(1110) 15(1111)
第4组:8(1000) 9(1001) 10(1010) 11(1011) 12(1100) 13(1101) 14(1110) 15(1111)
分组完成后我们就计算出每一组中序号对应的值中有几个1
第1组:5个
第2组:4个
第3组:5个
第4组:5个
根据每组当中1的个数,我们就能计算出校验码的值,若为奇校验,则校验码为0010;若为偶校验,则校验码为1101
编码后的结果如下
奇校验:101101100110110
偶校验:101101110111101
汉明码计算
https://www.dr0n.top/posts/bf9bf50c/