首页 > 编程知识 正文

余三循环码编码规则,二进制转余三码

时间:2023-05-06 05:40:41 阅读:156034 作者:2357

#include/*函数声明*

void Begin (;

void Code (;

void Decoding (;

/*主函数*

main () )

{

printf((n ) 7、3 )循环码编码与解码(n ) );

Begin (;

}

/*编码*

void Code () )

{

int Input[3];

int Output[7];

intreg [4]={ 0,0,0,0 };

int temp,I,j,t;

printf ('请输入3位信息代码(3次输入,每次1位) : );

for(I=0; i3; I )

scanf('%d ',Input[i] );/*输入3位信息代码*

for(I=0; i3; I(/)执行除法操作) /

{temp=reg[3] Input[i]; /*生成多项式为g(x )=x^4 x^3 x^2 1*/

if(temp==2) temp=0;

reg[3]=reg[2] temp;

if(reg(3)==2) reg (3) )=0;

reg[2]=reg[1] temp;

if(reg[2]==2) reg[2]=0;

reg[1]=reg[0];

reg[0]=temp;

}

for(I=0; i3; I ) Output[i]=Input[i]; /*执行编码操作*

for(I=3; i7; I )

{

temp=reg[3];

for(j=3; j0; j----)

reg[j]=reg[j-1];

reg[0]=0;

Output[i]=temp;

}

printf (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ utf )

打印((n );

printf (编码结果:(n );

for(I=0; i7; I )

printf('%d ',Output[i] ); /*输出编码结果*

打印((n );

printf (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ utf )

打印((n );

Begin (;

}

/*解码并纠正错误*

语音解码()

{ int Input[7],Output[7];

intreg [4]={ 0,0,0,};

int temp,I,d,x,p;

printf((n7位码字(一次输入一位,7次) : ) );

for(I=0; i7; I )

scanf('%d ',Input[i] ); /*输入受理代码组*

for(I=0; i7; 进入I(/)除法电路) /

{temp=reg[3]; /*计算伴随式s(x ) /

reg[3]=reg[2] temp;

if(reg(3)==2) reg (3) )=0;

reg[2]=reg[1] temp;

if(reg[2]==2) reg[2]=0;

reg[1]=reg[0];

reg[0]=temp Input[i];

if(reg[0]==2) reg[0]=0;

}

p=reg [3]2* reg [2]4* reg [1]8* reg [0];

if(p!=1p!=2p!=3p!=7p!=8p!=13p!=14p!=0)

{ /*输入错误位数大于2位*

printf(((theerror=2) () n );

getchar (;

退出(0;

}

printf (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ utf )

printf(s ) x )=);

for(I=3; i=0; I----)

printf('%d ',reg[i] );

打印((n );

for(I=0; i7; I () )纠正1位错误() /

{ d=reg [3] * reg [2] * reg [1] * (reg [0];

Output[i]=d Input[i];

if(output[I]==2) Output[i]=0;

temp=reg[3];

x=0; /*s(x )进行自发运算求出错误位数) /

reg[3]=temp reg[2];

if(reg(3)==2) reg (3) )=0;

reg[2]=reg[1] temp;

if(reg[2]==2) reg[2]=0;

reg[1]=reg[0];

reg[0]=temp x;

(/)输出3位信息源(/

打印(thedecodingbit 3is : );

for(I=0; i3; I )

printf('%d ',Output[i] );

打印((n );

打印(thedecodingbit 7is : );/*输出7位解码结果*

for(I=0; i7; I )

printf('%d ',Output[i] );

打印((n );

printf (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ utf )

Begin (;

}

/*选择操作*

void Begin () )

{

flush(stdin;

char ch;

printf----------------------------------;

打印((n );

printf (输入----开始编码--- );

打印((n );

printf (输入----d开始解码--);

打印((n );

输入printf----e退出程序--- ';

打印((n );

printf----------------------------------;

打印((n );

ch=getchar (;

if(ch=='c ' )代码);

ELSEif(ch=='d ' ) Decoding );

elseif(ch=='n ' ) Begin );

elseif(ch=='e ' ) exit(0) 0;

ELSE{printf((inputerror () ) ) n ); flush(stdin; Begin (; (/)输入错误消息(/

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。