FFS32(3) | Library Functions Manual | FFS32(3)

# NAME

`ffs32`, `ffs64`, `fls32`, `fls64` —
find first or last bit set

# SYNOPSIS

`#include <sys/bitops.h>`

int
`ffs32`(uint32_t n);

int
`ffs64`(uint64_t n);

int
`fls32`(uint32_t n);

int
`fls64`(uint64_t n);

# DESCRIPTION

The `ffs32`() and `ffs64`() functions find the first bit set in n and return the index of that bit. Conversely, the `fls32`() and `fls64`() functions find the last bit set in n, returning the index of the bit.

The search always starts from the bit 1 (the least significant bit). If the argument n is zero, each function returns zero.

# IMPLEMENTATION NOTES

The described functions are implemented as static inline functions in the `<sys/bitops.h>` header. The standard C library includes a more portable ffs(3) for user applications.

# EXAMPLES

In the following example f = 3 and l = 7:

    uint32_t n = 0x44;	/* 01000100 */
    int f, l;

    f = ffs32(n);
    l = fls32(n);

# SEE ALSO

bitops(3), bits(3), bitstring(3), ffs(3), setbit(9)

# HISTORY

These functions first appeared in NetBSD 5.0.

April 8, 2011 | NetBSD 9.2