|
static inline int __ilog2(unsigned int x)
{
int lz;
asm ("clz %0, %1" : "=r" (lz) : "r" (x));
return 31 - lz;
}
static inline int ffs(int x)
{
return __ilog2(x & -x) + 1;
}
这是在armv5上的指令,我得出结论是返回从高到低的第一个1的位数,而实际上ffs应该返回从低位到高位第一个1 的位数,我不知道自己哪里错了,有人能帮我详细解释一下么?谢谢 |
|