码距:是指一个编码系统中任意两个合法编码之间至少有多少个二进制位不同。
利用奇偶校验码来查错的编码系统的合法编码之间的最小码距为2。
奇偶校验码:
奇偶校验码的编码方法是:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码。
奇偶校验就是通过在编码中增加一个校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距便为2。
它只能发现错误,而不能矫正错误。
| 十进制数 | 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 0 | 0100 1 |
|---|
| 5 | 0101 | 0101 1 | 0101 0 |
|---|
| 6 | 0110 | 0110 1 | 0110 0 |
|---|
| 7 | 0111 | 0111 0 | 0111 1 |
|---|
| 8 | 1000 | 1000 0 | 1000 1 |
|---|
| 9 | 1001 | 1001 1 | 1001 0 |
|---|
奇校验:整个校验码(有效信息位和校验位)中1的个数为奇数个;
偶校验:整个校验位(有效信息位和校验位)中1的个数为偶数个。
海明码:
在数据位之间插入K个校验位,通过扩大码距来实现检错和纠错。
举例:对于8位的数据位,由
1,校验位的位置应为
则P1对应H1,P2对应H2,P3对应H4,P4对应H8。
则:
H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1
D7 D6 D5 D4 P4 D3 D2 D1 P3 D0 P2 P1
2,
12 = 8+4 #即对应D0到D7的H的数值
11 = 8+2+1
··········
5 = 4+1
3 = 2+1
P1偶校验:P1、D0、D1、D3、D4、D6。#即上面右侧包含有P1对应的1的所有位置的值
P1 = D0^D1^D3^D4^D6 #这里的^为异或符号
将所有的P值全部校验结束,若是求奇校验,则将偶校验的值取反即可。
3,
G1 = P1^D0^D1^D3^D4^D6
偶校验G的值全为0时表示数据无错误,奇校验G的值全为1时表示数据无错误。
循环冗余校验码:
利用生成多项式为K个数据位产生R个校验位来进行编码。循环冗余校验码是由两部分组成,左边为信息码(数据),右边为校验码,若信息码占K位,则校验码占N-K位。N为CRC码的字长,所以又称(N,K)码。
例题:某一个数据通信系统采用CRC校验方式,其中,生成多项式为G(X) =
注意:二进制的除法:
1,相同为0,不同为1;
解答: