首页 > 编程知识 正文

计算机组成原理循环冗余校验码,计算机中常用的校验码有

时间:2023-05-04 00:22:13 阅读:207659 作者:2000

数值与编码 计算机的系统内部编码

计算机系统内部编码方式都是通过二进制编码,主要原因有三:
1.二进制只有两种状态,使用两个稳定状态的物理器件可以表示二进制数,制造成本低
2.二进制1和0正好与逻辑值真假对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利条件
3.二进制编码和运算都很简单,通过逻辑门电路能方便的实现算术运算

进位计数法

进位计数法是一种常用计数方法,常用计数法有十进制,二进制,八进制,十六进制,生活中多用十进制,而计算机中多用二进制,八进制和十六进制,n进制逢n进一
二进制:只有0和1两个字符,逢二进一,他的任意数权值为2的i次方,i表示位数
八进制:基数为八分别用0-7表示,逢八进一,因为8等于2的3次方,所以二进制每3位可以表示一个八进制数
十六进制:逢十六进一,分别用0-9ABCDEF表示,其中A-F表示10-15,因为16等于2的4次方,所以每4位数的二进制可表示一个十六进制。

各个进制的表示方法

进制可以通过在数据外加层括号,括号下标对应进制,如:二进制(01001)2,十六进制(5BE)16
还可以通过字母表示,B为二进制,Q或者O为八进制,D为十进制,H为十六进制,如二进制 10010B,十六进制54BBH

不同进制的相互装换

二进制转换八进制:二进制三位表示一个八进制,如:111101011看成111 101 011则111是7,101是5,011是3则八进制为753,从最小位开始排,到最高位不足3位的补0添成3位。
二进制转换十六进制:二进制四位表示一个十六进制,同上如011101011看成1 1110 1011,从最小位开始排,到最高位不足4位的补0添成4位,则为0001 1110 1011,分别对应十六进制为1EB。
任意进制转换十进制:各位位数乘以对应权值后相加即可
十进制转换任意进制:
基数乘除法:将十进制的整数部分和小数部分分开计算,整数部分用除基取余法,小数部分用乘基去整法,十进制转换为n进制,n级制的基数为n,所为除基取余法,就是除以对应进制的基数,二进制则除以二,八进制则除以八,每除一位取余数,除到0为止,倒序排列余数就是对应进制数,例如123除以2等于61余1,61除以2等于30余1,30除以2等于15余0,15除以2等于7余1,7除以2的等于3余1,3除以2的等于1余1,1除以2的等于0余1,倒序排列余数为1111011,其他进制数同理。
而小数部分采用乘基取整法,字面意思,小数每位乘以基数,取整数,如0.6875转换为二进制,0.6875乘以2等于1.3750整数部分为1,0.3750乘以2等于0.7500整数为0,0.7500乘以2等于1.5整数部分为1,0.5乘2等于1整数部分为1,当乘积为1时结束,则小数部分为0.1011.

注意

计算机中小数和整数不一样,整数可以连续表示,但是小数是离散的,所以并不是每个十进制小数都可以转换成二进制,但是任意一个二进制都可以通过十进制表示。

真值和机器数

日常生活中通常用符号来表示正负(-和+)但是机器不能通过符号,通常都是通过一个数表示正负,计算机的表示方法通常原码,补码,反码,移码表示,这几种方法都是把符号数字化,0表示正号,1表示负号,如0101表示正5,1101表示负5。

BCD码

二进制编码的十进制数,通常采用4位二进制来表示一位十进制数,这种编码方式可以让二进制数和十进制数之间的装换得以快速进行,但是4位二进制数可以表示16个数,必然会出现6种状态为冗余状态。
8421码是一种有权码。分别就是对应了0-9向二进制转换的数,但是由于有6中冗余状态,所以一旦,两个数相加超出了9,按照常规的加法运算就有可能进入这6中冗余状态,所以一一旦两个8421码相加数值超出了9,则添加6跳过这6中冗余状态,通过二进制表示就是加0110.
余3码这是一种无权码是在8421基础上加0011形成的。因每个数都多余3,因此为余3码
2421码,这也是一种有权码,权值由高到低分别是2421.

