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