|
/* Return the bit position of the most significant 1 bit in a word */
static inline int __ilog2(register unsigned int x)
{
register int lz;
asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x));
return 31 - lz;
}
这个函数究竟是返回x最左边的第一个1的位置,还是最右边的第一个1的位置?查看了ppc的手册,好像cntlzw应该是返回最左边的,那么再用31来减,不就变成最右边的了?
可是最重要的位应该是从左边数起的吧?搞不懂。特此求助,谢谢! |
|