奇偶校验-校验和实验.docx

上传人:安*** 文档编号:19018263 上传时间:2022-06-03 格式:DOCX 页数:10 大小:22.24KB
返回 下载 相关 举报
奇偶校验-校验和实验.docx_第1页
第1页 / 共10页
奇偶校验-校验和实验.docx_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《奇偶校验-校验和实验.docx》由会员分享,可在线阅读,更多相关《奇偶校验-校验和实验.docx(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、奇偶校验-校验和实验实验5-1纠错与检错1.实验内容读程序,在所有红色的“#后面添加解释,讲明程序的作用2.实验题目1奇偶校验码在原始形式上增加一个附加比特位,即奇偶校验位,使最后整个形式中1的个数为奇数(奇校验)或偶数(偶校验)。本程序用到列表、字符串合并、取模等概念。code=input(Pleaseinputa7-bit-binarycode:)a=0#for循环作用是什么foriinrange(0,6,1):ifcodei=1:a=a+1print(Afteroddparitycheckingthecodeis:)ifa%2=0:print(code+1)#这句做了什么else:pri

2、nt(code)#这句做了什么print(Afterevenparitycheckingthecodeis:)#下面if.else作用是什么ifa%2=0:print(code)else:print(code+1)(2)垂直水平奇偶校验如下列图所示,14个字符纵向排列构成一个数据块,每个字符占据一列,低位比特在上,高位比特在下,用b8第8位作为垂直奇偶校验位,各字符的同一比特位构成一行,每一行的最右边一位作为水平奇偶校验位,这里在垂直和水平方向均采用偶校验。#下面的函数做了什么defoddeven(l):a=0foriinrange(0,len(l),1):ifli=1:a=a+1ifa%2=

3、0:return0else:return1block=0*15,0*15,0*15,0*15,0*15,0*15,0*15,0*15foriinrange(0,14,1):vcode=input(Pleaseinputa7-bit-binarycode:)forjinrange(0,7,1):blockji=vcodejblock7i=oddeven(vcode)#这句做了什么hcode=0*14forjinrange(0,8,1):foriinrange(0,14,1):hcodei=blockjiblockj14=oddeven(hcode)#这句做了什么print(block)(3)循环

4、冗余校验任何一个二进制位串都能够用一个多项式来表示,多项式的系数只要0和1,n位长度的码C能够用下述n1次多项式表示:例如位串1010001能够表示为x6+x4+1。数据后面附加上冗余码的操作能够用多项式的算术运算来表示。例如,一个k位的信息码后面附加上r位的冗余码,组成长度为n=k+r的码,它对应一个n1次的多项式C(x),信息码对应一个k1次的多项式K(x),冗余码对应一个r1次的多项式R(x),C(x)与K(x)和R(x)之间的关系知足:由信息码生成冗余码的经过,即由已知的K(x)求R(x)的经过,也是用多项式的算术运算来实现。其方法是:通过用一个特定的r次多项式G(x)去除xrK(x)

5、,即:得到的r位余数作为冗余码R(x)。其中G(x)称为生成多项式generatorpolynomial,是由通信的双方预先约定的。除法中使用模2减法无借位减,相当于作异或运算。要进行的多项式除法,只要用其相对应的系数进行除法运算即可。本例中,10位二进制信息位串对应K(x)x9+x8+x6+x4+x3+x+1;CRC_4对应的G(x)x4+x+1,r=4,则生成位串为10011B=19。则xrK(x)=x13+x12+x10+x8+x7+x5+x4,对应位串11010110110000,R(x)的计算如图2-26所示,得出的4位余数1110作为冗余码,于是实际传输的位串为1101011011

6、1110。参考程序:本程序用到函数,列表、字符串合并、取整、取模等概念。#这个函数做了什么defc2n(l):a=0foriinrange(0,len(l),1):a=a+int(li)*(2*(len(l)-1-i)returna#下面这个函数做了什么defn2c(d):b=whiled!=0:b=str(d%2)+bd=d/2returnbinformationcode=input(Pleaseinputa10-bit-binarycode:)code=informationcode+0000producecode=19p=0j=0xorcode=whilep对这些16位的二进制数进行1的

7、补码和累加运算,累加的结果再取反作为校验和,附加到数据后面,一起发送到接收方。上述计算中,1的补码和就是指带循环进位endroundcarry的加法,最高位有进位应循环进到最低位。接收方算法:将接收的数据包括校验和进行1的补码和累加运算,累加的结果再取反。若结果为0,表明传输正确;否则,表明传输有过失。如下图,在该例中,a是发送方的计算,、是3个数据。是它们的1的补码和,是的反码,即校验和。发送方将和数据一同发送,b是接收方的运算,如a发送方的运算b接收方的运算由于输入的信息串是字符,要用到异或运算,而该运算只能针对数值,因而需要有将字符转换成数值,已经将数值转换成字符的相关运算,这里分别写了

8、两个类型转换函数。实现1的补码和的关键就是要判定最高位能否有进位,对于16进制无符号数来讲,就是判定能否大于65535。本程序只给出了发送方计算校验和的经过,用到函数、列表、字符串合并、取整、取模等概念。defc2n(l):a=0foriinrange(0,len(l),1):a=a+int(li)*(2*(len(l)-1-i)returnadefn2c(d):b=whiled!=0:b=str(d%2)+bd=d/2returnbs=0foriinrange(0,3,1):code=input(pleaseinputa16-bit-binarycode:)s=s+c2n(code)#这个语句做了什么ifs65535:#下面语句做了什么s=s-65536+1s=s65535#这个语句做了什么print(n2c(s)注:可编辑下载,若有不当之处,请指正,谢谢!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 培训材料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com