Date: Sat, 21 Aug 1999 13:51:52 +0200 (MET DST) From: Luigi Rizzo <luigi@labinfo.iet.unipi.it> To: hibma@skylink.it Cc: hackers@FreeBSD.ORG Subject: Re: from number to power of two Message-ID: <199908211151.NAA29830@labinfo.iet.unipi.it> In-Reply-To: <Pine.BSF.4.10.9908211250310.7595-100000@heidi.plazza.it> from "Nick Hibma" at Aug 21, 99 12:54:13 pm
next in thread | previous in thread | raw e-mail | index | archive | help
> 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 majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199908211151.NAA29830>