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

📄 decode16.c

📁 低密度奇偶校验码的VHDL程序
💻 C
字号:
#include<stdio.h>
#include<math.h>
#define N 16
#define M 16
void main()
{   int addmod2(int x,int y);
    int i,j,dr,s,temp;
    int sum=0;
    int Z[M+N],F[M+N],S[N],G[M+N];
    int H[N][M+N]={{1,0,0,1,1,1,0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,1,1,1,0,0,1,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{1,1,0,1,0,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,1,1,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0},{0,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0},{1,0,1,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0},{1,1,0,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0},{0,1,1,1,1,0,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0},{0,1,1,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0},{0,1,0,0,0,0,0,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0},{1,0,1,1,1,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0},{0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0},{0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0},{0,0,0,1,1,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0},{0,0,0,1,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}};
	printf("\nplease input the receiving vector Z[1x(M+N)]");
    for(i=0;i<M+N;i++)
	scanf("%d",&Z[i]);
    for(dr=0;dr<10;dr++)
	{
		printf("\nS=");
	for(i=0;i<N;i++)
		{
			for(j=0;j<M+N;j++)
				{
					temp=Z[j]*H[i][j];
					sum=addmod2(temp,sum);
				}
			S[i]=sum;
			sum=0;
			printf("%d",S[i]);
		}


			s=S[0];
	for(i=1;i<N;i++)
	       {
			s=s||S[i];
	       }
	 if(s==0)  	break;
		else
		{
			printf("\nF=");
			for(i=0;i<M+N;i++)
				{
					for(j=0;j<N;j++)
						{
							temp=S[j]*H[j][i];
							sum=temp+sum;
						}
					F[i]=sum;
					sum=0;
					printf("%d",F[i]);
				}
			for(i=0;i<M+N;i++)
				G[i]=F[i];
			for(i=0;i<M+N;i++)
				for(j=0;j<M+N-1;j++)
					if(G[j]<G[j+1])
						{
							temp=G[j];
							G[j]=G[j+1];
							G[j+1]=temp;
						}
			for(i=0;i<M+N;i++)
				{
					if(F[i]==G[0])
					Z[i]=addmod2(Z[i],1);
				}
		}
	if((dr==10)||(dr>10))
				break;
	}
		printf("Z=");
		for(i=0;i<M+N;i++)
			printf("%d",Z[i]);
}
	int addmod2(int x,int y)
		{
			int sum;
			sum=x+y;
			if(sum==2)
				sum=0;
			return(sum);
		}

⌨️ 快捷键说明

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