欢迎来到天天文库
浏览记录
ID:20799334
大小:96.50 KB
页数:8页
时间:2018-10-16
《海明码和CRC校验的C语言实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、海明码和CRC校验的C语言实现1.海明码//codebyzxf2010.4.10#include#include#include//N代表待编码数据的上限位数#defineN100intHmLength(intk);//计算海明码校验位位数voidInCode(char*data,char*c,intk,intr);//计算海明码每个校验位的数值voidmain(){intk=0,r=0,dnum=0,cnum=0;chardata[N];charc[N];clrscr();printf("Nowpl
2、easeinputthedatayouwanttoIncode:");for(k=0;k3、",k,r,r+k);//输出海明码相关位数信息InCode(data,c,k,r);//计算海明码printf("TheHammingcodeis:");for(intj=1;j4、idInCode(char*data,char*c,intk,intr){for(inti=0;i5、积dnum++;//记录数据的循环位数}}c[i]=sum%2==0?'0':'1';//通过结果的奇偶设置校验位的值}}/**@func:计算校验码的位数*@param:k数据长度*@return:校验码位数*codebyzxf*/intHmLength(intk){intr=0,flag=1;while(flag!=0)//循环到2^r-1>=r+K时即得到校验码的位数{inttemp=0;temp=pow(2,r);temp=temp-1;flag=(temp-r-k<0);r++;}returnr-1;}程序演示:计算1100计算10000016、计算10101010101010101010101010101010101010CRC校验//codebyzxf2010.4.10#include#include#include//N代表待编码数据的上限位数#defineN100voidInputBinary(char*data);//输入二进制intDelZero(char*data);//去掉二进制字符串前面的零位intDiv(char*data,char*div);//进行一次模2除法voidmain(){chardatacpy[N];ch7、ardata[N];chardiv[N];charres[N];intreslen=0;clrscr();printf("nowpleaseinputthedata:");InputBinary(data);//输入Mprintf("nowpleaseinputthediv:");InputBinary(div);//输入除数DelZero(data);DelZero(div);//取得有效的M和除数strcpy(datacpy,data);//备份Mprintf("Theeffectivedatais:%s",data);printf("8、Theeffectivedivis:%s",div);for(inti=0;i
3、",k,r,r+k);//输出海明码相关位数信息InCode(data,c,k,r);//计算海明码printf("TheHammingcodeis:");for(intj=1;j4、idInCode(char*data,char*c,intk,intr){for(inti=0;i5、积dnum++;//记录数据的循环位数}}c[i]=sum%2==0?'0':'1';//通过结果的奇偶设置校验位的值}}/**@func:计算校验码的位数*@param:k数据长度*@return:校验码位数*codebyzxf*/intHmLength(intk){intr=0,flag=1;while(flag!=0)//循环到2^r-1>=r+K时即得到校验码的位数{inttemp=0;temp=pow(2,r);temp=temp-1;flag=(temp-r-k<0);r++;}returnr-1;}程序演示:计算1100计算10000016、计算10101010101010101010101010101010101010CRC校验//codebyzxf2010.4.10#include#include#include//N代表待编码数据的上限位数#defineN100voidInputBinary(char*data);//输入二进制intDelZero(char*data);//去掉二进制字符串前面的零位intDiv(char*data,char*div);//进行一次模2除法voidmain(){chardatacpy[N];ch7、ardata[N];chardiv[N];charres[N];intreslen=0;clrscr();printf("nowpleaseinputthedata:");InputBinary(data);//输入Mprintf("nowpleaseinputthediv:");InputBinary(div);//输入除数DelZero(data);DelZero(div);//取得有效的M和除数strcpy(datacpy,data);//备份Mprintf("Theeffectivedatais:%s",data);printf("8、Theeffectivedivis:%s",div);for(inti=0;i
4、idInCode(char*data,char*c,intk,intr){for(inti=0;i5、积dnum++;//记录数据的循环位数}}c[i]=sum%2==0?'0':'1';//通过结果的奇偶设置校验位的值}}/**@func:计算校验码的位数*@param:k数据长度*@return:校验码位数*codebyzxf*/intHmLength(intk){intr=0,flag=1;while(flag!=0)//循环到2^r-1>=r+K时即得到校验码的位数{inttemp=0;temp=pow(2,r);temp=temp-1;flag=(temp-r-k<0);r++;}returnr-1;}程序演示:计算1100计算10000016、计算10101010101010101010101010101010101010CRC校验//codebyzxf2010.4.10#include#include#include//N代表待编码数据的上限位数#defineN100voidInputBinary(char*data);//输入二进制intDelZero(char*data);//去掉二进制字符串前面的零位intDiv(char*data,char*div);//进行一次模2除法voidmain(){chardatacpy[N];ch7、ardata[N];chardiv[N];charres[N];intreslen=0;clrscr();printf("nowpleaseinputthedata:");InputBinary(data);//输入Mprintf("nowpleaseinputthediv:");InputBinary(div);//输入除数DelZero(data);DelZero(div);//取得有效的M和除数strcpy(datacpy,data);//备份Mprintf("Theeffectivedatais:%s",data);printf("8、Theeffectivedivis:%s",div);for(inti=0;i
5、积dnum++;//记录数据的循环位数}}c[i]=sum%2==0?'0':'1';//通过结果的奇偶设置校验位的值}}/**@func:计算校验码的位数*@param:k数据长度*@return:校验码位数*codebyzxf*/intHmLength(intk){intr=0,flag=1;while(flag!=0)//循环到2^r-1>=r+K时即得到校验码的位数{inttemp=0;temp=pow(2,r);temp=temp-1;flag=(temp-r-k<0);r++;}returnr-1;}程序演示:计算1100计算1000001
6、计算10101010101010101010101010101010101010CRC校验//codebyzxf2010.4.10#include#include#include//N代表待编码数据的上限位数#defineN100voidInputBinary(char*data);//输入二进制intDelZero(char*data);//去掉二进制字符串前面的零位intDiv(char*data,char*div);//进行一次模2除法voidmain(){chardatacpy[N];ch
7、ardata[N];chardiv[N];charres[N];intreslen=0;clrscr();printf("nowpleaseinputthedata:");InputBinary(data);//输入Mprintf("nowpleaseinputthediv:");InputBinary(div);//输入除数DelZero(data);DelZero(div);//取得有效的M和除数strcpy(datacpy,data);//备份Mprintf("Theeffectivedatais:%s",data);printf("
8、Theeffectivedivis:%s",div);for(inti=0;i
此文档下载收益归作者所有