Перевод двоичного числа в десятичное | Язык Паскаль

Перевод двоичного числа в десятичное

Двоичное число, введенное пользователем программы, преобразовать в десятичное число. Результат вывести на экран.

Описание переменных:

binary – двоичное число;
n – его длина;
digit – цифра очередного разряда;
m - степень двойки;
decimal – десятичное число.

Алгоритм решения задачи:

  1. Двоичное число хранится в программе в виде строки.
  2. Измеряется его длина, то есть количество символов. Это необходимо для возведения двойки каждого разряда в соответствующую ему степень.
  3. В цикле перебирается каждый символ строки.
    1. Символ преобразовывается в число.
    2. Находится степень, в которую должна возводиться двойка. Для первого символа она на единицу меньше длины строки. Для каждого следующего уменьшается на единицу.
    3. Если число разряда не равно 0, то
    4. возвести двойку в степень,
    5. а результат добавить к десятичному числу.

Функция возведения двойки в заданную степень:

  1. Получить степень.
  2. Присвоить результату функции значение 1.
  3. Умножать результат на 2, пока не будет достигнута заданная степень.

Программа на языке Паскаль:

var
    binary: string; 
    n: byte; 
    digit: byte; 
    m: byte;
    decimal: integer; 
    i: byte;
 
function pow2(m: byte): integer;
var i: byte;
begin
    pow2 := 1;
    for i := 1 to m do
        pow2 := pow2 * 2;
end;
 
begin
    write('Binary: ');
    readln(binary);
 
    n := length(binary);
 
    decimal := 0;
    m := n;
    for i := 1 to n do begin
        digit := ord(binary[i]) - ord('0');
        m := m - 1;
        if digit = 1 then
            decimal := decimal + pow2(m);
    end;
 
    writeln('Decimal: ', decimal);
end.