Supponendo che la rotazione debba essere, ad esempio, di 2 bit verso destra, quindi
0 1 0 0 0 0 0 1 (A in ASCII)
0 1 0 1 0 0 0 0
(che poi equivale ad una rotazione di 8-2=6 bit verso sinistra), il problema fondamentale è che tu vai a perdere gli n bit (con n pari al valore dello shift) meno significativi, cioè se la prima configurazione di bit fosse stata semplicemente shiftata verso destra di due, il risultato sarebbe stato
0 0 0 1 0 0 0 0
questo lascia intendere che bisogna prima "salvare" quei due bit meno significativi (con una AND bitwise tra la variabile e un'apposita maschera binaria), poi fare lo shift normalmente della variabile di 2 verso destra e poi ancora andare a ripristinare quei 2 bit salvati facendo stavolta una XOR bitwise tra i due bit più significativi della configurazione ottenuta e appunto i 2 bit memorizzati.