Ist zwar kein C++, aber da c++ mit Sicherheit inlineAssembler besitzt, solltest du diese Variante vielleicht in Anschein nehmen:

ROR Variable,Bit
oder
ROL Variable,Bit

Das erste Rotiert die Anzahl der in "Bit" Angegebenen Bit nach rechts, das 2te Beispieln nach links.

Ist übrigends eine Methode um Zahlen zu teilen oder zu verdoppeln. Nach links veschieben verdoppelt den Wert der Variable, nach Rechts verschieben verkleinert den Wert um die Hälfte. Ganze durch 2 teilbare Zahlen sind allerdings Vorrausgesetzt, sonst gibt's unschöne Float-Werte.