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