校验码--奇偶校验码
- 校验码
校验码的作用:为了确保数据在传送过程中正确无误,提高硬件电路的可靠性;二是提高代码的校验能力,包括查错和纠错。如果在传输过程种出现了错误的编码,那么校验码的作用就体现出来了。
码距:一个编码系统种任意两个合法编码之间至少有多个二进制位不同。(例如:4位8421码的码距位1,如果某一位发生了错误,就会变为另一个合法编码)
- 奇偶校验码
奇偶校验码(Parity Codes):编码中增加一个校验位使编码中1的个数为奇数(奇校验),或者1的个数为偶数(偶校验),从而使码距变为2。
如十进制数 4,8421码为0100 ,如果使用奇校验,此时1的个数为1,为奇数,所以校验码为0,奇校验的8421码则为:0100 0。偶检验的8421码则为: 0100 1.
以下为 8421码的奇偶校验码
十进制数 |
8421BCD码 |
带奇校验位的8421码 |
带偶校验位的8421码 |
0 |
0000 |
0000 1 |
0000 0 |
1 |
0001 |
0001 0 |
0001 1 |
2 |
0010 |
0010 0 |
0010 1 |
3 |
0011 |
0011 1 |
0011 0 |
4 |
0100 |
0100 1 |
0100 0 |
5 |
0101 |
0101 0 |
0101 1 |
6 |
0110 |
0110 0 |
0110 1 |
7 |
0111 |
0111 1 |
0111 0 |
8 |
1000 |
1000 1 |
1000 0 |
9 |
1001 |
1001 0 |
1001 1 |
从图表可以看出,当使用奇数校验的时候。1为奇数的时候,校验位为0,当1为偶数的时候,校验位为1。
当使用偶数校验的时候。1为奇数的时候,校验位为1,当1为偶数的时候,校验位为0。
当数据传输发生错误的时候,就可能会导致校验位的奇数偶数发生变化,从而知道是否发生对了错误,但是也仅仅是知道发生了错误,却不知道错误发生在哪。并且如果使用奇或者偶校验码,仅仅会知道奇或者偶发生了错误,但是无法保证其编码内偶或奇是否发生了错误。
其他奇偶校验码:
为了更精密的加强校验性,又分为水平奇偶校验码、垂直校验码合水平垂直校验码。
这是将多组数据以矩阵的方式 进行排列,分别在行、列、行和列处放入校验码。
表 1 程序员教程内的图表