unsigned rightrot2(unsigned x, int n) { if (( n = n % wordlength()) > 0) { return x >> n | (x & ~(~0 << n)) << (wordlength() -n); } }
int rightrot(int x, int n) { int wordlength(void); while (n-- > 0) { x = x >> 1; x = x | (unsigned) ((x & 1) << (wordlength() - 1)); } return x; }
unsigned leftrot(unsigned x) { int lbit; lbit = x >> (wordlength() - 1); x = x << 1; x = x | lbit; return x; }
unsigned rightrot(unsigned x) { int rbit; rbit = (x & 1) << (wordlength() - 1); x = x >> 1; x = x | rbit; return x; }
unsigned rightrot(unsigned x,int n) { int wordlength(void); unsigned rbit;/* rightmost bit */ rbit = x << (wordlength() - n); x = x >> n; x = x | rbit; return x; }
unsigned rightrot(unsigned x, int n) { int wordlength(void); int rbit; while (n-- > 0){ rbit = (x & 1) << (wordlength() - 1); x = x >> 1; x = x | rbit; } return x; }
unsigned int rightrot(unsigned int x, int n) { int i; i = wordlength(x); return ( x>>n | (x & ~(~0<<n))<<(i+1-n)); }