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