校验码,是在计算机进行数据传输的过程中,为了提高数据的可靠性设计的,一般是在信息位以外增加校验位来实现,分为多种编码形式。
名称 | 特点 |
---|---|
奇偶校验码 | 能校验,不能纠错。 |
循环冗余校验CRC | 能校验,不能纠错。 |
海明码校验 | 能校验,也能纠错。 |
1. 奇偶校验码
奇偶校验码由若干位有效信息的头部或者尾部(信息位),加上一个二进制位(校验位)组成。奇校验码即整个校验码中1的个数为奇数;偶校验码即整个校验码中1的个数为偶数。
信息位 | 校验位 | 校验码 | |
---|---|---|---|
奇校验码 | 1001101 | 1 | 10011011 |
偶校验码 | 1001101 | 0 | 10011010 |
注意,
如果有奇数个位产生错误码,则奇偶性发生变化,可以校验出误码,但不能纠错;
如果有偶数个位产生错误码,则奇偶性未发生变化,无法校验出误码(又称“漏检”)。
例如:
编码 | 错误数 | 误码 | 结果 |
---|---|---|---|
1011 | 奇数 | 1001 | 奇校验发生变化。 |
1011 | 偶数 | 1000 | 奇校验未发生变化,漏检。 |
1111 | 奇数 | 1011 | 偶校验发生变化。 |
1111 | 偶数 | 1001 | 偶校验未发生变化,漏检。 |
2. 循环冗余校验(CRC)
CRC可以检错,但不能纠错;检错能力强,漏检率低;虽然运算过程较复杂,但利于计算机硬件实现;广泛应用于数据链路。
学习循环冗余校验码,我们需要先了解异或运算和模2除法运算。
2.1 异或运算
异或运算,相同为0,不同为1。
0⊕0 = 0;0⊕1=1;1⊕0=1;1⊕1=0.
异或运算 | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
2.2 模2除法运算
运算过程概括:
第一步,被除数首位是几商就取几;
第二步,异或运算;
第三步,异或后余数去首位(肯定是0);
第四步,补末位(落数),再上商。
第五步,循环计算至余数位数不足除数位数时,得余数结果。
示例题:
计算1011 0010 000 模2除 1100 1。
解