整数 x を n 回右に回転させた値を返す関数 rightrot(x,n) を記述します。
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;
}