I'm trying to understand the following code that written in C. I found a few lines that are difficult to understand.
unsigned long reflect (unsigned long crc, int bitnum) {
// reflects the lower 'bitnum' bits of 'crc'
unsigned long i, j=1, crcout=0;
for (i=(unsigned long)1<<(bitnum-1); i; i>>=1)
{
if (crc & i) crcout|=j;
j<<= 1;
}
return (crcout);
}
In this subroutine, I don't understand the for loop why the second parameter only i
, also why and what does this mean: i>>=1
? How is this loop evaluated here?
Could someone help me here to understand it And MAYBE give an example in C# as I'm familiar with it? I need to implement this function into my PLC program.
question from:
https://stackoverflow.com/questions/65940567/what-does-this-loop-mean-i-unsigned-long1bitnum-1-i-i-1 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…