汉明码计算

现在有一个二进制字符串:10110110111,我们要计算它的奇偶校验

汉明公式:2^n >= x + n + 1 (n为校验码位数 x为二进制字符串位数)

2^n >= 11 + n + 1

所以得到n=4

校验码位置:2^i(i=0,1,2,…,校验码位数-1)

得到校验码的位置为1248,因此我们可以列出以下表格(红方框表示校验码位置)

然后将需要编码的二进制字符串填入表格中

接着将序号中二进制数第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/
作者
dr0n
发布于
2021年9月1日
更新于
2024年3月21日
许可协议