钢筋混凝土切割机视频:求助,C语言问题!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 23:53:56
编写函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)
value为该16位(2个字节)中的数据值,n1为欲取出的超始位,n2为欲取出的结束位;
例如:getbits(0101675,5,8)
书上是这样写的:
unsigned short int getbits(unsigned short value,int n1,int n2)
{unsigned short int z;
z=~0;
z=(z>>n1)&(z<<(16-n2));
z=value&z;
z=z>>(16-n2);
return(z);}
哪位能给我注释一下,并用实例讲解~谢谢!

要取16位二进制数的某几位,只要将该数与对应位为1,其他位为0的一个二进制做位与操作即可。该函数的z=~0;z=(z>>n1)&(z<<(16-n2)); 就是构造一个这样的二进制数,然后z=value&z就是做位与操作,最后再做一个右移16-n2位,是将取的那几位移到最右边。