数据传输的过程中会发生错误,我们如何发现并对其进行修改呢?
奇偶校验码
校验原理
若传输的数据有四个信息,这里只有四种状态,需要两个bit映射。
信息 | A | B | C | D |
---|---|---|---|---|
编码 | 00 | 01 | 10 | 11 |
码字:有若干的代码组成的一个字(编码)叫码字。上表的00、01就为码字。
两个码字之间的距离:两个码字,每位比较,具有的不同的位数的个数为两个码字之间的距离。
码距:一种编码方案可能有若干合法的码字,所有码字之间最小的距离为码距。
若两台计算机相互传输数据
若码距为1,若发生数据的跳变,有码字只发生一位数据的改变,计算机大概率不会察觉。
这时候 上面的数据可以使用3bit的数据进行表示,有四个冗余的非法状态。且该编码的码距为2。
信息 | A | B | C | D |
---|---|---|---|---|
编码 | 100 | 001 | 010 | 111 |
这种情况下,数据如果发生了1个bit的数据跳变,就会变为一个非法的状态,这时候计算机就会发现发生了非法的跳变。
因此,编码方案的码距和该方案的检错能力有一定关联。
码距 | 能力 |
---|---|
1 | 无能力 |
2 | 有检错能力 |
3+ | 若设计河里、会有检错、纠错能力 |
奇偶校验
奇校验码:整个校验码(有效信息位+校验位)中“1”的个数位为奇数个。
偶校验码:整个校验码(有效信息位+校验位)中“1”的个数位为偶数个。
校验位可能在信息位的前面。也可能在信息位的后面
Ex:若给出两个编码1001101和1010111、给出其对应的奇偶校验吗。
1001101:
奇校验:11001101 偶校验:01001101
1010111:
奇校验:01010111 偶校验:11010111
偶校验位的硬件实现(进行异或运算):将所有的位一起进行异或出的结果就位偶校验位。
偶校验
若将偶校验码进行异或计算,若结果为1的话,说明出错。
但若偶数的bit位发生错误,无法发现其发生了错误。
奇校验
若将奇校验码进行异或计算,若结果为0的话,说明出错。
但若偶数的bit位发生错误,无法发现其发生了错误。