软件设计师之计算机组成原理与体系结构(6)校验码

简介: 软件设计师之计算机组成原理与体系结构(6)校验码

9.校验码


  • 差错控制—CRC与海明校验码


  • 什么是检错和纠错


  • 什么是码距?


一个编码系统的码距是整个编码系统中任意(所有)两个码字的最小距离。
就是改变多少个位就可以变成另外一个码字


例:


若用1位长度的二进制编码,若A=1,B=0。这样A,B之间的最小码距位1。


  • 这个是发现不了错误的


若用2位长度的二进制编码,若A=11,B=00。这样A,B之间的最小码距位2。


  • 当接收到的是10时,是可以发现编码错误。因为我们在之前就规定了11为A,00为B。没有10,所以是可以发现错误的。但是不能进行纠错,因为发过来的可能是A也可能是B


若用3位长度的二进制编码,若A=111,B=000。这样A,B之间的最小码距位3。


  • 当接收到的是101时,发现编码时错误的。这个时候也可以进行纠错。因为我们认为通信链路时比较可靠的,不会出现错多位的情况,这个时候就可以和合法编码进行比较,通过比较可以将错误的编码更正为正确的编码。最终更正为111.
  • 码距与检错、纠错有何关系?


  • 在一个码组内为了检测e个误码,要求最小码距d应该满足:d>=e+1


  • 在一个码组内为了纠正t个误码,要求最小码距d应该满足:d>=2t+1


  • 校验码—循环校验码CRC


  • 它是一种可以做检错,但不能进行纠错的一种编码


什么时模2除法,它和普通的出发有何区别?


模2除法是指在做除法运算的过程中不计其进位的除法。


例如,1011对110进行模2除法为:


微信图片_20211229124902.png


普通除法是:101不够,所以要1011,然后相减,再把最后的1拿下来,再减


模2除法:直接取前三位,不是相减,而是按位做异或操作(同为0,异为1)。


  • 例题:


微信图片_20211229124954.png


  • x的多少次方对应的二进制位是0还是1。


  • 之后要在原始报文的基础上加若干个0,加多少位=生成多项式的位数减1个0。


  • 进行模2除法,得到的余数代替掉之前加的0


  • 最后原始报文信息补上余数部分就是完整的信息。


  • 用完整的信息与多项式转化的二进制进行模2除法。最后得到的结果为0就是正确的


  • 校验码—海明校验码


这里的校验位公式可以定为:


其中x代表有多少位,也就是信息位,而r为校验位。


image.png


  • 求海明编码:


  • 首先确定信息位以1011为例。从而知道x的长度是4位


  • 通过校验位公式可以得到校验位为3。


  • 现在开始进行分配校验位:一般校验位都会放在2 ^ n的位置上(1,2,4…)


  • 通过上述步骤可以看到校验位加上信息位一共是7位,画张表解决


7 6 5 4 3 2 1 位置
1 0 1 1 信息位
r2 r1 r0 校验位


  • 确定每个位置的校验位:校验i位就等于校验位所在位置的加和。例如校验第3位,那么3就是1 + 2,这样就是需要第一个校验位和第二个校验位来进行校验。以此类推。得到下表:


位置 占用的校验位号 备注
1 1 1 = 1
2 2 2 = 2
3 1,2 3 = 1+ 2
4 4 4 = 4
5 1,4 5 = 1 + 4
6 2,4 6 = 2 + 4
7 1,2,4 7 = 1 + 2 + 4


  • 数据汇总


r0 1,3,5,7
r1 2, 3, 6, 7
r2 4, 5, 6, 7


  • 计算校验位的值(通过异或运算)


r0 = 3 5 7的异或
r1 = 3 6 7的异或
r2 = 5 6 7的异或


  • 根据公式得到值分别为 1 0 0。将得到的值填入下面的表格


7 6 5 4 3 2 1 位置
1 0 1 1 信息位
0 0 1 校验位


  • 至此就可以得到最后的海明码:1010101


  • 除了检错还可以纠错。如果收到的信息是101101,通过它获得一个海明码,如果得到的校验码是001。需要和我们开始得到的正确的校验码(这个不是说我之前写过的码,这里只是举个例子与之前得到的海明码无关)按位进行异或运算,也就是001与000进行异或运算。得到的结果位001就是第一位出现了问题,如果得到010就是第二位出现了问题,如果得到110就是第六位出现了问题。



相关文章
|
6月前
|
存储 算法 程序员
【期末计算机组成原理速成】第三章:存储器
【期末计算机组成原理速成】第三章:存储器
229 0
|
4月前
|
存储 Java 编译器
01.计算机组成原理和结构
计算机组成原理涵盖底层硬件知识与冯·诺依曼体系结构,包括CPU、内存、I/O设备等硬件组成,强调理论与实践结合。冯·诺依曼架构定义了存储程序计算机,涉及运算器、控制器、存储器及I/O设备,影响现代计算机设计。学习时需理解数据交互、流动与控制层面,掌握控制器、存储器、运算器工作原理。计算机组成原理不仅关注硬件细节,如数字电路和数据表示,还探讨软件与硬件交互,如编译过程和操作系统功能。学习方法建议通过提问串联知识点、以教带学及编写示例程序验证理论,旨在全面理解计算机运作机制。
42 0
|
6月前
|
芯片
【期末计算机组成原理速成】第二章:系统总线
【期末计算机组成原理速成】第二章:系统总线
131 0
|
存储
计算机组成原理:计算机的体系与结构
本文介绍早期计算机、冯·诺依曼体系结构和现代计算机结构。
211 0
计算机组成原理:计算机的体系与结构
|
算法 编译器 数据格式
计算机组成原理/计算机硬件基础 第四章
计算机组成原理/计算机硬件基础 第四章
227 0
计算机组成原理/计算机硬件基础 第四章
|
存储 固态存储 数据安全/隐私保护
计算机组成原理/计算机硬件基础第五章:存储器
计算机组成原理/计算机硬件基础第五章:存储器
471 0
计算机组成原理/计算机硬件基础第五章:存储器
计算机组成原理/计算机硬件基础第六章:指令系统
计算机组成原理/计算机硬件基础第六章:指令系统
373 0
计算机组成原理/计算机硬件基础第六章:指令系统
|
存储 编译器 测试技术
计算机组成原理(判断题)
计算机组成原理(判断题)
190 0
|
存储 JavaScript 算法
计算机组成原理系列(二):计算机编码全解析
你是不是工作了很多年了,一直没搞清楚计算机中的各种编码规则,虽然平时都会使用,但是内部机制原理一直都是之其然而不知其所以然,开发中也会经常涉及到这块内容,但都没有太多重视
|
存储 缓存 固态存储