
lib_ffs 函数是将 int 类型数据强转为 unsigned
int 类型进行运算。
lib_ffs 函数是将 int 类型数据强转为 unsigned int 类型进行运算。通过 x & -x 算法,获得最低位的 1 对应的值。然后根据在高 32 位还是低 32 位,调用 lib_ffs 查找这 32 位中第一个 bit 为 1 的位。
这里提一下 x & -x 是咋算的,-x 的值是将 x 取反后 +1。如果 x 是偶数,取反后 +1 从最低位开始发送进位,直到 x 的那个位为 1才停止;如果 x 是奇数,取反后 +1 的最低位是 1。