//实现无符号循环右移;
#include <stdio.h>
unsigned int rotate_right(unsigned int x,int num);
int main(void)
{
unsigned int x;
unsigned int num;
char string[40];
printf("输入操作数和右移次数:");
while(scanf("%d%d",&x,&num)==2)
{
printf("\n数 %u 右移 %u 位的结果是: ",x,num);
x=rotate_right(x,num);
itoa(x,string,2);
printf("%s\n",string);
printf("输入操作数和右移次数:");
}
return 0;
}
unsigned int rotate_right(unsigned int x,int num)
{
int i;
for(i=0;i<num;i++)
{
if((x&1)==1)
{
x=x>>1;
x=x|(1<<31);
}
else
{
x=x>>1;
x=x&(~(1<<31));
}
}
return x;
}
largeQ
LEATH