小白求助
这是一个对无符号十六进制数用位运算循环左移的程序,不知道为什么输入了移动位数后就不动了#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;
}
附上原题目
对于无符号十六进制数0xFAFBFCFD, 用位运算对其实现循环左移8位。(注:循环左
移指的是从左边移出去的数据再从右边移回来),使用十六进制输出结果。并写出循环左移位的函数int move(n),n为左移的位数。
楼主自己找到问题了。。。{:10_266:}
页:
[1]