在前面讲差错控制方式时,有的编码只能检错,却不能纠错;有的码既能检错,又能纠错。这个到底是由什么决定的呢?
通过一个简单的例子来说明这个问题。我们知道,一个由3位二进制数字构成的码组,总共由8种不同的组合。若将其全部表示天气,则可以表示8种不同的天气,如下:
若其中任一码组在传输中发生一个或多个错码,会发生什么情况呢?
就变成另一个信息码组了,比如说000变成了011,接收端就会将晴天误判为雨天了。
这时接收端是无法发现错误的。
如果在这8种码组中只准使用4种来传送信息,比如:
这时就会有3中情况。比如说码组000,如果000中错了1位,则接收端就可能会接收到100、010、或001。
这3种码组都是不允许使用的,因此接收端就可以认为发现了错码;
但如果000错了2位,接收端就可能收到110、011或101,是允许使用的码组,这样接收端就会产生误判,不会发现错误;
如果3位都错的话,也是不允许使用的码组,因此接收端可以判断出码组是有错误的。
综上,如果接收端收到了禁用码组,即不可用的码组,就可以认为发现了错码。
但要注意的是,虽然发现了错码,但并不知道传输过程中到底是那个码发生了错误,发生了几个错误。
例如说,接收端接收到了100码,虽然是禁用码组,但我们是不知道是000、101、110哪个发生了1个错误造成的,还是011发生3位错误造成的,因此只能发现错误,却不能纠正错误。
那什么样的码可以纠错呢?
我们可以把这个例子中可用的码组再缩小范围。
比如说只用000表示晴天,111表示雨天。其余的码组都是禁用码组,这时如果接收端接收到了001,就可以判断出现了错误,如果认为只发生了一个错误,那么接