69,369
社区成员
发帖
与我相关
我的任务
分享
unsigned rightrot(unsigned x, int n) /* 循环右移 */
{
int wordlength(void); /* 确定本机器中相应类型的位长度 */
unsigned rbit;
if ((n = n % wordlength()) > 0) {
rbit = ~(~0 << n) & x;
x = (x >> n) | (rbit << (wordlength() - n));
}
return x;
}
/*
unsigned rightrot(unsigned x, int n)
{
int wordlength(void);
unsigned rbit;
while (n-- > 0) {
rbit = (x & 1) << (wordlength() - 1);
x = x >> 1;
x = x | rbit;
}
return x;
}*/