📄 5级线性反馈移位积存器模拟.txt
字号:
#include<iostream.h>
void fun(int a[5],int b[50] ,int c[5])//异或运算
{
int i,j,data;
for(i=0;i<50;i++)
{
b[i]=a[0];
data=(c[4]*a[0])^(c[3]*a[1])^(c[2]*a[2])^(c[1]*a[3])^(c[0]*a[4]);
for(j=0;j<4;j++)
a[j]=a[j+1];
a[4]=data;
}
}
const int n=5;//5维线性反馈移位寄存器
int find(int aa[])//计算周期
{
int flag=(2<<n-1)-1;//周期上界
int T=5;//初始化周期(逐步搜索)
int i;
for(i=0;i<flag;i++)
{
while(aa[i]==aa[i+T]&&i<=flag-T)
{i++;}
if(i==flag-T+1) {return T;}
else {i=0;T++;}
}
return 0;
}
void main()
{
int a[5],b[50],c[5];
int i,j;
for(i=4;i>=0;i--)//反馈函数的系数输入为0或1(总是假定C4为1)
{
cout<<"Value for c["<<i<<"]=";
cin>>c[i];
}
for(j=0;j<5;j++)//输入初始状态为0或1的序列
{
cout<<"Value for a["<<j<<"]=";
cin>>a[j];
}
fun(a,b,c);
cout<<"输出序列为:";
for(i=0;i<50;i++)
cout<<b[i];//输出序列
if(i>=50)
cout<<"......"<<endl;
cout<<"周期为:"<<find(b)<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -