Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Как преобразовать число к бОльшему квадрату двойки ?   Найти похожие ветки 

 
X-Fi   (2005-10-13 02:28) [0]

Там 12 в 16, 50 в 64, 1000 в 1024 и т. д.

Просто ничего кроме кучи условий или цикла в голову не приходит. А может существует какая простая формула, чтобы быстро работала ?


 
MBo ©   (2005-10-13 07:27) [1]

function RoundUpPower2(N: Integer): Integer;
begin
 Dec(N);
 N := N or (N shr 1);
 N := N or (N shr 2);
 N := N or (N shr 4);
 N := N or (N shr 8);
 N := N or (N shr 16);
 Result := N + 1;
end;


 
Digitman ©   (2005-10-13 08:54) [2]

function RoundUpPower2(const Value: DWord): Int64;
asm
 sub esp, 8
 bsr edx, eax
 mov eax, 0
 mov [esp], eax
 mov [esp+4], eax
 jz  @@exit
 inc edx
 bts [esp], edx
@@exit:
 mov eax, [esp]
 mov edx, [esp+4]
 add esp, 8
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 showmessage(inttostr(RoundUpPower2(12)));
 showmessage(inttostr(RoundUpPower2(50)));
 showmessage(inttostr(RoundUpPower2(1000)));
end;



Страницы: 1 вся ветка

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.053 c
14-1129609939
DelphiN!
2005-10-18 08:32
2005.11.06
Выделить из предложения все глаголы


2-1129043223
Vale
2005-10-11 19:07
2005.11.06
Запуск программы под другим логином


6-1121775131
SlyFox
2005-07-19 16:12
2005.11.06
Простенький SMTP-сервер


14-1129553071
Игорь Шевченко
2005-10-17 16:44
2005.11.06
Почти по Екклезиасту...


9-1118065319
Gashish
2005-06-06 17:41
2005.11.06
Перенос модели в из 3d max в Delphi