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.