The C language has operators to perform left and right bitwise shift operations (« and ») but it does not have a rotate operator. When rotating, any bit shifted out of the value is shifted back into the now-empty bit location.
However, simple expressions can be used to obtain a rotated value. For example, to rotate an 8-bit wide unsigned variable, c, one bit to the left, the following code can be used:
c = (c << 1) | (c >> 7);
To rotate a 16-bit wide unsigned variable, i, two bits to the right, you could use:
i = (i >> 2) | (i << 14);
From these expressions, you can see that rotating a byte one bit to the left, for example, is the same as rotating it seven bits to the right. And here’s a bonus of using statements such as those above: If you are using the MPLAB® XC8 compiler, it will detect that these operations perform a rotation and will use the 8-bit PIC® MCU device’s rotate instruction when possible.