#include static unsigned next_power_of_2(unsigned n) { --n; n |= n >> 1; n |= n >> 2; n |= n >> 4; n |= n >> 8; #if (UINT_MAX > (1 << 16)) n |= n >> 16; #endif #if (UINT_MAX > (1L << 32)) n |= n >> 32; #endif return n+1; }