错误找到了:应该为如下:(红色代码是改动的)
main()
{
unsigned int a;
int n1,n2;
printf("input an number");
scanf("%o",&a);
printf("input n1 and n2");
scanf("%d%d",&n1,&n2);
printf("output:%o\n",getbits(a,n1-1,n2));
}
getbits(unsigned value,int n1,int n2)
{unsigned int z,z1,z2;
z=~0;
z1=z>>n1;
z2=z<<(16-n2);
z=z1&z2;
z=value&z;
z=z>>(16-n2);
return(z);
}
原来是:z=(z>>n1)&(z<<(16-n2); (z>>n1)和(z<<(16-n2)是同时进行,所以z不可能既向左移动又向右移动
----------------解决方案--------------------------------------------------------
main()
{
unsigned int a;
int n1,n2;
printf("input an number");
scanf("%o",&a);
printf("input n1 and n2");
scanf("%d%d",&n1,&n2);
printf("output:%o\n",getbits(a,n1-1,n2));
}
getbits(unsigned value,int n1,int n2)
{unsigned int z,z1,z2;
z=~0;
z1=z>>n1;
z2=z<<(16-n2);
z=z1&z2;
z=value&z;
z=z>>(16-n2);
return(z);
}
原来是:z=(z>>n1)&(z<<(16-n2); (z>>n1)和(z<<(16-n2)是同时进行,所以z不可能既向左移动又向右移动
[此贴子已经被作者于2006-6-17 0:43:09编辑过]
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