#include <stdio.h>
#include <stdlib.h>
int move(int value,int n)
{
if(n==0)
{
value=value;
}
if(n>0)
{
value=(value>>n)|(value<<(sizeof(value)-n));
}
if(n<0)
{
n=-n;
value=(value<<n)|(value>>(sizeof(value)-n));
}
return value;
}
int main()
{
int value,n;
scanf("%d %d",&value,&n);
int t=move(value,n);
printf("%d\n",t);
return 0;
}
</pre><p>C语言循环移位:</p><p>需要移位的数据value有S位,需要左移n位:<pre name="code" class="cpp">(value>>n)|(value<<S-n));
<pre name="code" class="cpp">C语言移位:
value>>1 //相当于value/2; 右移int类型(有符号数),对正数的话,符号位补0;<span style="font-family: Arial, Helvetica, sans-serif;">负数,符号位补1。</span>
<span style="font-family: Arial, Helvetica, sans-serif;">value<<1 // 相当于value*2; 但是对于int类型(有符号数),左移丢掉最高位,有可能会更改符号位。低位补零。</span>