校验码
校验码基础概念
所谓的校验码就是在原有信息的基础尚,增加一定冗余信息来帮助校验的功能,它广泛应用于通信、存储、网络传输等领域,以确保数据的完整性和准确性。
码距
任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为校验码的码距
奇偶校验码
原理:在数据中添加一个校验位,使数据中1的个数为奇数(奇校验)或偶数(偶校验)。
示例:
数据1011001
(奇数个1)
奇校验:添加0
,变为10110010
偶校验:添加1
,变为10110011
特点:
简单易实现但无法纠正错误。
只能检测奇数个比特错误,无法检测偶数个比特错误。
CRC循环校验码
原理:通过多项式除法生成校验码,附加在数据后传输。
示例:
数据:1101011011
生成多项式:x^4^ + x + 1
(对应二进制10011
)
计算CRC校验码并附加到数据后。
检测能力强,能检测多位错误但计算复杂度较高。
广泛应用于网络通信和存储系统。
海明码
原理:在数据中插入多个校验位,使每个校验位覆盖特定的数据位。
示例:
数据:1011
插入校验位后:0110011
(可检测并纠正单个比特错误)
不仅能检测错误,还能纠正单个比特错误。
适用于需要高可靠性的场景(如内存纠错)。
海明校验位求取
2r>=m+r+1
r
:校验位位数最小值
m
:信息位的个数
校验码位数 | 校验码位置 | 检错 | 纠错 | 校验方式 | |
---|---|---|---|---|---|
奇偶验证 | 1 | 一般拼接在头部 | 可检奇数位错 | 不可纠错 | 最终1的个数为奇数还是偶数 |
CRC循环冗余验证 | 生成多项式最高次幂决定 | 拼接在信息位尾部 | 可检错 | 不可纠错 | 模二除法求余数,凭借做校验位 |
海明校验 | 2r>=m+r+1 | 插入在信息位中间 | 可检错 | 可纠错 | 分组进行奇偶校验 |