编写一个函数 rightrot(x,n),返回向右旋转 n 次的整数 x 的值
我看不出如何在不需要 x 长度(位数)的情况下获取这些位并将它们放在正确的位置。
我是在想错还是我真的需要以某种方式获得 x 的长度?如果是这样,我将如何获得这个长度的 x?
顺便说一下,下面的代码可能是错误的,我只是将 length_x 放入以演示我的问题。
我希望有人能指出我正确的方向。
#include <stdio.h>
unsigned rightrot(unsigned x, int n);
main()
{
unsigned x = 75;
int p, n, y;
p = 5;
n = 3;
y = 45;
printf("%u\n",rightrot(x,n));
}
unsigned rightrot(unsigned x, int n)
{
oldn = (x & ~(~0 << n)) << length_x;
x = x >> n | oldn;
return x;
}