亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bch3121.c.txt

?? 通信類程序
?? TXT
字號:
/*
 * File:    bch3121.c 
 * Author:  Robert Morelos-Zaragoza
 *
 * %%%%%%%%%%% Encoder/Decoder for a (31,21,5) binary BCH code %%%%%%%%%%%%%
 *
 *	This code is used in the POCSAG protocol specification for pagers.
 *
 *	In this specific case, there is no need to use the Berlekamp-Massey
 *	algorithm, since the error locator polynomial is of at most degree 2.
 *	Instead, we simply solve by hand two simultaneous equations to give
 * 	the coefficients of the error locator polynomial in the case of two 
 *	errors. In the case of one error, the location is given by the first
 *	syndrome.
 *
 *	This program derivates from the original bch2.c, which was written
 *	to simulate the encoding/decoding of primitive binary BCH codes.
 *	Part of this program is adapted from a Reed-Solomon encoder/decoder
 *	program,  'rs.c', to the binary case. 
 *
 *	rs.c by Simon Rockliff, University of Adelaide, 21/9/89 
 *	bch2.c by Robert Morelos-Zaragoza, University of Hawaii, 5/19/92 
 *
 * COPYRIGHT NOTICE: This computer program is free for non-commercial purposes.
 * You may implement this program for any non-commercial application. You may 
 * also implement this program for commercial purposes, provided that you
 * obtain my written permission. Any modification of this program is covered
 * by this copyright.
 *
 * %%%% Copyright 1994 (c) Robert Morelos-Zaragoza. All rights reserved. %%%%%
 *
 * m = order of the field GF(2**5) = 5
 * n = 2**5 - 1 = 31 = length 
 * t = 2 = error correcting capability 
 * d = 2*t + 1 = 5 = designed minimum distance 
 * k = n - deg(g(x)) = 21 = dimension 
 * p[] = coefficients of primitive polynomial used to generate GF(2**5)
 * g[] = coefficients of generator polynomial, g(x)
 * alpha_to [] = log table of GF(2**5) 
 * index_of[] = antilog table of GF(2**5)
 * data[] = coefficients of data polynomial, i(x)
 * bb[] = coefficients of redundancy polynomial ( x**(10) i(x) ) modulo g(x)
 * numerr = number of errors 
 * errpos[] = error positions 
 * recd[] = coefficients of received polynomial 
 * decerror = number of decoding errors (in MESSAGE positions) 
 *
 */

#include <math.h>
#include <stdio.h>

int             m = 5, n = 31, k = 21, t = 2, d = 5;
int				length = 31;
int             p[6];		/* irreducible polynomial */
int             alpha_to[32], index_of[32], g[11];
int             recd[31], data[21], bb[11];
int             numerr, errpos[32], decerror = 0;
int             seed;


void 
read_p()
/* Primitive polynomial of degree 5 */
{
	register int    i;
    p[0] = p[2] = p[5] = 1; p[1] = p[3] = p[4] =0;
}


void 
generate_gf()
/*
 * generate GF(2**m) from the irreducible polynomial p(X) in p[0]..p[m]
 * lookup tables:  index->polynomial form   alpha_to[] contains j=alpha**i;
 * polynomial form -> index form  index_of[j=alpha**i] = i alpha=2 is the
 * primitive element of GF(2**m) 
 */
{
	register int    i, mask;
	mask = 1;
	alpha_to[m] = 0;
	for (i = 0; i < m; i++) {
		alpha_to[i] = mask;
		index_of[alpha_to[i]] = i;
		if (p[i] != 0)
			alpha_to[m] ^= mask;
		mask <<= 1;
	}
	index_of[alpha_to[m]] = m;
	mask >>= 1;
	for (i = m + 1; i < n; i++) {
		if (alpha_to[i - 1] >= mask)
		  alpha_to[i] = alpha_to[m] ^ ((alpha_to[i - 1] ^ mask) << 1);
		else
		  alpha_to[i] = alpha_to[i - 1] << 1;
		index_of[alpha_to[i]] = i;
	}
	index_of[0] = -1;
}


void 
gen_poly()
/* 
 * Compute generator polynomial of BCH code of length = 31, redundancy = 10
 * (OK, this is not very efficient, but we only do it once, right? :)
 */
{
	register int    ii, jj, ll, kaux;
	int             test, aux, nocycles, root, noterms, rdncy;
	int             cycle[15][6], size[15], min[11], zeros[11];
	/* Generate cycle sets modulo 31 */
	cycle[0][0] = 0; size[0] = 1;
	cycle[1][0] = 1; size[1] = 1;
	jj = 1;			/* cycle set index */
	do {
		/* Generate the jj-th cycle set */
		ii = 0;
		do {
			ii++;
			cycle[jj][ii] = (cycle[jj][ii - 1] * 2) % n;
			size[jj]++;
			aux = (cycle[jj][ii] * 2) % n;
		} while (aux != cycle[jj][0]);
		/* Next cycle set representative */
		ll = 0;
		do {
			ll++;
			test = 0;
			for (ii = 1; ((ii <= jj) && (!test)); ii++)	
			/* Examine previous cycle sets */
			  for (kaux = 0; ((kaux < size[ii]) && (!test)); kaux++)
					if (ll == cycle[ii][kaux])
						test = 1;
		} while ((test) && (ll < (n - 1)));
		if (!(test)) {
			jj++;	/* next cycle set index */
			cycle[jj][0] = ll;
			size[jj] = 1;
		}
	} while (ll < (n - 1));
	nocycles = jj;		/* number of cycle sets modulo n */
	/* Search for roots 1, 2, ..., d-1 in cycle sets */
	kaux = 0;
	rdncy = 0;
	for (ii = 1; ii <= nocycles; ii++) {
		min[kaux] = 0;
		for (jj = 0; jj < size[ii]; jj++)
			for (root = 1; root < d; root++)
				if (root == cycle[ii][jj])
					min[kaux] = ii;
		if (min[kaux]) {
			rdncy += size[min[kaux]];
			kaux++;
		}
	}
	noterms = kaux;
	kaux = 1;
	for (ii = 0; ii < noterms; ii++)
		for (jj = 0; jj < size[min[ii]]; jj++) {
			zeros[kaux] = cycle[min[ii]][jj];
			kaux++;
		}
	printf("This is a (%d, %d, %d) binary BCH code\n", length, k, d);
	/* Compute generator polynomial */
	g[0] = alpha_to[zeros[1]];
	g[1] = 1;		/* g(x) = (X + zeros[1]) initially */
	for (ii = 2; ii <= rdncy; ii++) {
	  g[ii] = 1;
	  for (jj = ii - 1; jj > 0; jj--)
	    if (g[jj] != 0)
	      g[jj] = g[jj - 1] ^ alpha_to[(index_of[g[jj]] + zeros[ii]) % n];
	    else
	      g[jj] = g[jj - 1];
	  g[0] = alpha_to[(index_of[g[0]] + zeros[ii]) % n];
	}
	printf("g(x) = ");
	for (ii = 0; ii <= rdncy; ii++) {
	  printf("%d", g[ii]);
	  if (ii && ((ii % 70) == 0))
	    printf("\n");
	}
	printf("\n");
}


void 
encode_bch()
/* 
 * Calculate redundant bits bb[], codeword is c(X) = data(X)*X**(n-k)+ bb(X)
 */
{
	register int    i, j;
	register int    feedback;
	for (i = 0; i < length - k; i++)
		bb[i] = 0;
	for (i = k - 1; i >= 0; i--) {
		feedback = data[i] ^ bb[length - k - 1];
		if (feedback != 0) {
			for (j = length - k - 1; j > 0; j--)
				if (g[j] != 0)
					bb[j] = bb[j - 1] ^ feedback;
				else
					bb[j] = bb[j - 1];
			bb[0] = g[0] && feedback;
		} else {
			for (j = length - k - 1; j > 0; j--)
				bb[j] = bb[j - 1];
			bb[0] = 0;
		};
	};
};


