finding a number "p" greater than or equal to any number "n" and has the smallest power of 2.

for example, n=5 so p will be equal to 8 because 8/2=4, 4/2=2
it can’t be 6 because 6/2=3 and i need the smallest power to be 2
I don’t know anything about how i’d go along with this program

You can use bitwise shift operators to solve your problem . Start with number=1 .

Compare with n everytime until the number or acc. to you p , becomes greater than n . Until then multiply the number by 2 using bitshift . For example.

number=number<<1;

int expo= ceil(log(n)/log(2.0));
unsigned long long int ans= pow(2,expo);// Works for 0<n<=2^64

2 simple lines of code :smiley:

We are basically using fact that log(n) to base 2, when rounded up, give an integer K, which is the power to which 2 must be raised.

Basic, Easy to understand approach for this…

int n = given no

int output = 2;

while(output < n){

output = output*2;

}

output variable holds the required answer.

Otherwise you can go with the above technique mentioned by vijju123

Please Upvote and Accept if you find this helpful… :slight_smile:

This simple code should do the trick considering the fact that log2(n) give the number (float) to which it 2 should be powered for giving the number n i.e 2^(log2(n)) = n.

//You should include math.h
int answer = (int)pow(2,(int)log2(n))

Hope this will help. Upvote in case

It’s a standard problem. This link would give you a list of approaches: http://www.geeksforgeeks.org/smallest-power-of-2-greater-than-or-equal-to-n/

Thanks a lot! This was nice and simple.

Nice and Easy does the trick… :smiley: