函数getbits(x, p, n),它用于返回x从p位置开始
的(右对齐的) n位的值。假定第0位是最右边的一位, n与p都是符合情理的正值。例如,
getbits(x, 4, 3)返回右对齐的第4、3、2共三位:
/* getbits:取从第p位开始的n位*/
unsigned getbits(unsigned x, int p, int n)
{
return (x >> (p+1-n) ) & ~(~ 0 << n);
}其中的表达式x >> (p+1-n) 将所希望的位段移到字的右边。~ 0 将所有位都置为1,~ 0 << n将
(~) 0左移n位,将最右边的n位用0填空。再对这个表达式求反,将最右边n位置为1,其余各位
置为0。 表达式x >> (p+1-n) 将所希望的位段移到字的右边】这句什么意思?
哔哔one
桃花长相依
相关分类