C语言位运算的面试题1

输入一个字节内的数(0~255)和移动位数。输出移位结果(要求循环移位)。

  提示:系统自带的移位都是非循环的

intnum =0;

intmoveStep =0;

printf("请输入0-255的数和移动位数:");

scanf("%d %d", &num, &moveStep);

moveStep = moveStep %8;

//截掉前27位

unsignedcharcharNum = num;

//低位往高位挪

unsignedcharleftMoveNum = charNum << moveStep;

//高位往低位挪

unsignedcharrightMoveNum = charNum >> (8- moveStep);

//合到一起

unsignedcharresult = leftMoveNum | rightMoveNum;

printf("result = %d",result);

方法二:

  int n;

  unsigned char a = 0;

  printf("请输入一个字节数和移动位数:");

  scanf("%d%d", &a, &n);//输入移动的位数

   while (n--) {  //每次循环移动一位

      if ((a & 128) == 128) {

          a =   (a << 1) + 1;

        }else{

          a =   a << 1;

     }

   }

   printf("a = %d", a);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容