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_HAS_SINGLE_BIT 3 8*d790b16bSRobert Clausecker.Os 9*d790b16bSRobert Clausecker.Sh NAME 10*d790b16bSRobert Clausecker.Nm stdc_has_single_bit 11*d790b16bSRobert Clausecker.Nd check for single bit set 12*d790b16bSRobert Clausecker.Sh SYNOPSIS 13*d790b16bSRobert Clausecker.Lb libc 14*d790b16bSRobert Clausecker.In stdbit.h 15*d790b16bSRobert Clausecker.Ft bool 16*d790b16bSRobert Clausecker.Fn stdc_has_single_bit_uc "unsigned char value" 17*d790b16bSRobert Clausecker.Ft bool 18*d790b16bSRobert Clausecker.Fn stdc_has_single_bit_us "unsigned short value" 19*d790b16bSRobert Clausecker.Ft bool 20*d790b16bSRobert Clausecker.Fn stdc_has_single_bit_ui "unsigned int value" 21*d790b16bSRobert Clausecker.Ft bool 22*d790b16bSRobert Clausecker.Fn stdc_has_single_bit_ul "unsigned long value" 23*d790b16bSRobert Clausecker.Ft bool 24*d790b16bSRobert Clausecker.Fn stdc_has_single_bit_ull "unsigned long long value" 25*d790b16bSRobert Clausecker.Ft bool 26*d790b16bSRobert Clausecker.Fn stdc_has_single_bit "value" 27*d790b16bSRobert Clausecker.Sh DESCRIPTION 28*d790b16bSRobert ClauseckerThe 29*d790b16bSRobert Clausecker.Nm stdc_has_single_bit_ Ns Em type Ns () 30*d790b16bSRobert Clauseckerfamily of functions checks if there is exactly one bit 31*d790b16bSRobert Clauseckerset in 32*d790b16bSRobert Clausecker.Fa value , 33*d790b16bSRobert Clauseckerwhere 34*d790b16bSRobert Clausecker.Fa value 35*d790b16bSRobert Clauseckeris of type 36*d790b16bSRobert Clausecker.Va unsigned char , 37*d790b16bSRobert Clausecker.Va unsigned short , 38*d790b16bSRobert Clausecker.Va unsigned int , 39*d790b16bSRobert Clausecker.Va unsigned long , 40*d790b16bSRobert Clauseckeror 41*d790b16bSRobert Clausecker.Va unsigned long long 42*d790b16bSRobert Clauseckerfor 43*d790b16bSRobert Clausecker.Em type 44*d790b16bSRobert Clauseckerbeing 45*d790b16bSRobert Clausecker.Sy uc , 46*d790b16bSRobert Clausecker.Sy us , 47*d790b16bSRobert Clausecker.Sy ui , 48*d790b16bSRobert Clausecker.Sy ul , 49*d790b16bSRobert Clauseckeror 50*d790b16bSRobert Clausecker.Sy ull 51*d790b16bSRobert Clauseckerrespectively. 52*d790b16bSRobert ClauseckerThe 53*d790b16bSRobert Clausecker.Fn stdc_has_single_bit "value" 54*d790b16bSRobert Clauseckertype-generic macro picks the appropriate 55*d790b16bSRobert Clausecker.Nm stdc_has_single_bit_ Ns Em type Ns () 56*d790b16bSRobert Clauseckerfunction based on the type of 57*d790b16bSRobert Clausecker.Fa value . 58*d790b16bSRobert Clausecker.Pp 59*d790b16bSRobert ClauseckerThe functions in this family behave similarly to the 60*d790b16bSRobert Clausecker.Fn powerof2 "value" 61*d790b16bSRobert Clauseckermacro of 62*d790b16bSRobert Clausecker.In sys/param.h , 63*d790b16bSRobert Clauseckerbut differ when 64*d790b16bSRobert Clausecker.Fa value 65*d790b16bSRobert Clauseckeris zero: while 66*d790b16bSRobert Clausecker.Fn powerof2 67*d790b16bSRobert Clauseckerconsiders zero to be a power of two, 68*d790b16bSRobert Clausecker.Fn stdc_has_single_bit 69*d790b16bSRobert Clauseckerdoes not. 70*d790b16bSRobert Clausecker.Sh RETURN VALUES 71*d790b16bSRobert ClauseckerReturns 72*d790b16bSRobert Clausecker.Sy true 73*d790b16bSRobert Clauseckerif exactly one bit is set in 74*d790b16bSRobert Clausecker.Fa value , 75*d790b16bSRobert Clauseckerotherwise returns 76*d790b16bSRobert Clausecker.Sy false . 77*d790b16bSRobert ClauseckerI.\^e. the function determines if 78*d790b16bSRobert Clausecker.Fa value 79*d790b16bSRobert Clauseckeris a power of two. 80*d790b16bSRobert Clausecker.Sh SEE ALSO 81*d790b16bSRobert Clausecker.Xr stdbit 3 , 82*d790b16bSRobert Clausecker.Xr stdc_count_ones 3 83*d790b16bSRobert Clausecker.Sh STANDARDS 84*d790b16bSRobert ClauseckerThe 85*d790b16bSRobert Clausecker.Nm stdc_has_single_bit_ Ns Em type Ns () 86*d790b16bSRobert Clauseckerfamily of functions and the 87*d790b16bSRobert Clausecker.Fn stdc_has_single_bit 88*d790b16bSRobert Clauseckertype-generic macro conform to 89*d790b16bSRobert Clausecker.St -isoC-2023 . 90*d790b16bSRobert Clausecker.Sh HISTORY 91*d790b16bSRobert ClauseckerThe 92*d790b16bSRobert Clausecker.Nm stdc_has_single_bit_ Ns Em type Ns () 93*d790b16bSRobert Clauseckerfamily of functions and the 94*d790b16bSRobert Clausecker.Fn stdc_has_single_bit 95*d790b16bSRobert Clauseckertype-generic macro were added in 96*d790b16bSRobert Clausecker.Fx 15.1. 97*d790b16bSRobert Clausecker.Sh AUTHOR 98*d790b16bSRobert Clausecker.An Robert Clausecker Aq Mt fuz@FreeBSD.org 99