1*d39e310cSRobert Clausecker.\" 2*d39e310cSRobert Clausecker.\" Copyright (c) 2025 Robert Clausecker <fuz@FreeBSD.org> 3*d39e310cSRobert Clausecker.\" 4*d39e310cSRobert Clausecker.\" SPDX-License-Identifier: BSD-2-Clause 5*d39e310cSRobert Clausecker.\" 6*d39e310cSRobert Clausecker.Dd November 9, 2025 7*d39e310cSRobert Clausecker.Dt STDBIT 3 8*d39e310cSRobert Clausecker.Os 9*d39e310cSRobert Clausecker.Sh NAME 10*d39e310cSRobert Clausecker.Nm stdbit 11*d39e310cSRobert Clausecker.Nd bit and byte utilities 12*d39e310cSRobert Clausecker.Sh SYNOPSIS 13*d39e310cSRobert Clausecker.Lb libc 14*d39e310cSRobert Clausecker.In stdbit.h 15*d39e310cSRobert Clausecker.Fd #define __STDC_ENDIAN_LITTLE__ 16*d39e310cSRobert Clausecker.Fd #define __STDC_ENDIAN_BIG__ 17*d39e310cSRobert Clausecker.Fd #define __STDC_ENDIAN_NATIVE__ 18*d39e310cSRobert Clausecker.Ft unsigned int 19*d39e310cSRobert Clausecker.Fn stdc_count_leading_zeros "value" 20*d39e310cSRobert Clausecker.Ft unsigned int 21*d39e310cSRobert Clausecker.Fn stdc_count_leading_ones "value" 22*d39e310cSRobert Clausecker.Ft unsigned int 23*d39e310cSRobert Clausecker.Fn stdc_count_trailing_zeros "value" 24*d39e310cSRobert Clausecker.Ft unsigned int 25*d39e310cSRobert Clausecker.Fn stdc_count_trailing_ones "value" 26*d39e310cSRobert Clausecker.Ft unsigned int 27*d39e310cSRobert Clausecker.Fn stdc_first_leading_zero "value" 28*d39e310cSRobert Clausecker.Ft unsigned int 29*d39e310cSRobert Clausecker.Fn stdc_first_leading_one "value" 30*d39e310cSRobert Clausecker.Ft unsigned int 31*d39e310cSRobert Clausecker.Fn stdc_first_trailing_zero "value" 32*d39e310cSRobert Clausecker.Ft unsigned int 33*d39e310cSRobert Clausecker.Fn stdc_first_trailing_one "value" 34*d39e310cSRobert Clausecker.Ft unsigned int 35*d39e310cSRobert Clausecker.Fn stdc_count_zeros "value" 36*d39e310cSRobert Clausecker.Ft unsigned int 37*d39e310cSRobert Clausecker.Fn stdc_count_ones "value" 38*d39e310cSRobert Clausecker.Ft bool 39*d39e310cSRobert Clausecker.Fn stdc_has_single_bit "value" 40*d39e310cSRobert Clausecker.Ft unsigned int 41*d39e310cSRobert Clausecker.Fn stdc_bit_width "value" 42*d39e310cSRobert Clausecker.Ft typeof Ns Pq Em value 43*d39e310cSRobert Clausecker.Fn stdc_bit_floor "value" 44*d39e310cSRobert Clausecker.Ft typeof Ns Pq Em value 45*d39e310cSRobert Clausecker.Fn stdc_bit_ceil "value" 46*d39e310cSRobert Clausecker.Sh DESCRIPTION 47*d39e310cSRobert ClauseckerThe 48*d39e310cSRobert Clausecker.Dv __STDC_ENDIAN_NATIVE__ 49*d39e310cSRobert Clauseckermacro describes the byte order or endianness of the machine for which the 50*d39e310cSRobert Clauseckerprogram is built. 51*d39e310cSRobert ClauseckerIf the machine has big-endian byte order, this macro is equal to 52*d39e310cSRobert Clausecker.Dv __STDC_ENDIAN_BIG__ . 53*d39e310cSRobert ClauseckerIf the machine has little-endian byte order, this macro is equal to 54*d39e310cSRobert Clausecker.Dv __STDC_ENDIAN_LITTLE__ . 55*d39e310cSRobert ClauseckerOtherwise, the macro has a value that is equal to neither. 56*d39e310cSRobert Clausecker.Pp 57*d39e310cSRobert ClauseckerThe bit and byte utility functions analyze the bits within a datum. 58*d39e310cSRobert ClauseckerEach function 59*d39e310cSRobert Clausecker.Em func 60*d39e310cSRobert Clauseckeris provided in five variants 61*d39e310cSRobert Clausecker.Nm stdc_ Ns Em func Ns Em _ Ns Em type Ns Pq Em value 62*d39e310cSRobert Clauseckerwhere 63*d39e310cSRobert Clausecker.Fa value 64*d39e310cSRobert Clauseckeris of type 65*d39e310cSRobert Clausecker.Va unsigned char , 66*d39e310cSRobert Clausecker.Va unsigned short , 67*d39e310cSRobert Clausecker.Va unsigned int , 68*d39e310cSRobert Clausecker.Va unsigned long , 69*d39e310cSRobert Clauseckeror 70*d39e310cSRobert Clausecker.Va unsigned long long 71*d39e310cSRobert Clauseckerfor 72*d39e310cSRobert Clausecker.Em type 73*d39e310cSRobert Clauseckerbeing 74*d39e310cSRobert Clausecker.Sy uc , 75*d39e310cSRobert Clausecker.Sy us , 76*d39e310cSRobert Clausecker.Sy ui , 77*d39e310cSRobert Clausecker.Sy ul , 78*d39e310cSRobert Clauseckeror 79*d39e310cSRobert Clausecker.Sy ull 80*d39e310cSRobert Clauseckerrespectively. 81*d39e310cSRobert ClauseckerAdditionally, for each 82*d39e310cSRobert Clausecker.Em func , 83*d39e310cSRobert Clauseckera type-generic macro 84*d39e310cSRobert Clausecker.Nm stdc_ Ns Em func Ns Pq Em value 85*d39e310cSRobert Clauseckerthat picks the appropriate function 86*d39e310cSRobert Clausecker.Nm stdc_ Ns Em func Ns Em _ Ns Em type Ns Pq Em value 87*d39e310cSRobert Clauseckerbased on the type of 88*d39e310cSRobert Clausecker.Fa value 89*d39e310cSRobert Clauseckeris provided. 90*d39e310cSRobert Clausecker.Sh SEE ALSO 91*d39e310cSRobert Clausecker.Xr arch 7 , 92*d39e310cSRobert Clausecker.Xr bitstring 3 , 93*d39e310cSRobert Clausecker.Xr ffs 3 , 94*d39e310cSRobert Clausecker.Xr fls 3 , 95*d39e310cSRobert Clausecker.Xr stdc_count_leading_zeros 3 , 96*d39e310cSRobert Clausecker.Xr stdc_count_leading_ones 3 , 97*d39e310cSRobert Clausecker.Xr stdc_count_trailing_zeros 3 , 98*d39e310cSRobert Clausecker.Xr stdc_count_trailing_ones 3 , 99*d39e310cSRobert Clausecker.Xr stdc_first_leading_zero 3 , 100*d39e310cSRobert Clausecker.Xr stdc_first_leading_one 3 , 101*d39e310cSRobert Clausecker.Xr stdc_first_trailing_zero 3 , 102*d39e310cSRobert Clausecker.Xr stdc_first_trailing_one 3 , 103*d39e310cSRobert Clausecker.Xr stdc_count_zeros 3 , 104*d39e310cSRobert Clausecker.Xr stdc_count_ones 3 , 105*d39e310cSRobert Clausecker.Xr stdc_has_single_bit 3 , 106*d39e310cSRobert Clausecker.Xr stdc_bit_width 3 , 107*d39e310cSRobert Clausecker.Xr stdc_bit_floor 3 , 108*d39e310cSRobert Clausecker.Xr stdc_bit_ceil 3 109*d39e310cSRobert Clausecker.Sh STANDARDS 110*d39e310cSRobert ClauseckerThe macros and functions of the 111*d39e310cSRobert Clausecker.In stdbit.h 112*d39e310cSRobert Clauseckerheader conform to 113*d39e310cSRobert Clausecker.St -isoC-2023 . 114*d39e310cSRobert Clausecker.Sh HISTORY 115*d39e310cSRobert ClauseckerThe 116*d39e310cSRobert Clausecker.In stdbit.h 117*d39e310cSRobert Clauseckerheader and the macros and functions defined therein where added in 118*d39e310cSRobert Clausecker.Fx 15.1. 119*d39e310cSRobert Clausecker.Sh AUTHOR 120*d39e310cSRobert Clausecker.Ah Robert Clausecker Aq Mt fuz@FreeBSD.org 121