Самый быстрый алгоритм 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)
  • Вопрос задан
  • 6796 просмотров
Решения вопроса 1
anmipo
@anmipo
Очевидная оптимизация:
b[i]:=a and 1;
a:=a shr 1;
Хотя компилятор должен и сам догадаться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Wott
@Wott
ну если потребление памяти таки не важно, то самым быстрым будет таблица :)
Ответ написан
@gribozavr
А где тут десятичные числа? Тут машинные числа, они и так двоичные.
Ответ написан
@YourChief
а бенчмаркнуть все три не пробовали?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
8BIT GROUP Москва
от 200 000 до 240 000 руб.
Cryptology Москва
от 2 700 до 3 300 eur.
РТ Лабс Санкт-Петербург
от 100 000 руб.
25 апр. 2019, в 15:17
2000 руб./за проект
25 апр. 2019, в 14:46
1000 руб./за проект