xref: /src/lib/libc/stdbit/stdc_bit_width.3 (revision d790b16bbf0c3055ef00200d01659dfb3c0e5e5e)
1d790b16bSRobert Clausecker.\"
2d790b16bSRobert Clausecker.\" Copyright (c) 2025 Robert Clausecker <fuz@FreeBSD.org>
3d790b16bSRobert Clausecker.\"
4d790b16bSRobert Clausecker.\" SPDX-License-Identifier: BSD-2-Clause
5d790b16bSRobert Clausecker.\"
6d790b16bSRobert Clausecker.Dd November 9, 2025
7d790b16bSRobert Clausecker.Dt STDC_BIT_WIDTH 3
8d790b16bSRobert Clausecker.Os
9d790b16bSRobert Clausecker.Sh NAME
10d790b16bSRobert Clausecker.Nm stdc_bit_width
11d790b16bSRobert Clausecker.Nd find the first trailing one in an intege
12d790b16bSRobert Clausecker.Sh SYNOPSIS
13d790b16bSRobert Clausecker.Lb libc
14d790b16bSRobert Clausecker.In stdbit.h
15d790b16bSRobert Clausecker.Ft unsigned int
16d790b16bSRobert Clausecker.Fn stdc_bit_width_uc "unsigned char value"
17d790b16bSRobert Clausecker.Ft unsigned int
18d790b16bSRobert Clausecker.Fn stdc_bit_width_us "unsigned short value"
19d790b16bSRobert Clausecker.Ft unsigned int
20d790b16bSRobert Clausecker.Fn stdc_bit_width_ui "unsigned int value"
21d790b16bSRobert Clausecker.Ft unsigned int
22d790b16bSRobert Clausecker.Fn stdc_bit_width_ul "unsigned long value"
23d790b16bSRobert Clausecker.Ft unsigned int
24d790b16bSRobert Clausecker.Fn stdc_bit_width_ull "unsigned long long value"
25d790b16bSRobert Clausecker.Ft unsigned int
26d790b16bSRobert Clausecker.Fn stdc_bit_width "value"
27d790b16bSRobert Clausecker.Sh DESCRIPTION
28d790b16bSRobert ClauseckerThe
29d790b16bSRobert Clausecker.Nm stdc_bit_width_ Ns Em type Ns ()
30d790b16bSRobert Clauseckerfamily of functions returns the number of bits needed to represent
31d790b16bSRobert Clausecker.Fa value ,
32d790b16bSRobert Clauseckerwhere
33d790b16bSRobert Clausecker.Fa value
34d790b16bSRobert Clauseckeris of type
35d790b16bSRobert Clausecker.Va unsigned char ,
36d790b16bSRobert Clausecker.Va unsigned short ,
37d790b16bSRobert Clausecker.Va unsigned int ,
38d790b16bSRobert Clausecker.Va unsigned long ,
39d790b16bSRobert Clauseckeror
40d790b16bSRobert Clausecker.Va unsigned long long
41d790b16bSRobert Clauseckerfor
42d790b16bSRobert Clausecker.Em type
43d790b16bSRobert Clauseckerbeing
44d790b16bSRobert Clausecker.Sy uc ,
45d790b16bSRobert Clausecker.Sy us ,
46d790b16bSRobert Clausecker.Sy ui ,
47d790b16bSRobert Clausecker.Sy ul ,
48d790b16bSRobert Clauseckeror
49d790b16bSRobert Clausecker.Sy ull
50d790b16bSRobert Clauseckerrespectively.
51d790b16bSRobert ClauseckerThe
52d790b16bSRobert Clausecker.Fn stdc_bit_width "value"
53d790b16bSRobert Clauseckertype-generic macro picks the appropriate
54d790b16bSRobert Clausecker.Nm stdc_bit_width_ Ns Em type Ns ()
55d790b16bSRobert Clauseckerfunction based on the type of
56d790b16bSRobert Clausecker.Fa value .
57d790b16bSRobert Clausecker.Pp
58d790b16bSRobert ClauseckerFunctions
59d790b16bSRobert Clausecker.Fn stdc_bit_width_ui ,
60d790b16bSRobert Clausecker.Fn stdc_bit_width_ul ,
61d790b16bSRobert Clauseckerand
62d790b16bSRobert Clausecker.Fn stdc_bit_width_ull
63d790b16bSRobert Clauseckerare identical to
64d790b16bSRobert Clausecker.Bx 4.3
65d790b16bSRobert Clauseckerfunctions
66d790b16bSRobert Clausecker.Xr fls 3 ,
67d790b16bSRobert Clausecker.Xr flsl 3 ,
68d790b16bSRobert Clauseckerand
69d790b16bSRobert Clausecker.Xr flsll 3
70d790b16bSRobert Clauseckerrespectively, except for operating on unsigned instead of signed values.
71d790b16bSRobert Clausecker.Sh RETURN VALUES
72d790b16bSRobert ClauseckerReturns the least number of bits needed to represent
73d790b16bSRobert Clausecker.Fa value .
74d790b16bSRobert ClauseckerIf
75d790b16bSRobert Clausecker.Fa value
76d790b16bSRobert Clauseckeris zero, the return value is zero.
77d790b16bSRobert ClauseckerOtherwise it is
78d790b16bSRobert Clausecker.EQ
79d790b16bSRobert Clausecker1 + \(lf log sub 2 italic value \(rf .
80d790b16bSRobert Clausecker.EN
81d790b16bSRobert Clausecker.Sh SEE ALSO
82d790b16bSRobert Clausecker.Xr bit_fls 3 ,
83d790b16bSRobert Clausecker.Xr fls 3 ,
84d790b16bSRobert Clausecker.Xr flsl 3 ,
85d790b16bSRobert Clausecker.Xr flsll 3 ,
86d790b16bSRobert Clausecker.Xr stdbit 3 ,
87d790b16bSRobert Clausecker.Xr stdc_count_leading_zeros 3 ,
88d790b16bSRobert Clausecker.Xr stdc_first_leading_one 3
89d790b16bSRobert Clausecker.Sh STANDARDS
90d790b16bSRobert ClauseckerThe
91d790b16bSRobert Clausecker.Nm stdc_bit_width_ Ns Em type Ns ()
92d790b16bSRobert Clauseckerfamily of functions and the
93d790b16bSRobert Clausecker.Fn stdc_bit_width
94d790b16bSRobert Clauseckertype-generic macro conform to
95d790b16bSRobert Clausecker.St -isoC-2023 .
96d790b16bSRobert Clausecker.Sh HISTORY
97d790b16bSRobert ClauseckerThe
98d790b16bSRobert Clausecker.Nm stdc_bit_width_ Ns Em type Ns ()
99d790b16bSRobert Clauseckerfamily of functions and the
100d790b16bSRobert Clausecker.Fn stdc_bit_width
101d790b16bSRobert Clauseckertype-generic macro were added in
102d790b16bSRobert Clausecker.Fx 15.1.
103d790b16bSRobert Clausecker.Sh AUTHOR
104d790b16bSRobert Clausecker.An Robert Clausecker Aq Mt fuz@FreeBSD.org
105