Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Create your online store today with Shopify

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Disclosure: My content contains affiliate links.

43,181 questions

56,073 answers

573 users

How to round a number to the next power of 2 in C++

2 Answers

0 votes
#include <iostream>

unsigned int roundToNextPowerOf2(unsigned int n) {
    if (n == 0) return 1;
    
    n--; // Decrement to handle exact powers of 2 
         // (if n = 8, we return 8, not 16)
         
    /* 
        Use bitwise OR and right shifts to "fill" all bits below the highest set bit. 
        This transforms n into a number where all bits below the highest bit are set to 1.
        For example, if n = 21 (binary 10101), after these operations, it becomes 11111 (binary 31).
    */

    n |= n >> 1;
    n |= n >> 2;
    n |= n >> 4;
    n |= n >> 8;
    n |= n >> 16;
    
    return n + 1;
}

int main() {
    unsigned int num = 21;
    
    std::cout << "Next power of 2: " << roundToNextPowerOf2(num) << std::endl;
}

 
 
/*
run:
 
Next power of 2: 32
 
*/

 



answered Oct 28, 2025 by avibootz
edited Oct 28, 2025 by avibootz
0 votes
#include <iostream>
#include <cmath>

unsigned int roundToNextPowerOf2(unsigned int n) {
    return pow(2, ceil(log2(n)));
}

int main() {
    unsigned int num = 21;
    
    std::cout << "Next power of 2: " << roundToNextPowerOf2(num) << std::endl;
}

 
 
/*
run:
 
Next power of 2: 32
 
*/

 



answered Oct 28, 2025 by avibootz
edited Oct 28, 2025 by avibootz
...