> Does anyone know an inexpensive algorithm (O(1)) to go from an number to
> the next (lower or higher) power of two.
>
> 1 -> 1
> 2,3 -> 2
> 4,5,6,7 -> 4
> 8,9,10,11,12,13,14,15 -> 8
> etc.
>
> So %1101 should become either %10000 or %1000.
>
> The only solution I have so far is a table. That is a possibility as the
> the highest number will be 32 I think.
The kernel uses a 'ffs()' function for that but i seem to remember
that some processors have this one as a machine instruction. ffs()
is declared in /sys/sys/libkern.h and implemented in /sys/libkern/ffs.c
but maybe there is an assembly version somewherewhich i can't find.
cheers
luigi
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message