m序列代码
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<windows.h>
#pragma warning(disable:4996)
int sc[7], m[127];
int i,x,y,z;
char *a[100];
void m_sequence(int y, int z)
{
int n, d, m, i1;
char b[100];
i1 = 0;
n = z;
while (n){
m = n % 8;
n = n / 8;
d = 3;
while (d){
b[i1] = m % 2 + '0';
m = m / 2;
d--;
i1++;
}
}
i1 -= 1;
for (; b[i1] == '0'; i1--);
for (; i1 >= 0; i1--){
x = i1;
a[x] = &b[i1];
}
i = 0;
printf("m序列:");
for (int n1 = 0; n1 < pow(2,y) - 1; n1++)
{
for (int n2 = 0; n2 < y; n2++)
{
if (*a[y - n2 - 1] == '1')
{
i = i^sc[n2];
}
}
printf("%d", i);
for (int n3 = 1; n3 < y; n3++)
{
sc[y - n3] = sc[y - n3 - 1];
}
sc[0] = i;
if (i == 1)
i = 0;
}
printf("\n");
}
void main()
{
printf("请输入初始码位数:");
scanf("%d", &y);
printf("请输入初始码:");
for (int n = 0; n<y; n++)
{
scanf("%d", &sc[n]);
}
printf("请输入反馈系数:");
scanf("%o", &z);
m_sequence(y,z);
system("pause");
}
附一张m序列的反馈系数图