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