xref: /src/share/man/man3/stdbit.3 (revision 8efcc64928f96bb26a58ec04750688110502227f)
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