如何用c语言实现循环左移

要编译可以通过的
用c语言编写一段代码 可以实现循环左移,c语言有左移运算符〈〈 但是没有循环左移

第1个回答  2018-05-11
//本程序的作用是将一个正整数m,如果n>0则将循环左移n位,如果n>0则将m循环右移n位,否则不移动
unsigned int m;
int n;
unsigned int temp = -1; //temp取unsinged int 的最大值
scanf("%u%d", &m, &n); //从键盘得到移位的数据
printf("m=%#x\tn=%#x\n", m, n); //显示刚刚输入的数据,以十六进制形式,带0x
n %= sizeof(unsigned int) * 8; //如果移位的位数超过最大位数unsigned int的总位 //数,则相当于循环一轮

if (n > 0) //左移
{
temp = (temp&m) >> (sizeof(m) * 8 - n); //得到移出去的数据
m = m << n;
m = m | temp; //将移出去的数据补回来
}
else if (n < 0) //右移
{
n = -n;
temp = (temp&m) << (sizeof(m) * 8 - n);//得到移出去的数据
m = m >> n;

m = m | temp;//将移出去的数据补回来 。
}
printf("m=%#x\n", m); //将移位后的m显示
第2个回答  2009-11-23
你是要实现前移到上一个循环吗?
第3个回答  2009-11-13
拜托你们问题说清楚一些
相似回答