STDC_HAS_SINGLE_BIT(3)                        FreeBSD Library Functions Manual

NAME

     stdc_has_single_bit - check for single bit set

SYNOPSIS

     /* -lc */
     #include <stdbit.h>

     bool
     stdc_has_single_bit_uc(unsigned char value);

     bool
     stdc_has_single_bit_us(unsigned short value);

     bool
     stdc_has_single_bit_ui(unsigned int value);

     bool
     stdc_has_single_bit_ul(unsigned long value);

     bool
     stdc_has_single_bit_ull(unsigned long long value);

     bool
     stdc_has_single_bit(value);

DESCRIPTION

     The stdc_has_single_bit_type() family of functions checks if there is
     exactly one bit set in value, where value is of type unsigned char,
     unsigned short, unsigned int, unsigned long, or unsigned long long for
     type being uc, us, ui, ul, or ull respectively.  The
     stdc_has_single_bit(value) type-generic macro picks the appropriate
     stdc_has_single_bit_type() function based on the type of value.

     The functions in this family behave similarly to the powerof2(value)
     macro of <sys/param.h>, but differ when value is zero: while powerof2()
     considers zero to be a power of two, stdc_has_single_bit() does not.

RETURN VALUES

     Returns true if exactly one bit is set in value, otherwise returns false.
     I.e. the function determines if value is a power of two.

SEE ALSO

     stdbit(3), stdc_count_ones(3)

STANDARDS

     The stdc_has_single_bit_type() family of functions and the
     stdc_has_single_bit() type-generic macro conform to ISO/IEC 9899:2024
     ("ISO C23").

HISTORY

     The stdc_has_single_bit_type() family of functions and the
     stdc_has_single_bit() type-generic macro were added in FreeBSD 15.1.

AUTHOR

     Robert Clausecker <fuz@FreeBSD.org>

FreeBSD 15.1-STABLE-HBSD       November 9, 2025         STDC_HAS_SINGLE_BIT(3)