<一>奇偶校验码
奇偶校验码的实现原理非常简单。分为水平奇偶校验,垂直奇偶校验和水平垂直偶校验。
- 水平奇偶校验
水平奇偶校验以一个字节为一个校验单位。在每个字节的尾部加上一个校验位,构成带有校验位的码组,使得码组中‘1’的个数为偶数个(偶校验) 或奇数个(奇检验)。进行数据传送时,把整个检验码发送出去。比如有两个字节分别是 10110110 和 11101110,它们的奇校验码分别对应为 101101100和 111011101,使这两个码组中‘1’的个数为奇数个。
接收端在收到信号后,对每个码组检查其‘1’的个数,如果‘1’的个数为奇数(奇校验)或偶数(偶校验)就认为收到的数据正确,否则认为该码组有错,要求发送方重传。
显然,奇偶校验只能检测出码组中有奇数个位出错的情况,如果正好有偶数位(2 位、4 位、6 位等),奇偶校验是无能为力的。
- 垂直奇偶校验
垂直奇偶校验是在整个数据段所有字节的某一位上进行奇偶校验,如表2—1 所示,该数据段由 8 个字节组成,垂直奇偶校验分别对所有字节的第 0 位、1 位⋯⋯7 位进行。该表中是进行奇校验。
表 2 — 1 垂直奇偶校验
位 7 |
位 6 |
位 5 |
位 4 |
位 3 |
位 2 |
位 1 |
位 0 |
|
---|---|---|---|---|---|---|---|---|
字节 1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
字节 2 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
字节 3 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
字节 4 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
字节 5 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
字节 6 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
字节 7 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
字节 8 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
校验字节 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
表 2 — 2 水平垂直奇校验
位 字 节 |
位 8 |
位 7 |
位 6 |
位 5 |
位 4 |
位 3 |
位 2 |
位 1 |
水平校验位 |
---|---|---|---|---|---|---|---|---|---|
字节 1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
字节 2 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
字节 3 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
字节 4 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
字节 5 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
字节 6 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
字节 7 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
字节 8 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
垂直校验位 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
- 水平垂直奇偶检验
它是水平奇偶校验和垂直奇偶校验的综合,即对每个字节进行校验,又在垂直方向对所有字节的某一位进行校验,因此又称为矩阵码。表 2—2 是水平垂直奇偶检验(奇校验)的示意。矩阵码既可以检测出奇数个错,也能检测出偶数个错。