(002)数据库系统工程师软考复习之计算机系统基础知识(续)

海明码(奇偶检验的一种补充,采用方式:多位校验码,每一位对不同的信息数据位进行校验,通过对每个校验位和校验对应的信息数据进行比较,发现错误,纠正错误,当发现两位错误的时候,海明码能查错,但无法纠错)

可以查出错误位数:小于等于码距减一位(比如码距是5,则可以4位错误)
可以纠正错误位数:小于码距的一半位
(比如码距是5,可以纠正错误位数是2位;反过来。若想纠正至少3位错误,则该码距最小是2*3+1=7位)

其原理:在数据中间均匀加入若干校验码,码距均匀拉大,当某一位出错,后面的校验位都会出错。
海明不等式:如果:2的K次方>=m+k(m+k为编码后的数据编码总长度),则在理论上K个校验码就可以判断是哪一位出现了问题。

校验码为k个,则可以表示2的K次方个信息,
其中一个用来表示正常,
其余2的k次方-1表示数据中存在的问题
例如:
信息位有35位的编码数据需要几位校验码呢?
将m=35,带入不等式。
得:2的K次方-1>=35+K 
	当k=5,32-1<35+5 
	当k=6,64-1>=35+6
	所以需要6位校验码即可判断出来

编码规则
检验位依次放在第2的i次方(i=0,1,2,3……)位,也就是从第1,2,4,8…位是校验位,其余位置为信息位。
第i个信息位的位数为参与校验它的校验位的位数之和。

例如:现在要给一个1001四位二进制数进行信息编码,那么根据海明不等式:2的3次方-1=7>=4+3。所以最后该4位编码需要3位校验位,一共是7位,其中1,2,4位是校验位,3567位是数据信息位。
(异或运算:相同为假0,不同为真1)
校验码r1的值=357位信息码的异或结果。
校验码r2的值=367位信息码的异或结果。
校验码r4的值=557位信息码的异或结果。
得到的海明码就是:r1,r2,3,r4,5,6,7
此时有一个结论(即校验方程):
方程一:1357位的异或结果是0。
方程二:2367位的异或结果是0。
方程三:4557位的异或结果是0。
如果这三个方程都成立,且右边都等于0,则说明没有出错。
若至少有一个不成立,说明有错。将方程三二一等号右边的结果组合:比如100(方程一结果为0,方程二结果为0,方程三结果为1),将100二进制数变换成十进制数为4,则说明第四位出错了。

循环冗余校验码(CRC):在网络通信和磁盘存储时被广泛采用
概念一:多项式,即一个二进制数可以用一个多项式来表示

例如:1011(2)表示为多项式:x的三次方+x的一次方+x的零次方

概念二:收发双方约定一个生成多项式(其最高阶和最低阶系数必须是1),生成多项式的最高阶是r

CRC原理:将待发送的位串看成系数为0或1的多项式。收发双方约定一个生成多项式G(X),发送方用位串及G(X)对应的二进制串做模2除法得到余数。将位串左移r位,由余数补上。即可得到循环冗余校验码:位串+r位余数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值