Самый быстрый алгоритм dec -> bin на Pascal

Подскажите, пожалуйста, какой самый быстрый алгоритм преобразования числа в двоичное из десятичного можно реализовать на Pascal?

Уже есть варианты:
1. Рекурсия:
function bin(a: integer):integer;
begin
     if a>=2 then
        bin(a div 2);
     write(a mod 2);
end;

2. «Игра» со строками:
while n>0 do begin
  if n mod 2 = 0 then
    s:=s+'0'
  else begin
    s:=s+'1';
    n:=n-1;
  end;
  n:=n div 2;
end;
for i:=length(s) downto 1 do
  write(s[i]);
end;

3. И самое обычное, простое решение задачи:
while a>=1 do
  begin
    i:=i+1;
    b[i]:=a mod 2;
    a:=a div 2;
  end;
n:=i;
for i:=n downto 1 do
write(b[i]);


Потребление памяти не важно, важно время выполнения и возможность перевода чисел типа int64 (-9223372036854775808..9223372036854775807)
  • Вопрос задан
  • 6705 просмотров
Решения вопроса 1
anmipo
@anmipo
Очевидная оптимизация:
b[i]:=a and 1;
a:=a shr 1;
Хотя компилятор должен и сам догадаться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Wott
@Wott
ну если потребление памяти таки не важно, то самым быстрым будет таблица :)
Ответ написан
@gribozavr
А где тут десятичные числа? Тут машинные числа, они и так двоичные.
Ответ написан
@YourChief
а бенчмаркнуть все три не пробовали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы