# SPUG: Cool power-of-2 trick

Ken Clarke kenslinux at shaw.ca
Fri Jan 21 03:37:41 PST 2005

```----- Original Message -----
From: "Aaron W. West" <tallpeak at hotmail.com>
Sent: Thursday, January 20, 2005 2:42 PM
Subject: Re: SPUG: Cool power-of-2 trick

>I wonder if there's a quick way to find the smallest power of two equal to
> or greater than a given number.

Sure, by counting the number of characters in the binary representation of
the given number less 1, then raising 2 to the power of the count:

\$smallest_power_of_two = 2**(length(sprintf "%b", \$given_number - 1));

\$given_number must be  > 1 because subtracting 1 does not produce a zero
character binary representation.  You know that the answer for all numbers
below 2 (including negative numbers) is 1 anyway (2**0 = 1).  I also found
that it breaks down for given numbers larger than 2**30 but your mileage may
vary as they say...

There are 10 types of people in the world; those who know binary and those
who don't.

>> Ken Clarke
>> Contract Web Programmer / E-commerce Technologist
>> www.PerlProgrammer.net

```