很短的移位的程序,运行却不如意,求指导
#include <stdio.h>#include <stdlib.h>
int main()
{ unsigned a,b,c;
int n;
scanf("a=%o,n=%d",&a,&n);
b=a<<(16-n);
c=a>>n;
c=c|b;
printf("%o %o",a,c);
return 0;
}
程序功能是将右端n位移到左端的n位。
运行: a=157653,n=3(回车)
结果为: 157653 3375275765
自己算的结果应为: 157653 75765
因为八进制 157653,化为二进制为:1101111110101011 移位后应为:0111101111110101 即为八进制 75765
不知哪出了问题