• C

# Rotate accumulator right using bitwise operators?

Basically I would like to know how to get the effect of RAR using
C bitwise operators.

e.g 1101 should become 1100

Regards &  Thanks,
arut
###### Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Commented:
What do you mean?
It's clockwise or anti-clockwise rotation?

1101 to become 1100? I assume it should be clockwise rotation right?

hongjun
0
Commented:
Assuming your "accumulator" contains n bits:

acc = ((acc&1)<<(n-1)) | (acc>>1);

So, if your accumulator contains 8 bits, this statement would be:

acc = ((acc&1)<<7) | (acc>>1);

If you wish to rotate your accumulator through a "carry bit":

acc = ((carry&1)<<7) | ((carry=acc)>>1);
carry=carry & 1;
0

Experts Exchange Solution brought to you by