资源描述:
《奇偶校验_校验和实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验5-1纠错与检错1.实验内容读程序,在所有红色的“#”后面添加解释,说明程序的作用2.实验题目(1)奇偶校验码在原始模式上增加一个附加比特位,即奇偶校验位,使最后整个模式中1的个数为奇数(奇校验)或偶数(偶校验)。本程序用到列表、字符串合并、取模等概念。code=input("Pleaseinputa7-bit-binarycode:")a=0#for循环作用是什么foriinrange(0,6,1):ifcode[i]=='1':a=a+1print("Afteroddparitycheckingthecodeis:")ifa%2==0:print(code+'1')#这句做
2、了什么else:print(code)#这句做了什么print("Afterevenparitycheckingthecodeis:")#下面if..else…作用是什么ifa%2==0:print(code)else:print(code+'1')(2)垂直水平奇偶校验如下图所示,14个字符纵向排列形成一个数据块,每个字符占据一列,低位比特在上,高位比特在下,用b8(第8位)作为垂直奇偶校验位,各字符的同一比特位形成一行,每一行的最右边一位作为水平奇偶校验位,这里在垂直和水平方向均采用偶校验。b110101010101010b201100110011001b30001111000
3、0111b400000001111111b500000000000000b610100110010010b7010110011011011111000b8001011001101000#下面的函数做了什么defoddeven(l):a=0foriinrange(0,len(l),1):ifl[i]=='1':a=a+1ifa%2==0:return'0'else:return'1'block=[['0']*15,['0']*15,['0']*15,['0']*15,['0']*15,['0']*15,['0']*15,['0']*15]foriinrange(0,14,1):vco
4、de=input("Pleaseinputa7-bit-binarycode:")forjinrange(0,7,1):block[j][i]=vcode[j]block[7][i]=oddeven(vcode)#这句做了什么hcode=['0']*14forjinrange(0,8,1):foriinrange(0,14,1):hcode[i]=block[j][i]block[j][14]=oddeven(hcode)#这句做了什么print(block)(3)循环冗余校验任何一个二进制位串都可以用一个多项式来表示,多项式的系数只有0和1,n位长度的码C可以用下述n-1次多项式
5、表示:例如位串1010001可以表示为x6+x4+1。数据后面附加上冗余码的操作可以用多项式的算术运算来表示。例如,一个k位的信息码后面附加上r位的冗余码,组成长度为n=k+r的码,它对应一个(n-1)次的多项式C(x),信息码对应一个(k-1)次的多项式K(x),冗余码对应一个(r-1)次的多项式R(x),C(x)与K(x)和R(x)之间的关系满足:由信息码生成冗余码的过程,即由已知的K(x)求R(x)的过程,也是用多项式的算术运算来实现。其方法是:通过用一个特定的r次多项式G(x)去除xrK(x),即:得到的r位余数作为冗余码R(x)。其中G(x)称为生成多项式(generat
6、orpolynomial),是由通信的双方预先约定的。除法中使用模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)的计算如Error!Referencesourcenotfound.所示,得出的4位余数1110作为冗余码,于是实际传输的位串为11010110111110
7、。参考程序:(本程序用到函数,列表、字符串合并、取整、取模等概念。)#这个函数做了什么defc2n(l):a=0foriinrange(0,len(l),1):a=a+int(l[i])*(2**(len(l)-1-i))returna#下面这个函数做了什么defn2c(d):b=''whiled!=0:b=str(d%2)+bd=d//2returnbinformationcode=input("Pleaseinputa10-bit-binarycode:")cod