STDBIT(3)              FreeBSD Library Functions Manual              STDBIT(3)

NAME

     stdbit - bit and byte utilities

SYNOPSIS

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

     #define __STDC_ENDIAN_LITTLE__
     #define __STDC_ENDIAN_BIG__
     #define __STDC_ENDIAN_NATIVE__

     unsigned int
     stdc_count_leading_zeros(value);

     unsigned int
     stdc_count_leading_ones(value);

     unsigned int
     stdc_count_trailing_zeros(value);

     unsigned int
     stdc_count_trailing_ones(value);

     unsigned int
     stdc_first_leading_zero(value);

     unsigned int
     stdc_first_leading_one(value);

     unsigned int
     stdc_first_trailing_zero(value);

     unsigned int
     stdc_first_trailing_one(value);

     unsigned int
     stdc_count_zeros(value);

     unsigned int
     stdc_count_ones(value);

     bool
     stdc_has_single_bit(value);

     unsigned int
     stdc_bit_width(value);

     typeof(value)
     stdc_bit_floor(value);

     typeof(value)
     stdc_bit_ceil(value);

DESCRIPTION

     The __STDC_ENDIAN_NATIVE__ macro describes the byte order or endianness
     of the machine for which the program is built.  If the machine has big-
     endian byte order, this macro is equal to __STDC_ENDIAN_BIG__.  If the
     machine has little-endian byte order, this macro is equal to
     __STDC_ENDIAN_LITTLE__.  Otherwise, the macro has a value that is equal
     to neither.

     The bit and byte utility functions analyze the bits within a datum.  Each
     function func is provided in five variants stdc_func_type(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.  Additionally, for each func, a type-generic macro
     stdc_func(value) that picks the appropriate function
     stdc_func_type(value) based on the type of value is provided.

SEE ALSO

     arch(7), bitstring(3), ffs(3), fls(3), stdc_count_leading_zeros(3),
     stdc_count_leading_ones(3), stdc_count_trailing_zeros(3),
     stdc_count_trailing_ones(3), stdc_first_leading_zero(3),
     stdc_first_leading_one(3), stdc_first_trailing_zero(3),
     stdc_first_trailing_one(3), stdc_count_zeros(3), stdc_count_ones(3),
     stdc_has_single_bit(3), stdc_bit_width(3), stdc_bit_floor(3),
     stdc_bit_ceil(3)

STANDARDS

     The macros and functions of the <stdbit.h> header conform to ISO/IEC
     9899:2024 ("ISO C23").

HISTORY

     The <stdbit.h> header and the macros and functions defined therein where
     added in FreeBSD 15.1.

AUTHOR

     Robert Clausecker <fuz@FreeBSD.org>

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