Quantcast
Channel: Linear Feedback Shift Register efficiency - Stack Overflow
Viewing all articles
Browse latest Browse all 3

Linear Feedback Shift Register efficiency

$
0
0

I have the following code implement a shift action of a linear feedback shift register:

public int DoShift()
{
    //Find new top bit
    int feedback = Contents & tapSequence;
    int newBit = 0;
    for(int i = 1; i <= length; i++)
    {
        newBit = 1 & (newBit ^ feedback);
        feedback >>= 1;
    }
    //Remember falloff, shift register, add new bit
    int result = Contents & 1;
    Contents >>= 1;
    Contents += newBit << (length - 1);
    return result;
}

where

  • Contents is the current contents of the register
  • tapSequence is the XOR tap sequence, where a 1 represents a tapped bit and a 0 represents an untapped bit.
  • length is the number of bits the register has.

However, having run a CPU usage test, this function takes up as much as 60% of my runtime (for what I thought would've been a fairly lightweight method). Is there a more efficient way to write this? Is there a way to XOR the contents of an int with its own bits (so as to do away with the for loop)?


Viewing all articles
Browse latest Browse all 3

Latest Images

Trending Articles





Latest Images