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