347 字
2 分钟
常用的校验方法
奇偶校验
简单常用的校验方法,通过编码中 “1” 的个数进行校验。
- 奇校验:原始码补校验位后,编码中 “1” 的个数为奇数
- 偶校验:原始码补校验位后,编码中 “1” 的个数为偶数
原始码 | 奇校验 | 偶校验 |
---|---|---|
0000 0001 | 0000 0001 0 | 0000 0001 1 |
1000 1000 | 1000 1000 1 | 1000 1000 0 |
1100 0100 | 1100 0100 0 | 1000 1000 1 |
累加和校验
累加和校验的方法有很多种,一般是在多个字节的数据流后增加1个字节的校验数据。
原始编码:10H : EFH : A5H
不进位累加:10H + D2H + A5H = 87H
最终编码:10H : EFH : A5H : 87H
海明校验码
CRC校验
常见的CRC多项式:
CRC算法名称 | 多项式 | BIN | HEX |
---|---|---|---|
CRC-4 | 10011 | 0BH | |
CRC-8 | 100001011 | 10BH | |
CRC-8 | 100110001 | 0131H | |
CRC-16 | - | 018021H | |
CRC-16 | - | - |
原始码:CAH = 11001010b
使用 CRC-4 算法( )进行校验,模2除法 计算4位余数作为CRC:
- 在原始码上增加4个0,得到 1100 1010 0000b
- 模2除法,被除数是 1100 1010 0000b,除数是 10011b
- 得到余数(CRC校验码)是 0100b
- 将原始码与余数 异或,得到发送的数据是 1100 1010 0100b
在另一端收到数据后,也同样使用 CRC-4 算法进行校验:
- 收到数据 xdata
- 模2除法,被除数是 xdata,除数是 10011b
- 如果余数为0,数据正确;如果余数不为0,数据错误