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