二进制数据通过传送、存取等环节,会发生误码(1变成0或0变成1),这就有如何发现及纠正误码的问题。全部解决此类问题的方法就是在原始数据(数码位)基础上增长几位校验(冗余)位。
1、码距
一个编码系统中任意两个合法编码(码字)之间不一样的二进数位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。
如图1所示的一个编码系统,用三个bit来表示八个不一样信息中。在这个系统中,两个码字之间不一样的bit数从1到3不等,但最小值为1,故这个系统的码距为 1。若是任何码字中一位或多位被颠倒了,结果这个码字就不能与其它有效信息区分开。例如,若是传送信息001,而被误收为011,因011还是表中的合法码字,接收机仍将认为011是正确的信息。
然而,若是用四个二进数字来编8个码字,那么在码字间的最小距离能够增长到2,如图2的表中所示。
信息序号
|
二进码字 |
a2 |
a1 |
a0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
2 |
0 |
1 |
0 |
3 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
5 |
1 |
0 |
1 |
6 |
1 |
1 |
0 |
7 |
1 |
1 |
1 |
图 1
|
信息序号
|
二进码字 |
a3 |
a2 |
a1 |
a0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
2 |
1 |
0 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
1 |
0 |
0 |
5 |
0 |
1 |
0 |
1 |
6 |
0 |
1 |
1 |
0 |
7 |
1 |
1 |
1 |
1 |
图 2
|
注意,图8-2的8个码字相互间最少有两bit的差别。所以,若是任何信息的一个数位被颠倒,就成为一个不用的码字,接收机能检查出来。例如信息是 1001,误收为1011,接收机知道发生了一个差错,由于1011不是一个码字(表中没有)。然而,差错不能被纠正。假定只有一个数位是错的,正确码字能够是1001,1111,0011或1010。接收者不能肯定原来究竟是这4个码字中的那一个。也可看到,在这个系统中,偶数个(2或4)差错也没法发现。
为了使一个系统能检查和纠正一个差错,码间最小距离必须至少是“3”。最小距离为3时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。编码信息纠错和检错能力的进一步提升须要进一步增长码字间的最小距离。 图8-3的表归纳了最小距离为1至7的码的纠错和检错能力。
|
码距
|
码 能 力 |
检错 纠错 |
1
2
3
4
5
6
7
|
0 0
1 0
2 或 1
2 加 1
2 加 2
3 加 2
3 加 3
|
图3
|
码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。因此,选择码距要取决于特定系统的参数。数字系统的设计者必须考虑信息发生差错的几率和该系统能允许的最小差错率等因素。要有专门的研究来解决这些问题。