📄 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 + -