void 
decode_bch()
/*
 * We do not need the Berlekamp algorithm to decode.
 * We solve before hand two equations in two variables.
 */
{
	register int    i, j, q;
	int             elp[3], s[5], s3;
	int             count = 0, syn_error = 0;
	int             loc[3], err[3], reg[3];
	int				aux;
	/* first form the syndromes */
	printf("s[] = (");
	for (i = 1; i <= 4; i++) {
		s[i] = 0;
		for (j = 0; j < length; j++)
			if (recd[j] != 0)
				s[i] ^= alpha_to[(i * j) % n];
		if (s[i] != 0)
			syn_error = 1;	/* set flag if non-zero syndrome */
							/* NOTE: If only error detection is needed,
							 * then exit the program here...
							 */
		/* convert syndrome from polynomial form to index form  */
		s[i] = index_of[s[i]];
		printf("%3d ", s[i]);
	};
	printf(")\n");
	if (syn_error) {	/* If there are errors, try to correct them */
		if (s[1] != -1) {
			s3 = (s[1] * 3) % n;
			if ( s[3] == s3 )  /* Was it a single error ? */
				{
				printf("One error at %d\n", s[1]);
				recd[s[1]] ^= 1;		/* Yes: Correct it */
				}
			else {				/* Assume two errors occurred and solve
								 * for the coefficients of sigma(x), the
								 * error locator polynomail
								 */
                if (s[3] != -1)
                  aux = alpha_to[s3] ^ alpha_to[s[3]];
                else
                  aux = alpha_to[s3];
				elp[0] = 0;
				elp[1] = (s[2] - index_of[aux] + n) % n;
				elp[2] = (s[1] - index_of[aux] + n) % n;
				printf("sigma(x) = ");
				for (i = 0; i <= 2; i++)
					printf("%3d ", elp[i]);
				printf("\n");
				printf("Roots: ");
				/* find roots of the error location polynomial */
				for (i = 1; i <= 2; i++)
					reg[i] = elp[i];
				count = 0;
				for (i = 1; i <= n; i++) { /* Chien search */
					q = 1;
					for (j = 1; j <= 2; j++)
						if (reg[j] != -1) {
							reg[j] = (reg[j] + j) % n;
							q ^= alpha_to[reg[j]];
						}
					if (!q) {	/* store error location number indices */
						loc[count] = i % n;
						count++;
						printf("%3d ", (i%n));
					}
				}
				printf("\n");
				if (count == 2)	
				/* no. roots = degree of elp hence 2 errors */
					for (i = 0; i < 2; i++)
						recd[loc[i]] ^= 1;
				else	/* Cannot solve: Error detection */
					printf("incomplete decoding\n");
				}
			}
		else if (s[2] != -1) /* Error detection */
			printf("incomplete decoding\n");
	}
}


