当前位置:首页 > 技术分析 > 正文内容

8 校验码

ruisui881个月前 (03-26)技术分析21

计算机只能识别二进制数,在信息传输过程中,都是以电信号/光信号的形式进行传输。由于传输距离远,可能会导致信号衰减产生误差,在信息使用前需要进行相应的检验,以便判别信息是否正确,这种用于检查的信息,称为校验码。

校验码是在信息中额外增加的一些数据,来帮助校验。

最常用的校验码有3种:

  1. 奇偶校验:能检错,不能纠错。
  2. CRC循环冗余校验:能检错,不能纠错。
  3. 海明校验:能检错,能纠错。

考试考点:

  1. 3者的比对;
  2. CRC循环冗余校验的计算过程 或 编码过程。

奇偶校验

奇偶校验码的编码方法:由若干位有效信息的头部或尾部,再加上一个二进制位(校验位)组成校验码。实际包括两种校验:

  • 奇校验:整个校验码(有效信息位和校验位)中“1”的个数为奇数。
  • 偶校验:整个校验码(有效信息位和校验位)中“1”的个数为偶数。

如:有效信息为:1011,则:

  • 奇校验位为 0,校验码为 10110;
  • 偶校验位为1,校验码为 10111。

如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码,但不能纠错。

如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(也称漏码)。

例:给出编码 1001101 的奇校验码和偶校验码( )。

A)10011011,10011010 B)10011011,10011011

C)10011010,10011010 D)10011010,10011011

解:由于奇偶校验位一定是互斥的,因此B、C校验码相同的情况可以排除。奇校验需要确保校验码“1”总数为奇数,偶校验需要确保校验码“1”总数为偶数。因此选:A

CRC循环冗余校验

CRC循环冗余校验的预备知识:

1 异或

0 ⊕ 0 = 0

0 ⊕ 1 = 1

1 ⊕ 0 = 1

1 ⊕ 1 = 0

2 模2运算

  1. 被除数首位是几商几;
  2. 异或运算;
  3. 异或后首位一定是0舍弃掉这个0首位(去首位补末位);
  4. 补末位(落数),再上商。

例:1011 0010 000 模二除 11001

解:商1101010,余数1010。

3 CRC校验码

CRC校验码:通信领域最常用的差错校验码。有两个部分:

  • 左侧信息位:待发送数据;
  • 右侧差错检测码:基于待发送数据与生成多项式的差错检测码,也称冗余码。

冗余位数越多,校验能力越强。

具体过程:

  1. 收发双方约定好生成多项式G(x);
  2. 发送方基于待发送数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
  3. 接收方通过生成多项式来计算收到的数据是否产生了误码。

【注】算法要求:生成多项式必须包含最低此项,即x的0次项。

设:

完整形式:

因此生成多项式的bit形式为:10111。

在计算时,信息进行补零后形成被除数,生成多项式串是除数,最终的校验检测码是模2运算的余数。

例1:待发信息位101001,生成多项式为

计算编码后的信息。

解题的步骤如下:

  1. 构造被除数:待发送信息后添加生成多项式最高次数个0;
  2. 构造除数:生成多项式各项系数构成的比特串;
  3. 做模二除法运算;
  4. 检查余数:余数的位数应与生成多项式最高次数相同,如果位数不够,则在余数前补0来凑足位数。

解:

  1. 由生成多项式最高次项为3次,待发信息补3个0,除数101001000;
  2. 生成多项式1101;
  3. 进行模二除法:
  1. 冗余校验码为001,因此编码后的信息为:101001001。

例2:接收到的信息为101101001,生成多项式为:

判断传输是否有误码。

解题的步骤如下:

  1. 构造被除数:接收到的信息就是被除数;
  2. 构造函数:生成多项式各项系数沟通的比特串;
  3. 做模二除法运算;
  4. 检查余数:余数为0,传输过程无误码;余数不为0,传输过程产生误码。

解:

  1. 除数:101101001;
  2. 构造除数:1101;
  3. 做模二除法:
  1. 由于余数不为0,所以该信息为误码。

另外,如果是例1编码后的值101101001,模二除后,余数为0。

例3:在( )校验方法中,采用模二运算来构造检验位。(2019年上半年考题)

A)水平奇偶 B)垂直奇偶 C)海明码 D)循环冗余

答案:D

海明码校验

利用奇偶性来检错纠错的方法。在数据中增加冗余位来进行检错纠错的方法,以提高传输、存储的准确性。

海明码的原理

将原始数据分成若干个数据块,每一块数据中又开辟若干位校验位,用于检出错误后,利用校验位进行纠错,最终得到正确的数据。

