Re: portable way to get highest bit set?
candycanearter07 <[email protected]> Wed, 11 Oct 2023 19:26:21 -0500
| Newsgroups | comp.lang.c,alt.comp.lang.c |
|---|---|
| Organization | A noiseless patient Spider |
| Message-ID | <[email protected]> |
On 10/11/23 12:03, Ian C wrote: > On 11/10/2023 17:19, candycanearter07 wrote: >> On 10/11/23 02:27, Anton Shepelev wrote: >>> candycanearter07: >>> >>>> What is the best/most portable way to get the highest bit >>>> set? >>>> >>>> ie. 011010001 >>>> to 010000000 >>> >>> What is your best attempt, even if unsuccessful? >>> >> >> int out; >> for(out = 0x100000000; out; out >> 1) >> if(out & input) break; >> >> I'm trying to find something size independent, though. >> Or at least able to be swapped out with a #define > > If you want the highest bit, 0x800000000 may be a better start :-) > > If it was me I'd do it in reverse. Assuming it's unsigned, shift your > input to the right until it hits zero, counting the number of shifts > which will be your bit number. Assuming my head is currently working. > > > Ian C Actually yeah, I think that could work. -- user <candycane> is generated from /dev/urandom