⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc.txt

📁 crc任意位生成多项式 任意位运算 自适应算法 循环冗余校验码(CRC
💻 TXT
字号:
文件头:

// CRC-4


#include "windows.h"


#include "stdio.h"


#include "stdlib.h"  


#include "time.h"


#define MAX 100  //定义最大字符串长度 


#define GEN 4   //指明生成多项式G(x)    


void XOR(int reg[]);//异或


void LShift(int reg[]);//左移   


void Generator(int data[],int Len);    //生成器


void Verifier(int data[],int Len);     //验证器


void Noise(int data[],int Len);        //噪声模拟


void main()                  


{


	int i,Len,data[MAX];


	char ch;


	printf("***************************************\n");


	printf("循环冗余校验码模拟程序,CRC-%d\n",GEN);


	printf("***************************************\n");


	printf("请输入要发送的报文(0,1位串):");


	i=0;


	ch=getchar();


	while(ch!='\n')   //不为空


	{


        data[i++]=ch-'0';  


		ch=getchar();


	}


//............................................................


	Len=i;


	Generator(data,Len);


	printf("\n正在传送......\n");


	printf("\n随机产生的热噪声和冲击噪声也在进行干扰......\n");


	Noise(data,Len+GEN);   


	Sleep(1000);      //?/textarea><BR>

<table width=756 border=0>

<tr><td width=1 bgcolor=#B0B0B0></td><td>

<script type="text/javascript"><!--

google_ad_client = "pub-8055710228382273";

google_ad_width = 728;

google_ad_height = 90;

google_ad_format = "728x90_as";

google_ad_type = "text_image";

google_ad_channel ="0099118804";

google_color_border = "FFFFFF";

google_color_bg = "FFFFFF";

google_color_link = "0000FF";

google_color_text = "333333";

google_color_url = "666666";

//--></script>

<script type="text/javascript"

  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

</td>

<td width=15 bgcolor=#E4E0D8></td></tr></table>

<textarea cols=105 rows=12>文件尾:



	{


		reg[0]=data[i++]^reg[GEN];


		if(reg[0]==1)  //最后一位余数出,第一位进


			XOR(reg);


		LShift(reg);


	}


	printf("\nCRC校验码:");


	for(i=GEN;i>=1;i--)


	{


		data[Len+GEN-i]=reg[i];


		printf("%d",reg[i]);


	}





	printf("\n\n发送的报文:");


	for(i=0;i<Len+GEN;i++)


		printf("%d",data[i]);


	printf("\n");


}


//............................................................


void Verifier(int data[],int Len) //验证器


{


	printf("\n接收的报文:");


	for(int j=0;j<Len;j++)


		printf("%d",data[j]);


	printf("\n");


	int reg[GEN+1];


	for(int i=0;i<GEN+1;i++)


		reg[i]=0;


	i=0;


	while(i<Len)


	{


		reg[0]=data[i++]^reg[GEN];


		if(reg[0]==1)   //如果首位为1


			XOR(reg);//  进行异或


		LShift(reg);//  否则继续左移进行扫描,直至碰到1


	}


	bool bGood=true;      //布尔函数


	for(i=GEN;i>=1;i--)  //判断reg(余数)是否为0,如果是,说明传送成功。


		if(reg[i]==1)


		{


			bGood=false;


			break;


		}


	if(bGood)


	   printf("\n传送成功!\n\n");


	else


		printf("\n传送出错!\n\n");


}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -