1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/* Find the first set bit * i.e. least signifigant 1 bit: * 0 => 0 * 1 => 1 * 2 => 2 * 3 => 1 * 4 => 3 */ int ffs(unsigned int mask) { int i; if (!mask) return 0; i = 1; while (!(mask & 1)){ i++; mask = mask >> 1; } return i; }