“软件设计师精讲 校验码概述”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
 
(未显示同一用户的3个中间版本)
第140行: 第140行:
 
对于32位的数据,至少需要增加()个校验位才能构成海明码。
 
对于32位的数据,至少需要增加()个校验位才能构成海明码。
  
以10位数据为例,其海明码表示D<sub>9</sub>D<sub>8</sub>D<sub>7</sub>D<sub>6</sub>D<sub>5</sub>D<sub>4</sub>P<sub>4</sub>D<sub>3</sub>D<sub>2</sub>D<sub>1</sub>P<sub>3</sub>D<sub>0</sub>P<sub>2</sub>P<sub>1</sub>中,其中D<sub>i</sub>(0≤i≤9)表示数据位,P<sub>j</sub>(1≤j≤4)表示校验位,数据位D<sub>9</sub>由P<sub>4</sub>、P<sub>3</sub>和P<sub>2</sub>进行校验(从右至左D<sub>9</sub>的位序为14,即等于8+4+2,
+
以10位数据为例,其海明码表示 D<sub>9</sub>D<sub>8</sub>D<sub>7</sub>D<sub>6</sub>D<sub>5</sub>D<sub>4</sub>P<sub>4</sub>D<sub>3</sub>D<sub>2</sub>D<sub>1</sub>P<sub>3</sub>D<sub>0</sub>P<sub>2</sub>P<sub>1</sub> 中,其中 D<sub>i</sub>(0≤i≤9)表示数据位,P<sub>j</sub>(1≤j≤4)表示校验位,数据位D<sub>9</sub>由P<sub>4</sub>、P<sub>3</sub>和P<sub>2</sub>进行校验(从右至左D<sub>9</sub>的位序为14,即等于8+4+2,
  
 
因此用第8位的P<sub>4</sub>、第4位的P<sub>3</sub>和第2位的P<sub>2</sub>校验),数据位D<sub>5</sub>由()进行校验。
 
因此用第8位的P<sub>4</sub>、第4位的P<sub>3</sub>和第2位的P<sub>2</sub>校验),数据位D<sub>5</sub>由()进行校验。
第160行: 第160行:
 
|}
 
|}
  
 +
解析:
 +
 +
问题1
 +
 +
因为 2<sup>r</sup>≥n+r+1,所以 2<sup>r</sup>≥32+r+1、2<sup>r</sup>≥33+r,r为6时满足,所以答案是D。
 +
 +
问题2
 +
{| class="wikitable"
 +
|+
 +
!位序
 +
!14
 +
!13
 +
!12
 +
!11
 +
!10
 +
!9
 +
!8
 +
!7
 +
!6
 +
!5
 +
!4
 +
!3
 +
!2
 +
!1
 +
|-
 +
!数据位
 +
|D<sub>9</sub>
 +
|D<sub>8</sub>
 +
|D<sub>7</sub>
 +
|D<sub>6</sub>
 +
|D<sub>5</sub>
 +
|D<sub>4</sub>
 +
|P<sub>4</sub>
 +
|D<sub>3</sub>
 +
|D<sub>2</sub>
 +
|D<sub>1</sub>
 +
|P<sub>3</sub>
 +
|D<sub>0</sub>
 +
|P<sub>2</sub>
 +
|P<sub>1</sub>
 +
|}
 +
 +
位序14 是 8+4+2,D<sub>5</sub> 的位序是10,是 8+2,是用第 8 位的 P<sub>4</sub> 和第 2 位的 P<sub>2</sub> 校验,所以答案是B。
  
  

2024年4月14日 (日) 04:11的最新版本

https://www.bilibili.com/video/BV13U4y1E7oA/?p=8

校验码

考点1:奇偶校验码

考点2:CRC循环冗余校验码

考点3:海明校验码


https://www.bilibili.com/video/BV13U4y1E7oA/?p=9

校验码-校验码基础知识

码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距。

例如:用4位二进制表示16种状态,则有16个不同的码字,此时码距为1。如 0000 和 0001。


校验码-奇偶校验

奇偶校验码的编码方法是:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码。


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

假如:最开始传递信息的时候,“男”用1位二进制 "0" 来表示,“女”用二进制“1”来表示,传递信息的过程当中,1位二进制不好区分对错,如果接收方接收到1个“1”的话,如果要确定有没有错误,就不能确定,因为仍然在合法的码字当中,可以通过扩大码距所谓的校验一般都是通过扩大码距来进行校验、解决问题的。

