Самый быстрый алгоритм 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)

21 Авг 2019 в 06:57
343 +1
0
Ответы
1

Самый быстрый и эффективный способ преобразования числа из десятичной системы счисления в двоичную на Pascal это использование битовых операций. Вот пример такого алгоритма:

procedure decToBin(num: Int64);
var
i: Integer;
begin
for i := 63 downto 0 do
begin
write((num shr i) and 1);
end;
end;

В данном случае, функция decToBin принимает число типа Int64 и использует сдвиг вправо оператора shr в сочетании с операцией and для извлечения битов из числа и вывода их в двоичной форме.

Этот алгоритм должен быть быстрым и эффективным для больших чисел типа Int64 в сравнении с другими методами.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир