编写一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)。函数调用形式为getbits(value,n1,n2)
value为该16位(2个字节)中的数据值,n1为欲取出的起始位,n2为欲取出的结束位,例如:getbits(0101675,5,8) 表示对八进制101675这个数,取出它的从左面起第5位到第8位。
#include <stdio.h>
int main()
{
unsigned int getbits(unsigned value,int n1,int n2);
unsigned int a;
int n1,n2;
printf("input an octal number:");
scanf("%o",&a);
printf("input n1,n2:");
scanf("%d,%d",&n1,&n2);
printf("result:%o\n",getbits(a,n1-1,n2));
return 0;
}
unsigned int getbits(unsigned value,int n1,int n2)
{
unsigned int z;
z = ~0;
z = (z >> n1)&&(z << (16-n2));
z = value & z;
z = z >> (16-n2);
return (z);
}