字符与字符串

目前国际上普遍采用的是一种字符系统是7位二进制编码的ASCII码,它可以表示10个十进制数码、52个英文大小写以及一定数量的专用符号0-9是48-57,汉子国家标准为GB18030收录27484个汉字

校验码 奇偶校验码

在原码上加一个校验位,它的码距等于2,可以检测出一位错误(或奇数位错误),但是不能确定出错的位置,也不能校测出偶数位错误,增加的冗余位称为就校验位,校验位让整个校验码中的1的个数为奇数(奇校验)或者为偶数(偶校验),所以一旦校验码到了接收端,校验码的1不是偶数或者奇数则发现出错。

粗暴的板凳(汉明)校验码

粗暴的板凳校验码实际上是一种多重奇偶校验码,在有效信息位中加入几位
校验位形成粗暴的板凳码,并把粗暴的板凳码的每个二进制位分配到几个奇偶校验码中,当某一位出错后,就会引起有关的几个校验码位发生变化,不但能发现错位还能知道是哪一位出了问题
1.确定粗暴的板凳码的位数,粗暴的板凳码由信息位和校验位组成,校验位k根据信息位的位数n确定,需要满足k+n<=2k-1,如1010,n为4则k需要为3,那信息位为4校验位为3,则粗暴的板凳码有7位。
2.确定校验位的分布
校验位分别在粗暴的板凳码的2的指数倍上,如1010组成7位粗暴的板凳码H7H6H5H4H3H2H1,校验码在H1H2H4上,信息码在H3H5H6H7上,用d表示信息码,用p表示校验码则粗暴的板凳码为D4 D3 D2 P3 D1 P2 P1
3.分组形成校验关系
校验码分别用二进制表示校验位位置,如信息位D4对应的位置为H7,则用111表示分别对应通过H1H2H3校验,D3对应的位置是H6,则用110表示分别通过H3和H2校验
4.校验位取值
校验位参加校验的信息位进行异或,异或值为当前校验位的值,如P1参与的校验有D1 D2 D4,它们3个异或得到P1。
5.粗暴的板凳码校验
每个校验位参与的所有信息位进行异或(P1 D1 D2 D4),则一共会获得三个异或值,所得到的异或值全部为0则没有错误,如果不为零,则对应二进制数对应的十进制,就是出错的地方,如:异或值为110则粗暴的板凳码的H6出错。

注意:题目可能会给出某一位置为全校验位,指整个粗暴的板凳码中的偶校验,若1为偶数全检验为赋值0,若1为奇数数个全校验位赋值为1
粗暴的板凳码有一位纠错能力两位的检错能力,但是如果不添加全校验的情况下无法判断是否是一位出错还是两位出错

循环冗余码(CRC)

CRC码的基本思想:在K位信息码后面再拼接R位的校验码,整个编码字长N位,因此这种编码又称之为NK码。把信息位与多项式做模2除法生成余数为R位的校验码,并加载信息位后面形成一个新的二进制,在接收端利用多项式对接收端的编码做模2除,检测和确定出错的位置
,其中多项式是发送端和接收端之间的约定。任何一个0,1都可以和多项式对应,多项式的最高次n对应转换成n+1位二进制,如x^ 3 +x^ 2+1对应的二进制是1101.
例如:设置一个多项式为 x^ 3 +x^ 2+1,信息码为101001,多项式对应的二进制码为1101,用信息码对多项式进行模二除,(信息码添加多项式最高次幂位数个0)101001000对1101模二除等于001,001就是校验码,最后CRC码就是101001001,CRC码送到接收端用多项式进行模二除就会的到全是0的余数,如果不为0则对应的二进制位置就是错误的地方,取反得以纠正,如最后验证为010则为第3位出错,第三位直接取反纠正。

循环冗余码的纠错能力

当信息码比较大的时候循环冗余码因为常用到计算机网络之中,数据量会比较大所以大多情况下是用来检错的而不是纠错

真题

2013:粗暴的板凳码的校验位数k+n<=2k-1

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。