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