检错与纠错
差错的区别
单个位差错 | 突发性差错 |
---|---|
几乎不发生 | 常发生 |
差错长度(第一个差错位和最后一个差错位) |
块编码
- 码字(n) = 数据字(k) + 冗余位(r)
- 汉明距离:两个相同长度的字之间不同位数
- 最小汉明距离:在一组相同长度的字之间最小不同位数
检错码 | 纠错码 |
---|---|
块编码的最小汉明距离=检错位数+1 | 块编码的最小汉明距离=2*纠错位数+1 |
线性块编码
- 任意两个有效码字的异或生成另一个有效码字
- 线性块编码的最小汉明距离:具有最少1的个数的非0有效码字中1的个数
- Example
- 一组码字:00000,01011,10101,11110
- 非0码1的个数分别为:3,3,4
- 故最小汉明距离 = 3
- 一组码字:00000,01011,10101,11110
- Example
| 几种常见线性块编码 | 检错效果 | 说明 | | — | — | — | | 简单奇偶校验码 | 检错奇数位 | 默认是偶校验 | | 汉明码【C(n, k)】 | 检错2位,纠错1位 | $n = m + k$ (k:数据位,n:码位,m:校验位个数) $n = 2^m - 1$ | | 循环冗余校验码(CRC)【同时也是循环编码】 | | $n = m+k$(:数据位,n:码位) 所使用的除数:$n-k+1$
至少有两项 且 $x^0$ 的系数是1 生成多项式不能整除 $x^t$ + 1 包含因子(x+1) |
- CRC——多项式运算(课后习题例24)
- 加减:相同,删除相同项,把不同项结合在一起
- 乘法:先数学相乘,再使用加减的规则
- 除法:
校验和
- 反码运算相加
- Example 1
- 传输(7,11,12,0,6)
- 7+11+12+0+6 = 36
- 36 = 100100 $\rightarrow$6 = 0110(和,由左边超出部分与右边部分相加,即 0100 + 0010) $\rightarrow$ 9 = 1001(检验和,即反码)
- 传输(7,11,12,0,6)
-
Example 2
- Example 1