需求:要求将a向右n位,最右端的n位则移到最左边的n位。
分析:移位操作,考虑使用位运算来实现。可以先保留低n位,对a进行右移操作,之后把高n位与低32-n位或运算即可。
实现:
void main(int argc,char *argv[])
{
int a,b,n;
scanf("%d %d",&a,&n);
printf("a=%0x\n",a);
b=a<<(32-n);
a>>=n;
a=a|b;
printf("a=%0x\n",a);
}
需求:要求将a向右n位,最右端的n位则移到最左边的n位。
分析:移位操作,考虑使用位运算来实现。可以先保留低n位,对a进行右移操作,之后把高n位与低32-n位或运算即可。
实现:
void main(int argc,char *argv[])
{
int a,b,n;
scanf("%d %d",&a,&n);
printf("a=%0x\n",a);
b=a<<(32-n);
a>>=n;
a=a|b;
printf("a=%0x\n",a);
}