标题:继续请教位操作的问题
只看楼主
hexianqi1994
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2011-8-3
结帖率:86.96%
已结贴  问题点数:10 回复次数:3 
继续请教位操作的问题
题目如下
编写一个函数,该函数将一个unsigned int中的所有位向左旋转指定数量的位。例如,rotate_l(x,4)将x中的所有位向左移动4个位置,而且从左端丢失的位会重新出现在右端。也就是说,把从高位移出的位放入低位。在程序中测试该函数。
我想问一下这个程序怎样实现这一功能,特别是红字语句,看得我一头雾水
#include

int rotate_l(unsigned int number, unsigned int bit);

int main(void)
{
 unsigned int number, bit;
 printf("input a hexadecimal number and rotated bits number (q to quit):");
 while( scanf("%x%d", &number, &bit) == 2 )
 {
  printf("%x rotate %d bit left : %x\n",  number, bit, rotate_l(number, bit));
  printf("input a number(q to quit):");
 }
 printf("quit\n");

 return 0;
}

int rotate_l(unsigned int number, unsigned int bit)
{
 unsigned int i;
 unsigned int hign = 8 * sizeof(unsigned int);//最高位
 for (i=0; i<BIT; I++)
  if( number&( 1<<(hign-1) ) ) number = (number << 1) | 1;
  else number = number << 1;
return number;
}



搜索更多相关主题的帖子: 测试 旋转 include number input 
2011-08-26 16:49
zanzan1986
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:140
注 册:2011-2-22
得分:5 
在汇编中有个循环移位指令ROL 在代码中插入汇编轻松搞定
int a;
_asm mov eax, [a]
_asm ROL eax, 4
2011-08-26 18:09
lin471306489
Rank: 4
等 级:业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
得分:5 
我也看不懂了
2011-08-26 18:24
hexianqi1994
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2011-8-3
得分:0 
回复 2楼 zanzan1986
大哥,还汇编,我才学了c一个月而已
2011-08-26 20:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-348490-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.138111 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved