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