循环移位程序出来的值明显错误,但找不到错误。请各位多多指教。。。帮忙解惑。。
循环移位程序写出来了。但就是和答案对不上。而自己的值明显是错。于是抄了书上的例题运行看看。可是例题的照搬照抄的,答案还是对不上。不知道是编译系统的问题还是什么问题。。。请各位帮忙看看。。请多多指教。。。不胜感激。。。。。
#include<stdio.h>
#include<conio.h>
int main(void)
{
unsigned a,b,c;
int n;
scanf("a=%o,n=%d",&a,&n);
b = a << (16 - n);
c = a >> n;
c = b | c;
printf("原值 = %o\n移动后的值 = %o\n",a,c);
return 0;
}
/*
程序运行结果:
------------------------------
a=157653,n=3
原值 = 157653
移动后的值 = 3375275765 //这个值明显是错的。
/书上例题里移动后的值是75765。程序时照抄例题的,为什么答案会错。是编译系统的问题还是例题的问题???请各位帮忙解答。
------------------------------
*/上面是书上的例题,,,,,,,,,,,,,下面是自己的程序。
unsigned move(unsigned va,int n)
{
int a,b,c;
if(n > 0)
{
a = va << (16 - n);
b = va >> n;
c = a | b;
}
if(n < 0)
{
a = va >> (16 - n);
b = va << n;
c = a | b;
}
return(c);
}
int main(void)
{
unsigned value,n,m;
printf("请输入数据:");
scanf("%o",&value);
printf("请输入要移动的位数:");
scanf("%d",&n);
m = move(value,n);
printf("原值 = %o\n循环移动后的值 = %o",value,m);
printf("\n");
getch();
return 0;
}
/*
程序运行结果:
---------------------------------------------------
请输入数据:145432
请输入要移动的位数:3
原值 = 145432
循环移动后的值 = 3130654543 //这值也明显是错的。。。但就是找不出哪里错了。请各位多多指教。。。
---------------------------------------------------
*/