main()
{
	int             i;
	read_p();				/* read generator polynomial g(x) */
	generate_gf();			/* generate the Galois Field GF(2**m) */
	gen_poly();				/* Compute the generator polynomial of BCH code */

	seed = 1;
	srandom(seed);
	/* Randomly generate DATA */
	for (i = 0; i < k; i++)
		data[i] = (random() & 67108864) >> 26;

	/* ENCODE */
	encode_bch();			/* encode data */
 
	for (i = 0; i < length - k; i++)
		recd[i] = bb[i];	/* first (length-k) bits are redundancy */
	for (i = 0; i < k; i++)
		recd[i + length - k] = data[i];	/* last k bits are data */
	printf("c(x) = ");
	for (i = 0; i < length; i++) {
		printf("%1d", recd[i]);
		if (i && ((i % 70) == 0))
			printf("\n");
	}
	printf("\n");

	/* ERRORS */
    printf("Enter the number of errors and their positions: ");
    scanf("%d", &numerr);
	for (i = 0; i < numerr; i++)
		{
		scanf("%d", &errpos[i]);
		recd[errpos[i]] ^= 1;
		}
	printf("r(x) = ");
	for (i = 0; i < length; i++)
		printf("%1d", recd[i]);
	printf("\n");

    /* DECODE */
	decode_bch();
	/*
	 * print out original and decoded data
	 */
	printf("Results:\n");
	printf("original data  = ");
	for (i = 0; i < k; i++)
		printf("%1d", data[i]);
	printf("\nrecovered data = ");
	for (i = length - k; i < length; i++)
		printf("%1d", recd[i]);
	printf("\n");
	/* decoding errors: we compare only the data portion */
	for (i = length - k; i < length; i++)
		if (data[i - length + k] != recd[i])
			decerror++;
	if (decerror)
		printf("%d message decoding errors\n", decerror);
	else
		printf("Succesful decoding\n");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产丝袜白色高跟鞋| 免费视频最近日韩| 99在线精品观看| 亚洲视频一区在线| 日本高清不卡一区| 五月综合激情网| 日韩视频一区二区| 国产一区在线视频| 国产精品毛片大码女人| 色综合久久中文综合久久97| 亚洲国产一区视频| 日韩免费视频线观看| 国产精品一线二线三线| 国产欧美一区二区精品性色超碰 | 亚洲成人资源在线| 欧美精品一卡二卡| 狠狠v欧美v日韩v亚洲ⅴ| 中文字幕+乱码+中文字幕一区| 99国产精品一区| 亚洲国产视频网站| 久久久久一区二区三区四区| aaa亚洲精品| 婷婷六月综合亚洲| 久久欧美一区二区| 欧美三级在线看| 国产麻豆精品theporn| 亚洲卡通欧美制服中文| 91精品国产91久久久久久一区二区 | 一区二区三区不卡在线观看| 3atv一区二区三区| 成人免费视频视频在线观看免费 | 亚洲国产视频一区二区| 日韩欧美一区中文| 91丝袜国产在线播放| 日韩国产欧美在线观看| 国产精品麻豆久久久| 欧美高清激情brazzers| aaa亚洲精品| 国产在线精品一区二区不卡了| 一区二区三区久久久| 国产亚洲成av人在线观看导航| 欧美三级日韩三级| 成人手机电影网| 免费av网站大全久久| 亚洲精品国产第一综合99久久| 欧美精品一区视频| 欧美年轻男男videosbes| av电影天堂一区二区在线观看| 激情综合网天天干| 五月天一区二区三区| 亚洲欧洲精品一区二区精品久久久 | 麻豆成人91精品二区三区| 国产精品激情偷乱一区二区∴| 欧美视频你懂的| 国产制服丝袜一区| 亚洲成a人v欧美综合天堂下载 | 亚洲精品视频在线| 日韩欧美一区二区久久婷婷| 95精品视频在线| 国产真实乱偷精品视频免| 亚洲综合无码一区二区| 欧美xxxx老人做受| 日韩午夜av电影| 欧日韩精品视频| 丁香六月久久综合狠狠色| 日本麻豆一区二区三区视频| 1024亚洲合集| 久久久99精品免费观看不卡| 欧美日韩日日摸| 成+人+亚洲+综合天堂| 久久成人av少妇免费| 亚洲午夜在线观看视频在线| 国产精品卡一卡二| 久久综合中文字幕| 欧美一区二区福利在线| 色婷婷亚洲一区二区三区| 成人综合婷婷国产精品久久蜜臀| 日韩电影免费在线| 五月综合激情日本mⅴ| 亚洲一区在线观看视频| 亚洲精品乱码久久久久久久久 | 日韩经典中文字幕一区| 亚洲精品视频免费看| 欧美国产成人精品| 久久久久国产成人精品亚洲午夜| 在线播放日韩导航| 91在线观看美女| 色综合色综合色综合色综合色综合| 成人精品国产福利| 成人网在线免费视频| 国产东北露脸精品视频| 黄色成人免费在线| 九九视频精品免费| 精品一区二区三区免费毛片爱| 免费观看日韩电影| 另类成人小视频在线| 久久国产精品99精品国产| 热久久久久久久| 丝袜美腿亚洲色图| 国产在线乱码一区二区三区| 国模娜娜一区二区三区| 国产精品一区二区久久不卡 | 91老师国产黑色丝袜在线| aa级大片欧美| 色欧美乱欧美15图片| 精品视频123区在线观看| 精品视频资源站| 91麻豆精品国产91久久久久久久久| 日韩手机在线导航| 精品理论电影在线观看| 久久精品一区二区三区四区| 国产精品美女久久久久aⅴ| 亚洲欧美影音先锋| 亚洲午夜在线观看视频在线| 日本在线不卡视频| 国模少妇一区二区三区| 国产真实精品久久二三区| 国产精品18久久久久| 91在线观看美女| 欧美日韩国产欧美日美国产精品| 日韩三级高清在线| 国产日韩欧美一区二区三区乱码 | 国产在线一区观看| 日本福利一区二区| 欧美一区日韩一区| 国产欧美中文在线| 亚洲午夜视频在线观看| 蜜臀a∨国产成人精品| 国产精品小仙女| 色综合激情久久| 欧美mv日韩mv亚洲| 综合av第一页| 日本色综合中文字幕| 成人免费av在线| 在线观看视频91| 精品日韩av一区二区| 国产精品成人免费| 日韩va亚洲va欧美va久久| 国产成人av一区| 欧美日韩一区三区| 国产欧美一区二区精品久导航| 亚洲蜜桃精久久久久久久| 奇米色一区二区三区四区| 粉嫩av一区二区三区| 91麻豆精品国产91久久久久久久久| 日本一区二区三区dvd视频在线| 舔着乳尖日韩一区| 国产一区二区三区黄视频 | 成人午夜av影视| 制服.丝袜.亚洲.中文.综合| 日韩视频一区二区三区在线播放 | 亚洲人成人一区二区在线观看| 蜜桃av噜噜一区二区三区小说| 97久久久精品综合88久久| 精品久久一区二区| 午夜影视日本亚洲欧洲精品| 成人看片黄a免费看在线| 欧美日韩亚洲综合在线| 成人免费一区二区三区视频 | 国产精品电影院| 久久精品72免费观看| 在线精品视频一区二区| 国产午夜精品一区二区| 奇米四色…亚洲| 欧美另类变人与禽xxxxx| 亚洲色图欧美偷拍| 国产裸体歌舞团一区二区| 6080yy午夜一二三区久久| 国产精品你懂的| 五月激情丁香一区二区三区| 欧美欧美欧美欧美| 亚洲成人免费在线| 91成人网在线| 亚洲男帅同性gay1069| 成人高清视频免费观看| 久久免费看少妇高潮| 精品在线免费观看| 日韩久久精品一区| 日韩电影免费在线看| 欧美日韩国产综合一区二区| 亚洲综合精品自拍| 色噜噜狠狠色综合中国| 亚洲欧美日韩中文字幕一区二区三区 | 精品国产91洋老外米糕| 亚洲一级电影视频| 91黄视频在线| 一区二区免费看| 色拍拍在线精品视频8848| 亚洲精品免费播放| 欧美艳星brazzers| 国产精品人妖ts系列视频| 国产精品一二三四| 最新日韩av在线| 色婷婷亚洲婷婷| 亚洲成av人影院| 欧美一级二级三级蜜桃| 久久精品久久综合| 国产午夜精品一区二区三区嫩草 | 国产曰批免费观看久久久| 26uuu国产一区二区三区|