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