FFS(3)                 FreeBSD Library Functions Manual                 FFS(3)

NAME

     ffs, ffsl, ffsll, fls, flsl, flsll - find first or last bit set in a bit
     string

LIBRARY

     Standard C Library (libc, -lc)

SYNOPSIS

     #include <strings.h>

     int
     ffs(int value);

     int
     ffsl(long value);

     int
     ffsll(long long value);

     int
     fls(int value);

     int
     flsl(long value);

     int
     flsll(long long value);

DESCRIPTION

     The ffs(), ffsl() and ffsll() functions find the first (least
     significant) bit set in value and return the index of that bit.

     The fls(), flsl() and flsll() functions find the last (most significant)
     bit set in value and return the index of that bit.

     Bits are numbered starting at 1, the least significant bit.  A return
     value of zero from any of these functions means that the argument was
     zero.

SEE ALSO

     bitstring(3), stdc_first_trailing_one(3), stdc_trailing_zeros(3),
     bitset(9)

STANDARDS

     The ffs() function conforms to IEEE Std 1003.1-2008 ("POSIX.1").  The
     ffsl() and ffsll() functions conform to IEEE Std 1003.1-2024 ("POSIX.1").

HISTORY

     The ffs() function appeared in 4.3BSD.  Its prototype existed previously
     in <string.h> before it was moved to <strings.h> for IEEE Std 1003.1-2001
     ("POSIX.1") compliance.

     The ffsl(), fls() and flsl() functions appeared in FreeBSD 5.3.  The
     ffsll() and flsll() functions appeared in FreeBSD 7.1.

FreeBSD 15.1-STABLE-HBSD       October 25, 2025                         FFS(3)