博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
奇偶校验码
阅读量:7088 次
发布时间:2019-06-28

本文共 1552 字,大约阅读时间需要 5 分钟。

  hot3.png

一、奇偶校验码

数据校验码,是数据传输时,一种常用的发现某些错误,甚至带有一些纠错功能的数据编码方法

(一)奇校验码

  1. 实现原理:

将原来合法的编码距由1增加到2

  1. 具体实现过程:

将原有的合法二进制数据增加一位标志位,标志这串二进制所含'1'的个数,奇数个标志位记0,偶数个标志位记1,这样的做法能保证处理过后的'1'的总数为奇数(因此称之为奇校验).

  1. 出错检测:

如果得到的编码中'1'的数量不是奇数,则要么数据传输错误,要么数据发生偶数次错误(2,4...)

(二)偶校验码

实现过程:

偶校验与奇校验相反

(三)示例:

数据(二进制) 奇校验码 偶校验码
00000000 100000000 000000000
01010100 001010100 101010100
01111111 001111111 101111111
11111111 111111111 011111111

注:粗体为校验位

二、海明(汉明)校验码

海明码,Richard Hamming

  1. 实现原理

复杂,不理解

  1. 实现过程

    • 确定校验码位数量

      在k个数据位之基础上再插入r个校验位,从而形成k+r位新的编码,并且k与r满足如右所示的数量关系 : 2^r >= k + r + 1

    • 确定校验码位置

    • 确定校验码的值

    • 校验码植入完成,开始数据传输

    • 接收数据,进行数据校验

  2. 出错检测

往后看吧 4. 例,写出一个含八位数据01010111的汉明码,若接收到的数据位最低位由1变为0,求新汉明码

  • 确定校验码位置

    2^r >= k+r+1 => r = 4 设四个汉明校验码分别为p1,p2,p3和p4,数据码分别为D1...D8

    得出汉明编码数据为:

more 9 8 7 6 5 4 3 2 1
more D5 P4 D4 D3 D2 P3 D1 P2 P1
more ~ 2^3 ~ ~ ~ 2^2 ~ 2^1 2^0
  • 确定校验码的值

数据D拆分所得到的子集为:

D 位置 拆分
D1 3 2+1
D2 5 4+1
D3 6 4+2
... ... ...
D8 12 8+4

P的值为所有D中,子集包含有i(角标)的D相互异或

P1 = D7 xor D5 xor D4 xor D2 xor D1 =0

P2 = D7 xor D6 xor D4 xor D3 xor D1 = 0

P3 = D8 xor D4 xor D3 xor D2 = 1

P4 = D8 xor D7 xor D6 xor D5 = 0

注释:xor,异或

  • 校验码植入
12 11 10 9 8 7 6 5 4 3 2 1
D8 D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1
0 1 0 1 0 0 1 1 0 1 1 0

数据最后一位变位后,新校验码S为

S1 S2 S3 S4
1 0 0 0
  • 收到错误数据,处理得错误码位置

当发送和接收的两套汉明码进行异或运算,结果全为零,则传输正确,否则错误

S1 xor P1 = 1

S2 xor P2 = 1

S2 xor P2 = 0

S2 xor P2 = 0

由于(1100)2 != 0

故,发生错误,查表可得错误位置

三、CRC循环冗余校验码

此为海明码改进,解决海明校验码需要插入到数据当中,难以分离的问题(k位信息码直接拼接r位校验码)

TODO: 例,把10101011转换成循环冗余码,且其生成多项式10011 将数据10101011补四个零,然后除10011,获得其余数,不考虑借位的方式除. 得余数1010,冗余码为10101011 1010

<!--上传-->

转载于:https://my.oschina.net/lafter/blog/1599899

你可能感兴趣的文章
scala mysql jdbc oper
查看>>
浅谈分支预测、流水线与条件转移(转载)
查看>>
前端技能树
查看>>
【软件工程】02组软件工程组队项目——课程管理小助手需求文档
查看>>
java面试每日一题8
查看>>
leetcode Majority Element
查看>>
UISprite(NGUI)扩展 图片镂空
查看>>
只是一段听力练习:金凯瑞致伊斯特伍德
查看>>
求第五个人多大岁数
查看>>
mybatis什么时候用resulttype 什么时候用resultmap
查看>>
去除sql的前后半角全角空格
查看>>
iview表单密码自定义验证
查看>>
[SinGuLaRiTy] 组合数学题目复习
查看>>
Android中SQLite使用
查看>>
NAND结构与驱动
查看>>
图片在容器里水平垂直居中
查看>>
015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname
查看>>
mysql主主复制(双主复制)配置步骤
查看>>
页面定时跳转(倒计时跳转)代码总结
查看>>
在SQL Server中使用CLR调用.NET方法
查看>>