xref: /freebsd/lib/libc/stdbit/stdc_first_trailing_one.3 (revision d790b16bbf0c3055ef00200d01659dfb3c0e5e5e)
1*d790b16bSRobert Clausecker.\"
2*d790b16bSRobert Clausecker.\" Copyright (c) 2025 Robert Clausecker <fuz@FreeBSD.org>
3*d790b16bSRobert Clausecker.\"
4*d790b16bSRobert Clausecker.\" SPDX-License-Identifier: BSD-2-Clause
5*d790b16bSRobert Clausecker.\"
6*d790b16bSRobert Clausecker.Dd November 9, 2025
7*d790b16bSRobert Clausecker.Dt STDC_FIRST_TRAILING_ONE 3
8*d790b16bSRobert Clausecker.Os
9*d790b16bSRobert Clausecker.Sh NAME
10*d790b16bSRobert Clausecker.Nm stdc_first_trailing_one
11*d790b16bSRobert Clausecker.Nd find the first trailing one in an integer
12*d790b16bSRobert Clausecker.Sh SYNOPSIS
13*d790b16bSRobert Clausecker.Lb libc
14*d790b16bSRobert Clausecker.In stdbit.h
15*d790b16bSRobert Clausecker.Ft unsigned int
16*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one_uc "unsigned char value"
17*d790b16bSRobert Clausecker.Ft unsigned int
18*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one_us "unsigned short value"
19*d790b16bSRobert Clausecker.Ft unsigned int
20*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one_ui "unsigned int value"
21*d790b16bSRobert Clausecker.Ft unsigned int
22*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one_ul "unsigned long value"
23*d790b16bSRobert Clausecker.Ft unsigned int
24*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one_ull "unsigned long long value"
25*d790b16bSRobert Clausecker.Ft unsigned int
26*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one "value"
27*d790b16bSRobert Clausecker.Sh DESCRIPTION
28*d790b16bSRobert ClauseckerThe
29*d790b16bSRobert Clausecker.Nm stdc_first_trailing_one_ Ns Em type Ns ()
30*d790b16bSRobert Clauseckerfamily of functions returns the index of the least significant set bit in
31*d790b16bSRobert Clausecker.Fa value ,
32*d790b16bSRobert Clauseckerwhere
33*d790b16bSRobert Clausecker.Fa value
34*d790b16bSRobert Clauseckeris of type
35*d790b16bSRobert Clausecker.Va unsigned char ,
36*d790b16bSRobert Clausecker.Va unsigned short ,
37*d790b16bSRobert Clausecker.Va unsigned int ,
38*d790b16bSRobert Clausecker.Va unsigned long ,
39*d790b16bSRobert Clauseckeror
40*d790b16bSRobert Clausecker.Va unsigned long long
41*d790b16bSRobert Clauseckerfor
42*d790b16bSRobert Clausecker.Em type
43*d790b16bSRobert Clauseckerbeing
44*d790b16bSRobert Clausecker.Sy uc ,
45*d790b16bSRobert Clausecker.Sy us ,
46*d790b16bSRobert Clausecker.Sy ui ,
47*d790b16bSRobert Clausecker.Sy ul ,
48*d790b16bSRobert Clauseckeror
49*d790b16bSRobert Clausecker.Sy ull
50*d790b16bSRobert Clauseckerrespectively.
51*d790b16bSRobert ClauseckerThe
52*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one "value"
53*d790b16bSRobert Clauseckertype-generic macro picks the appropriate
54*d790b16bSRobert Clausecker.Nm stdc_first_trailing_one_ Ns Em type Ns ()
55*d790b16bSRobert Clauseckerfunction based on the type of
56*d790b16bSRobert Clausecker.Fa value .
57*d790b16bSRobert Clausecker.Pp
58*d790b16bSRobert ClauseckerFunctions
59*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one_ui ,
60*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one_ul ,
61*d790b16bSRobert Clauseckerand
62*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one_ull
63*d790b16bSRobert Clauseckerare identical to
64*d790b16bSRobert Clausecker.Bx 4.3
65*d790b16bSRobert Clauseckerfunctions
66*d790b16bSRobert Clausecker.Xr ffs 3 ,
67*d790b16bSRobert Clausecker.Xr ffsl 3 ,
68*d790b16bSRobert Clauseckerand
69*d790b16bSRobert Clausecker.Xr ffsll 3
70*d790b16bSRobert Clauseckerrespectively, except for operating on unsigned instead of signed values.
71*d790b16bSRobert Clausecker.Sh RETURN VALUES
72*d790b16bSRobert ClauseckerReturns the index of the least significant set bit in
73*d790b16bSRobert Clausecker.Fa value .
74*d790b16bSRobert ClauseckerThe bits are numbered such that the least significant bit has number\~1,
75*d790b16bSRobert Clauseckerand the most significant bit has number
76*d790b16bSRobert Clausecker.Ms w
77*d790b16bSRobert Clauseckerwhere
78*d790b16bSRobert Clausecker.Ms w
79*d790b16bSRobert Clauseckeris the number of bits in the type of
80*d790b16bSRobert Clausecker.Fa value .
81*d790b16bSRobert ClauseckerIf no bits are set in
82*d790b16bSRobert Clausecker.Fa value
83*d790b16bSRobert Clausecker(i.\^e.\&
84*d790b16bSRobert Clausecker.Fa value
85*d790b16bSRobert Clauseckeris zero), one is returned.
86*d790b16bSRobert Clausecker.Sh SEE ALSO
87*d790b16bSRobert Clausecker.Xr bit_ffs 3 ,
88*d790b16bSRobert Clausecker.Xr ffs 3 ,
89*d790b16bSRobert Clausecker.Xr ffsl 3 ,
90*d790b16bSRobert Clausecker.Xr ffsll 3 ,
91*d790b16bSRobert Clausecker.Xr stdbit 3 ,
92*d790b16bSRobert Clausecker.Xr stdc_trailing_zeros 3 ,
93*d790b16bSRobert Clausecker.Xr stdc_first_trailing_zero 3 ,
94*d790b16bSRobert Clausecker.Xr stdc_first_leading_one 3
95*d790b16bSRobert Clausecker.Sh STANDARDS
96*d790b16bSRobert ClauseckerThe
97*d790b16bSRobert Clausecker.Nm stdc_first_trailing_one_ Ns Em type Ns ()
98*d790b16bSRobert Clauseckerfamily of functions and the
99*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one
100*d790b16bSRobert Clauseckertype-generic macro conform to
101*d790b16bSRobert Clausecker.St -isoC-2023 .
102*d790b16bSRobert Clausecker.Sh HISTORY
103*d790b16bSRobert ClauseckerThe
104*d790b16bSRobert Clausecker.Nm stdc_first_trailing_one_ Ns Em type Ns ()
105*d790b16bSRobert Clauseckerfamily of functions and the
106*d790b16bSRobert Clausecker.Fn stdc_first_trailing_one
107*d790b16bSRobert Clauseckertype-generic macro were added in
108*d790b16bSRobert Clausecker.Fx 15.1.
109*d790b16bSRobert Clausecker.Sh AUTHOR
110*d790b16bSRobert Clausecker.An Robert Clausecker Aq Mt fuz@FreeBSD.org
111