题目
编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。
题目分析
先统计有效数字位,然后分布挪移。
编程实现
#include <stdio.h>
unsigned rightrotemp(unsigned x, int n);
int m;
int main()
{
int a, b;
a = 2888;
b = a;
m = 1;
while ( (a >>= 1) != 0)
m++;
printf("final=%d\n", rightrotemp(b, 4));
}
unsigned rightrotemp(unsigned x, int n)
{
int i, j;
i = x >> n;
j = x & (~(~0 << n));
x = (j << (m - n)) | i;
return x;
}