数据之间的特定位上,加入K个校验位,通过扩大码距从而实现检错、纠错。

海明码实现方法

设数据位是n位,校验位是k位,则 n 和 k 必须满足以下关系:

【注】2^k 之所以减1,是因为数据所有可能情况中有一种情况位正确,因此要减1。

海明码的编码规则如下:

设k个校验位为:

n 个数位为:

对应的海明码为:

  1. 校验码Pi要放在2^(i-1)的位置;
  2. 海明码中的任何一位都是由若干个校验位来检验的;
  3. 被校验的海明位的下标等于所有参与校验该位的校验位的小标之和,而校验位由自身校验。

例:待传送信息为1010,若采用海明码校验,则奇校验规则下的海明码是( )。

A)0110010 B)0110011 C)1110010 D)1110011

解:

根据:

n = 4,

可以将 k = 1, 2, 3, ... 带入不等式,得到最小的 k = 3。

则H位数为:3 + 4 = 7 (位)

校验位分别为:

则校验位 Pi 与 数据 Dk的排列如下:

位数

1

2

3

4

5

6

7

Pi

P1

P2

D1

P3

D2

D3

D4

Dk



1


0

1

0

建立海明码对应表:

校验码的位数

1

2

4

方法

海明码

P1

P2

P3


H1(P1)



P1自己

H2(P2)



P2自己

H3(D1)


第3位:1+2(P1、P2代表的位数相加等于第3位)

H4(P3)



P3自己

H5(D2)


第5位:1+4(P1、P3代表的位数相加等于第5位)

H6(D3)


第6位:2+4(P2、P3代表的位数相加等于第6位)

H7(D4)

第7位:1+2+4(P1、P2、P3代表的位数相加等于第7位)

将表逐列向下看:

P1校验:D1、D2、D4 → 1 0 0 → P1 = 0;

P2校验:D1、D3、D4 → 1 1 0 → P2 = 1;

P3校验:D2、D3、D4 → 0 1 0 → P3 = 0。


1

2

3

4

5

6

7

Pi

P1

P2

D1

P3

D2

D3

D4

Dk



1


0

1

0

H

0

1

1

0

0

1

0

则海明码为:0110010,选A

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3051.html

标签: java crc校验
分享给朋友:

“8 校验码” 的相关文章

带你五步学会Vue SSR

作者:liuxuan 前端名狮转发链接:https://mp.weixin.qq.com/s/6K6GUHcLwLG4mzfaYtVMBQ前言SSR大家肯定都不陌生,通过服务端渲染,可以优化SEO抓取,提升首页加载速度等,我在学习SSR的时候,看过很多文章,有些对我有很大的启发作用,有些就只是照搬官...

HTML5学习笔记三:HTML5语法规则

1.标签要小写2.属性值可加可不加””或”3.可以省略某些标签 html body head tbody4.可以省略某些结束标签 tr td li例:显示效果:5.单标签不用加结束标签img input6.废除的标签font center big7.新添加的标签将在下一HTML5学习笔记中重点阐述。...

Acustica Audio 发布模拟Roland Jupiter 双声道合成器插件 TH2

福利: Acustica Audio 发布模拟Roland Jupiter 风格的双声道合成器插件 TH2 免费下载 意大利 Acustica Audio 公司发布布模拟Roland Jupiter 风格的双声道合成器插件 TH2 ,灵感来源于Acustica Audio的THING-8系列,它是...

2024年,不断突破的一年

迈凯伦F1车队不久前拿下了2024年度总冠军,距离上一次还是二十几年前。在此期间,另一领域内,一个充满革新活力的腕表品牌——RICHARD MILLE理查米尔,正不断发展,与F1运动、帆船、古董车展等领域,共享着对速度与极限的无尽向往。RICHARD MILLE的发展与F1车手们在赛道上的卓越表现交...

学前端,这30个CSS选择器,你必须熟记

你学会了基本的id,class类选择器和descendant后代选择器,然后就觉得完事了吗?如果这样,你就会错过许多灵活运用CSS的机会。虽然本文提到的许多选择器都属于CSS3,并且只能在现代的浏览器中使用,但学会这些是大有好处的。什么是CSS选择器呢?每一条css样式定义由两部分组成,形式如下:[...

史上最全 vue-router 讲解 !!!

前端路由 前端路由是后来发展到SPA(单页应用)时才出现的概念。 SPA 就是一个WEB项目只有一个 HTML 页面,一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转。 前端路由在SPA项目中是必不可少的,页面的跳转、刷新都与路由有关,通过不同的url显示相应的页面。 优点:前...