读入一个10进制正整数,将其二进制向右进行循环移位,并输出移位后的结果。
#include <stdio.h>
int main()
{
unsigned int a,b;
int i,n;
scanf("%u%d",&a,&n);
for(i=1;i<=n;i++)
{
b=a & 1;//取最后一位
a=a>>1; //右移,舍掉最后一位
if(b==1) //如果最后一位为1
a=a | 0x80000000;//则把a的最前面一位变成1,从而实现循环移位
}
printf("%u
",a);
return 0;
}
#include <stdio.h>
int main()
{
unsigned int a,n,i;
scanf("%u %u",&a,&n);
while(n--)
{
i=a%2;//把a当作二进制,所以对2取模看看末位是否为1
a/=2;//把a右移1位,空出首位
if(i==1)//原数末位为1
{
a|=0x80000000;//和1000 0000 0000 0000 0000 0000 0000 0000按位或操作,可把之前末位的1写到新数的首位而其他位不变
}
}
printf("%u
",a);
return 0;
}