[原创]麻烦各位给我看看这个程序对不对,如不对,怎么修改,谢谢!
/*-----编写一个函数getbits,从一个16位的单元汇总取出某几位(即该几位保留原值,其余位为0)。函数调用形式getbits(value,n1,n2).value为该16位(两个字节)中的数据值,n1为欲取出的起始位,n2为欲取出的结束位。如:getbits(0101675,5,6)表示对八进制
101675这个数,取出它的从左面起的第5位到第8位----------*/
#include <stdio.h>
#include <assert.h>
short getbits(short value,int n1,int n2)
{
short temp = 0,i;
assert(n2-n1 > -1);
for(i = n2;i >=n1;i--)
temp += 1<<(16-i);
return value&temp;
}
void main()
{
short a,n1,n2;
scanf("%o%d%d",&a,&n1,&n2);
printf("%o",getbits(a,n1,n2));
}