Округлить число до степени двойки в вверх
От: menify Россия  
Дата: 30.12.02 03:09
Оценка:
Привет!

Можно ли округлить число до степени двойки вверх в одно выражение?
Например:
1 -> 2
2 -> 2
3 -> 4
12 -> 16
15 -> 16
18 -> 32
33 -> 64
и т.д.

пока лучшее, что я придумал

int   size_align( int  size)
{
    register int      k;
    register int      l;
    
    for (k = size; (l = k & (k - 1)) != 0; k = l);
    
    return (size + (k - 1)) & (~(k - 1));
}


Хотелось бы в обойтись без цикла.
Всего доброго.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.