【软考】校验码之详细总结

简介: 【软考】校验码之详细总结

这一知识点困扰我许久了,在光光的指导下,我们小组成功攻克海明码!彻底解决这一问题。

正文

一、奇偶校验码

1.概念:

通过在编码中增加一位校验位来使编码中的1的个数为奇数(奇校验)或偶数(偶校验),从而使码距为2

2.实践,前提条件:只有一位错误。

1)奇校验:

0001,加一位00011奇数的个数为2,所以编码不正确

2)偶校验:

0001,加一位00011偶数的个数为2,所以编码正确

3.作用

奇偶校验码只能查是否有错误,而且要求只有一位出现错误。

二、海明码

1.概念

海明码是一种很有效的校验方法,是只要增加少数几个校验位,就能检测出二位同时出错、亦能检测出一位出错并能自动恢复该出错位的正确值的有效手段,后者被称为自动纠错。

2.条件:设数据位是n位,校验位为k位,数据为01101001

第一步:分析表达式:2^k-1>=n+k

第二步:画表格(pi=2^i-1)

1)根据Pi=2(i-1)

P1=H(2(1-1))=H1

P2=H(2(2-1))=H2

.

.

.

依次算出P对应的H,结果如下表

H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12
P1 P2 D0 P3 D1 D2 D3 P4 D4 D5 D6 D7

2) 根据表格分析:D0对应的H3的下标3=2+1(从最大的开始找,3里面最大的是2),即H2对应的P2加上H1对应的P1;D0=P2+P1,依次算出。

数据位 海明码 校验位
D1 H5 P1+P3
D2 H6 P2+P3
D3 H7 P3+P2+P1
D4 H9 P4+P1
D5 H10 P4+P2
D6 H11 P4+P2+P1
D7 H12 P4+P3

4)结果

D1=P1+P3

D2=P2+P3

D3=P3+P2+P1

D4=P4+P1

D5=P4+P2

D6=P4+P2+P1

D7=P4+P3

5)第三步:求校验位P,从4)中找,有P1、P2、P3、P4的D1-D7

P1=D0⊕D1⊕D3⊕D4⊕D6; (这几个D的结果中都有P1)

P2=D0⊕D2⊕D3⊕D5⊕D6

P3=D1⊕D2⊕D3⊕D7

P4=D4⊕D5⊕D6⊕D7

因为数据为:01101001对应着D7-D0,又因为同0异1(比如1⊕1=0,0⊕1=1)

故P1=1,P2=0,P3=1,P4=0

第四步:完整的海明码为:101100100110

3.作用

海明码可以查错,也可以纠错,限制较少

三、循环冗余校验码

1.概念

奇偶校验码和海明校验码都是采用奇偶检测为手段榆错和纠错的,而循环冗余校验则是通过某种数学运算来建立数据位和校验位的约定关系的

2.实践

f(x)=x4+x3+x+1

生成多项式:11011,因为4次方到0次方,只有2次方的位置没有数,故用0表示

原始报文110010101010011

原始报文除以多项式的结果就是循环冗余校验码.

四、码距

将其中所有的合法码字的最小距离值称为这个编码体制的码距

例如:

1100

1101之间码距为1,因为只有最低位翻转了。

1001

0010之间码距则为3,因为只有1位没有变化

小结

校验码总结仍有不足之处,如有指教,不胜感激。

目录
相关文章
|
算法 调度
PV操作与前趋图题型
PV操作与前趋图题型
861 0
|
9月前
|
JSON Linux 数据格式
Ollama + Python 极简工作流
本文手把手教你如何使用消费级设备在1小时内完成大语言模型微调。通过Ollama和Python工具,无需高端GPU即可打造专属模型,适用于专业领域或个性化写作风格。
|
前端开发
Html:CSS的书写位置
Html:CSS的书写位置
1083 0
奇偶校验,CRC循环冗余校验,海明码校验
奇偶校验,CRC循环冗余校验,海明码校验
1433 0
|
算法 调度
作业调度算法_先来先服务算法_短作业优先算法_高响应比优先算法
本文介绍了作业调度算法,包括先来先服务(FCFS)、短进程优先(SJF)和高响应比优先(HRRN)算法。通过分析进程的到达时间和所需CPU服务时间,计算进程的开始时间、完成时间、平均周转时间和平均带权周转时间,以评估不同算法的性能。FCFS适合长作业,SJF适合短作业,而HRRN则综合了两者的优点。
1137 12
|
算法 自动驾驶 物联网
解读蜂窝网络中的频谱共享技术
解读蜂窝网络中的频谱共享技术
758 6
.NET 4.0下实现.NET4.5的Task类相似功能组件
【10月更文挑战第29天】在.NET 4.0 环境下,可以使用 `BackgroundWorker` 类来实现类似于 .NET 4.5 中 `Task` 类的功能。`BackgroundWorker` 允许在后台执行耗时操作,同时不会阻塞用户界面线程,并支持进度报告和取消操作。尽管它有一些局限性,如复杂的事件处理模型和不灵活的任务管理方式,但在某些情况下仍能有效替代 `Task` 类。
275 0
|
搜索推荐 Linux Shell
在Linux中,如何创建一个新用户?
在Linux中,如何创建一个新用户?
|
存储 缓存 Java
安卓应用性能优化实战
【5月更文挑战第29天】随着智能手机的普及,移动应用已成为人们日常生活中不可或缺的一部分。在众多操作系统中,安卓系统以其开放性和灵活性占据了大量的市场份额。然而,应用的性能问题却时常影响着用户体验。本文将深入探讨针对安卓平台进行应用性能优化的策略与实践,从内存管理到多线程处理,再到布局渲染,旨在为开发者提供全面的优化指导,以期打造出更流畅、高效的安卓应用。
【软考学习7】数据校验——海明校验码、循环校验码、奇偶校验码
【软考学习7】数据校验——海明校验码、循环校验码、奇偶校验码
1098 0