Подскажите, пожалуйста, какой самый быстрый алгоритм преобразования числа в двоичное из десятичного можно реализовать на Pascal?
Уже есть варианты:
1. Рекурсия:
function bin(a: integer):integer;<br>
begin<br>
if a>=2 then<br>
bin(a div 2);<br>
write(a mod 2);<br>
end;
2. «Игра» со строками:
while n>0 do begin<br>
if n mod 2 = 0 then<br>
s:=s+'0'<br>
else begin<br>
s:=s+'1';<br>
n:=n-1;<br>
end;<br>
n:=n div 2;<br>
end;<br>
for i:=length(s) downto 1 do<br>
write(s[i]);<br>
end;
3. И самое обычное, простое решение задачи:
while a>=1 do<br>
begin<br>
i:=i+1;<br>
b[i]:=a mod 2;<br>
a:=a div 2;<br>
end;<br>
n:=i;<br>
for i:=n downto 1 do<br>
write(b[i]);<br>
Потребление памяти не важно, важно время выполнения и возможность перевода чисел типа int64 (-9223372036854775808..9223372036854775807)