3.1 检错与纠错
3.1.1 基本概念
比特差错:比特在传输过程中,1可能会变成0,0可能变成1
码字:n = m + r,其中m个数据位(即报文)和r个冗余位(校验位)
海明码距:两个码字中不相同的二进制位的个数
两个码字的码距:一个编码系统中任意两个合法编码(码字)之间不同的二进制位数
编码系统的码距:整个编码系统中任意两个码字的码距的最小值
误码率:传输错误的比特占所传输比特总数的比率
海明研究发现:检测d个错误,则编码系统码距 ≥ d + 1;纠正d个错误,则编码系统码距 > 2d
3.1.2 海明码
设海明码校验位为k,信息位为m,则它们之间的关系应满足
。
下面以原始信息101101为例:
1.确定海明码校验位长
m为信息位长,m=6,根据上述关系式,解不等式可知最小k为4,即校验位为4,信息位加校验的总长度为10位。
2.推导海明码
1)填写原始信息
习惯上将校验位从左至右安排在1、2、4、8...的位置上,原始信息则从左至右填入剩下的位置。如下图,校验位处于B1、B2、B4、B8位,剩下位为信息位从左至右依次填写:
2)计算校验位
根据公式得到校验位(表示异或运算)
为什么要这么做异或?
把除去1、2、4、8(校验位位置值)之外的3、5、6、7、9、10值转换为二进制位,如下表:
信息位 | 信息位编号的十进制 | 信息位编号的二进制 | |||
第4位 | 第3位 | 第2位 | 第1位 | ||
B3 | 3 | 0 | 0 | 1 | 1 |
B5 | 5 | 0 | 1 | 0 | 1 |
B6 | 6 | 0 | 1 | 1 | 0 |
B7 | 7 | 0 | 1 | 1 | 1 |
B9 |