[求助]二进制数取出它的奇数位
写一个函数,对于一个16位的二进制数取出它的奇数位(即从左边起第1,3,5…..15位),
看着下面的代码,想了半天也没想明白,哪位给讲一讲? 多谢了
#include<stdio.h>
int main()
{ unsigned getbits(unsigned);
unsigned int a;
printf("\nInput an octal number:");
scanf("%o",&a);
printf("result:%o\n",getbits(a));
}
unsigned getbits(unsigned value)
{ int i,j,m,n;
unsigned int z,a,q;
z=0;
for(i=1;i<=15;i++)
{ q=1;
for(j=1;j<=(16-i-1)/2;j++)
q=q*2;
a=value>>(16-2);
a=a<<15;
a=a>>15;
z=z+a*q;
}
return(z);
}
[此贴子已经被作者于2006-9-13 11:55:24编辑过]