基础知识
原理:通过加一冗余码,来检验或纠错编码
码距:两个二进制数比较,在同一数位的地方,数位值不同的个数有多少个,即码距

如:0100 和 1111码距是多少
1、看:有3个数位值不同,则码距:3
2、异或计算:(异或:相同为0,不同为1)
0100 1111 异或运算 = 1011
有几个1 则码距是多少;码距:3

奇偶校验

可检查1位错误,不可纠错
编码方法:由若干有效信息(如一个字节),再加上一个二进制位(校验位)组称校验码
奇校验:整个校验码(有效信息和校验位)中“1”的个数为奇数。
偶校验:整个校验码(有效信息和校验位)中“1”的个数为奇数。

例:原始编码1011 0111

原始编码中1的个数有6个
奇校验: 1 1011 0111 有奇数(7)个1

  • 传输过程中奇数(3)个数据改变:
    1 10001111,通过奇校验,奇校验码不是奇数(7)个1,而变成偶数(6)个1,则判断数据发现错误,检查出错误。
  • 传输过程中偶数(2)个数据改变:
    1 1001 1111,通过奇校验,奇校验码都是奇数(7)个1,则无法判断数据是否出错

偶校验:0 1011 0111 偶数(6)个1

  • 传输过程中奇数(3)个数据改变:
    0 10001111,通过偶校验,奇校验码不是偶数(6)个1,而变成奇数(5)个1,则判断数据发现错误,检查出错误。
  • 传输过程中偶数(2)个数据改变:
    0 1001 1111,通过奇校验,奇校验码都是偶数(6)个1,则无法判断数据是否出错

总结: 奇偶校验可以检测出奇数个错误而无法检查出偶数个错误,也无法纠正错误,无法定位错误位置。

循环校验码CRC

CRC校验,可校错,不可纠错
编码方法:在k位信息码之后拼接R位校验码。
多项式:一个二进制数码都可用一个系数为0或1的多项式与之对应。

比如:二进制数码 1101
对应的G(x) = 1 * x3 + 1 * x2 + 0 * x1 + 1 * x0 = x3 + x2 + 1

例:信息码:110 0101 0101,生成多项式: x4 + x3 + x2 + 1。CRC编码结果为:
1)多项式对应的二进制码: 11101
2)R = 多项式的最高次幂 = 4
3)拼接:k位信息码 + R位校验码(补0) 110 0101 0101 0000
4)模2除法得余数(异或运算):110 0101 0101 0000 / 11101 取模 0011即校验码
5)结果:110 0101 0101 0000 0011

海明校验码

海明校验,可检错,也可纠错。
原理:在有效信息中加入几个校验码形成海明码,使码距比较均匀地拉大。
并把海明码的每个二进制位分配到奇偶校验组中。
当某一位出错后,就会引起有关的几个校验位的值发生变化,
这不但可以发现错误,还能指出错误的位置,为自动纠错提供了依据

2p ≥ m + p + 1 m:二进制长度,r:校验位

例:
求信息1010的海明码
1)确定海明码位数:2p ≥ m + p + 1,
m = 4 ; 2p ≥ 4 + p + 1;p= 3
海明码位数: m + p = 7;

2)校验位 一般放在 2n (n = 0,1,2……)位置上

计算机组成与体系结构-校验码(7)

3)确定校验位
p1 (001) ----> m3(011) m5(101) m7(111) 二进制最后一位都是1
p2(010) ----> m3(011) m6(110) m7(111)
p3(100) ----> m1(100) m6(110) m7(111)

计算机组成与体系结构-校验码(7)

将m转化为值并根据奇偶校验确定值p的值:

计算机组成与体系结构-校验码(7)
奇校验值:011 0010
偶校验值:101 1010

3)发送,其中有一位错误(奇校验)
错误:011 0110

计算机组成与体系结构-校验码(7)

4)将接收端信息补全

计算机组成与体系结构-校验码(7)

5)奇校验得到e的值 101

计算机组成与体系结构-校验码(7)
101转化为十进制 = 5
则可知第5位出错了。
若最后结果为0,则表示无错

6)纠错:将第5位取反
错:011 0110
改:011 0010

相关文章:

  • 2021-08-08
  • 2021-12-01
  • 2021-05-28
  • 2021-07-23
  • 2021-09-09
  • 2021-12-30
  • 2021-11-27
猜你喜欢
  • 2021-12-10
  • 2021-11-29
  • 2021-09-24
  • 2021-12-10
  • 2022-02-28
  • 2021-10-10
相关资源
相似解决方案