例:如果采用奇校验的方式,信息位拼接上校验位之后,里面“1”的个数是奇数,拼接过程当中,信息位+校验位,“男”的“0”就变成“01”(后面加“1”,保持奇数个“1”),女的“1”就变成“10”(后面加“0”,保持奇数个“1”),接收方在接收后首先就是检查有多少个“1”,此时如果接收方收到了“00”或者“11”就可以确认传输数据有错(偶数个“1”不满足奇校验)。

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


注意:其实如果发送“11”,收到了“00”,奇偶校验就不能确认数据有错(同时存在多位错误),所以奇偶校验是有局限性的,只能检错部分情况,且并不能确定是哪个位置出错,所以奇偶校验只能进行检错,不能纠错。

奇偶校验,可检查1位(奇数位)的错误,不可纠错。

例题讲解

以下关于采用一位奇校验方法的叙述中,正确的是(C)。

A、若所有奇数位出错,则可以检测出该错误但无法纠正错误

B、若所有偶数位出错,则可以检测出该错误并加以纠正

C、若有奇数个数据位出错,则可以检测出该错误但无法纠正错误

D、若有偶数个数据位出错,则可以检测出该错误并加以纠正


https://www.bilibili.com/video/BV13U4y1E7oA/?p=10

CRC循环冗余校验码

CRC校验,可检错,不可纠错

CRC的编码方法是:在k位信息码之后拼接r位校验码。应用CRC码的关键是如何从k位信息位简便地得到r位校验位(编码),以及如何从k+r位信息码判断是否出错。


把接收到的CRC码用约定的生成多项式G(X)去除(模二除法)如果正确,则余数为0;如果某一位出错,则余数不为0。不同的位数出错其余数不同,余数和出错位序号之间有惟一的对应关系。

例题讲解

在(D)校验方法中,采用模2运算来构造校验位。

A、水平奇偶

B、垂直奇偶

C、海明码

D、循环冗余


https://www.bilibili.com/video/BV13U4y1E7oA/?p=11

海明校验码

海明校验,可检错,也可纠错。

海明校验码的原理是:在有效信息位中加入几个校验位形成海明码,使码距比较均匀地拉大,

并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,

这不但可以发现错误,还能指出错误的位置,为自动纠错提供了依据。

校验位求取公式:2r≥m+r+1,也可以写成:2r-1≥m+r,r是最小值,m是信息位的个数

比如:要传递16位信息,那这16位信息在编码的过程当中,要2r≥16+r+1,r=4时,2r=16,2r≥16+r+1不成立;

r>=5,才满足2r≥16+r+1,所以海明校验位是5位。

要求能够通过信息位将校验码位数求出来。

具体校验位放在哪里呢?5个校验码分别放在 20,21,22,23,24

也就是放在1,2,4,8,16位上,其它位置放上信息位

校验码位数 校验码位置 检错 纠错 校验方式
奇偶校验 1 一般拼接在头部 可检奇数位错 不可纠错 奇校验:最终1的个数是奇数个;

偶校验:最终1的个数是偶数个;

CRC循环冗余校验 生成多项式最高次幂决定 拼接在信息位尾部 可检错 不可纠错 模二除法求余数,拼接作为校验位
海明校验 2r≥m+r+1 插入在信息位中间 可检错 可纠错 分组奇偶校验

例题讲解

以下关于海明码的叙述中,正确的是(A)。

A、海明码利用奇偶性进行检错和纠错

B、海明码的码距为1

C、海明码可以检错但不能纠错

D、海明码中数据位的长度和校验位的长度必须相同


海明码是一种纠错码,其方法是为需要校验的数据位增加若干校验位,使得校验位的值决定于被校位的数据,当被校数据出错时,可根据校验位的值的变化找到出错位,从而纠正错误。

对于32位的数据,至少需要增加()个校验位才能构成海明码。

以10位数据为例,其海明码表示 D9D8D7D6D5D4P4D3D2D1P3D0P2P1 中,其中 Di(0≤i≤9)表示数据位,Pj(1≤j≤4)表示校验位,数据位D9由P4、P3和P2进行校验(从右至左D9的位序为14,即等于8+4+2,

因此用第8位的P4、第4位的P3和第2位的P2校验),数据位D5由()进行校验。

问题1

问题1
A、3 B、4 C、5 D、6
问题2
A、P4P1 B、P4P2 C、P4P3P1 D、P3P2P1

解析:

问题1

因为 2r≥n+r+1,所以 2r≥32+r+1、2r≥33+r,r为6时满足,所以答案是D。

问题2

位序 14 13 12 11 10 9 8 7 6 5 4 3 2 1
数据位 D9 D8 D7 D6 D5 D4 P4 D3 D2 D1 P3 D0 P2 P1

位序14 是 8+4+2,D5 的位序是10,是 8+2,是用第 8 位的 P4 和第 2 位的 P2 校验,所以答案是B。




什么是码距?