首页 > 代码库 > 校验码 -> 奇偶校验

校验码 -> 奇偶校验

何谓奇偶校验?


奇偶校验是一种简单有效的校验方法。
这种方法通过在编码中增加一位校验位来使编码中1的个数为奇数或者偶数
位数是奇数的就叫做奇校验,偶数就叫做偶校验
通过这种方式可以使码距变成2

举例

下例取自wikipedia

原数据(7位)1的个数偶校验(8位)奇校验(8位)
000000000000000000000001
101000131010001110100010

校验原理


奇偶校验可以通过逐位异或的方式来简化运算

校验成功

  1. A向B发送数据1001
  2. 判断1的个数是否为偶数:1^0^0^1=0,因为逐位亦或的结果为0所以1的个数为偶数
  3. 在原数据末尾添0,变成10010
  4. 传输出错
  5. B收到的数据变成11010
  6. B对收到的数据进行逐位亦或1^1^0^1^0=1
  7. 计算结果为1,因为偶校验,所以正确的结果应该是0, 1!=0,传输出错!

校验失败

由于奇偶校验比较简单,对于下列情况就无能为力

 1001 -> 10010(偶校验) -> 10111(传输出错)