注释C语言代码

以下是两个子函数的代码,我想知道他们每一步表示什么意思,想注释更清晰一些,求高手指导
#include"stdio.h"
#include"string.h"
// LFSR进动一拍
unsigned char *LFSR_go(unsigned char *pzt, unsigned char *pjg, int n) //n为状态区字节数
{
unsigned char t=0;

int c=0,i;

for (i=0; i<n; i++) t^=(pzt[i]&pjg[i]);

t^=((t<<1)^(t<<2)^(t<<3)^(t<<4)^(t<<5)^(t<<6)^(t<<7));

if (t&0x80) c=1;

for (i=n-1; i>=0; i--)

{

t=pzt[i];

pzt[i]=((t<<1)|c)&0xff;

c=(t&0x80)?1:0;

}

return (pzt);

}

// DSR进动一拍

unsigned char *DSR_go(unsigned char *pzt, unsigned char *pjg, int n) //n为状态区字节数

{

unsigned char t;

int c=0,i;

for (i=n-1; i>=0; i--)

{

t=pzt[i];

pzt[i]=((t<<1)|c)&0xff;

c=(t&0x80)?1:0;

}

if (c)

for (i=0; i<n; i++) pzt[i]^=pjg[i];

return (pzt);

}

#include"stdio.h"
#include"string.h"
// LFSR进动一拍
unsigned char *LFSR_go(unsigned char *pzt, unsigned char *pjg, int n) //n为状态区字节数
{
unsigned char t=0;

int c=0,i;

for (i=0; i<n; i++) t^=(pzt[i]&pjg[i]); //pzt与pjg的进行与运算,结果在与t进行异或操作,并把结果赋给t,共进行n次

t^=((t<<1)^(t<<2)^(t<<3)^(t<<4)^(t<<5)^(t<<6)^(t<<7)); //不同计算机运算循序不一样,这里从左到右算,t左移一位结果与t左移两位的结果进行异或操作
//以后依次迭代

if (t&0x80) c=1; //判断t的高位是否为1

for (i=n-1; i>=0; i--)

{

t=pzt[i];

pzt[i]=((t<<1)|c)&0xff; //感觉这里&0xff多余了,与0xff进行与操作应该还是原值,左移一位

c=(t&0x80)?1:0; //取首位值

}

return (pzt);

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-05-26

3.6.1 代码注释

相似回答