宅在家 发表于 2020-12-11 22:46:49

小白求助

这是一个对无符号十六进制数用位运算循环左移的程序,不知道为什么输入了移动位数后就不动了

#include<stdio.h>

int move(int num, int n)
{
    int length = 0;
    int num1 = num, num2 = num;
    while (num != 0)
    {
      length++;
      num1 >>= 1;
    }
    int result = (num <<= 8) + (num2 >>= (length - n));
    return result;
}
int main(void)
{
    int num,n;
    printf("请输入一个十六进制数:");
    scanf("%x",&num);
    setbuf(stdin, NULL);
    printf("请输入移动位数:");
    scanf("%d",&n);
    setbuf(stdin, NULL);
    int result = move(num, n);
    printf("the result is %X", result);
    return 0;
}

宅在家 发表于 2020-12-11 22:47:24

附上原题目
对于无符号十六进制数0xFAFBFCFD, 用位运算对其实现循环左移8位。(注:循环左
移指的是从左边移出去的数据再从右边移回来),使用十六进制输出结果。并写出循环左移位的函数int move(n),n为左移的位数。

宅在家 发表于 2020-12-12 21:17:30

楼主自己找到问题了。。。{:10_266:}
页: [1]
查看完整版本: 小白求助