I know that the following is true
int i = 17; //binary 10001 int j = i << 1; //decimal 34, binary 100010
But, if you shift too far, the bits fall off the end. Where this happens is a matter of the size of integer you are working with.
Is there a way to perform a shift so that the bits rotate around to the other side? I’m looking for a single operation, not a for loop.
If you know the size of type, you could do something like:
… which would perform a circular shift of a 32 bit value.
As a generalization to circular shift left n bits, on a b bit variable:
@The comment, it appears that C# does treat the high bit of signed values differently. I found some info on this here. I also changed the example to use a uint.