1 1.1 skrll /* ffs -- Find the first bit set in the parameter 2 1.1 skrll 3 1.1 skrll @deftypefn Supplemental int ffs (int @var{valu}) 4 1.1 skrll 5 1.1 skrll Find the first (least significant) bit set in @var{valu}. Bits are 6 1.1 skrll numbered from right to left, starting with bit 1 (corresponding to the 7 1.1 skrll value 1). If @var{valu} is zero, zero is returned. 8 1.1 skrll 9 1.1 skrll @end deftypefn 10 1.1 skrll 11 1.1 skrll */ 12 1.1 skrll 13 1.1 skrll int 14 1.1 skrll ffs (register int valu) 15 1.1 skrll { 16 1.1 skrll register int bit; 17 1.1 skrll 18 1.1 skrll if (valu == 0) 19 1.1 skrll return 0; 20 1.1 skrll 21 1.1 skrll for (bit = 1; !(valu & 1); bit++) 22 1.1 skrll valu >>= 1; 23 1.1 skrll 24 1.1 skrll return bit; 25 1.1 skrll } 26 1.1 skrll 27