At Sat, 21 Aug 1999 12:54:32 +0200, Nick Hibma wrote:
>
>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.
This small prog works at least on x86
=====
#include <sys/types.h>
#include <machine/cpufunc.h>
int
main(int argc, char **argv){
int i, j, k;
sscanf(argv[1], "%d", &i);
j = 1<<(fls(i)-1);
k = 1<<(fls(i-1));
printf("%d %d %d\n", j, i, k);
return 0;
}
=====
/Johan K
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message