Re: Округлить число до степени двойки в вверх
От: Pushkin Россия www.linkbit.com
Дата: 30.12.02 07:54
Оценка:
Здравствуйте, menify, Вы писали:

M>Привет!


M>Можно ли округлить число до степени двойки вверх в одно выражение?

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

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));
}


так попроще вроде ...

DWORD   size_align( DWORD  size)
{
    size--;
    for (DWORD d=0x80000000; (d & size) == 0 ; d>>=1);
    return d<<1;
}


а без цикла, думаю, облизнёшься
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.