Skip site navigation (1)Skip section navigation (2)
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>