c语言问题,急

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:36:09
c问题,急
getbits(x,p,n)函数,它返回x中从右边数第p位开始向右数n位的字段。这里假定最右边的一位为第0位,
这个函数是这么定义的
unsinged getbits (unsigned x, int p, int n)
{
return (x>>(p+1-n)) & ~(~0<<n);
}
请问return这一段什么意思,一点也看不懂,书上说的不清楚,希望得到详细的解释,谢谢,我已经被这个问题困扰很久了

return (x>>(p+1-n)) & ~(~0<<n);
>>这里是位移符号
比如x=7在2进制里就是00000111
x>>1就是右移1位 成了00000011 =3了
&这个是位与 也是在2进制里的
~这个是非, 都是位操作.

要仔细了解位操作,请在网上查 C语言 的 位操作吧.

return 返回的意思

return (x>>(p+1-n)) & ~(~0<<n); 这个运算完了返回
也可以这样用
a= (x>>(p+1-n)) & ~(~0<<n);//把这个值给一个变量
在反回它
return a;