奇校验、汉明码和循环冗余码

卸载王者荣耀开始复习,再打王者荣耀,往群里发红包,再12点之后睡往群里发红包
奇校验
百分之90以上的传输错误为一位差错,对差错进行检测比较简单的方法为奇偶校验
下面以奇校验为例解释其检错原理
在除数一串二进制码
校验位_0100010011时
我们传输的数据0100010011含偶数个1
为了保证我们传输的为奇数个1所以在校验位填1
1_0100010011
同理假如我们传送的数据为0101111
为保证奇数个1 校验位我们填0
0_0101111
奇校验的含义在于将传送的数据连同校验位变为奇数个1,不过偶数位发生变化奇校验就失去了检错能力
这样线路比较简单,只需判断奇数即可
汉明码
一位检错能力,汉明码解决了定位出错的位置,知道发生了一位传输错误,那么到底是那一位传送时发生了错误呢?
冗余码的位数 2^r > m + r + 1
m为传送数据位数 r为冗余码位数
这里我们假设传送数据三位011
则冗余码为3位
冗余码的位置也有规定 为2的整数次幂
故这里为 1,2,4,号位
0110 0101 0100 0011 0010 0001
6 5 4 3 2 1
0 1 [] 1 [] []
按第一位含一、、第二位含一........进行分组
每组内参与奇偶校验(这里以奇校验为例)
则从右往左 第一组为 0011 0101 序号3、5 偶数个1 则校验位填1

0110 0101 0100 0011 0010 0001
6 5 4 3 2 1
0 1 [] 1 [] [1]
第二组0011 0110序号3、6 奇数个 填0

0110 0101 0100 0011 0010 0001
6 5 4 3 2 1
0 1 [] 1 [0] [1]
第三组0101 01105、6奇数个 填0
0110 0101 0100 0011 0010 0001
6 5 4 3 2 1
0 1 [0] 1 [0] [1]
最终形成的传送序列 010101
假设第三位产生错误

110        101        100        011        010        001
  6            5            4            3            2            1
  0            1           [0]           0           [0]          [1]

第一个校验码开始检查
1、3、5偶数个1 第一组发生错误 应为 1
第二个
2、3、6偶数个1 应为 1
第三个
4、5、6
奇数个1 应为 0
倒置011索引出发生错误


参考资料:汉明码——计算机网络——全网最通俗的讲解
作者:刘扬俊 原文:https://blog.csdn.net/qq_19782019/article/details/87452394

你可能感兴趣的:(奇校验、汉明码和循环冗余码)