Перевод двоичного числа в десятичное
Двоичное число, введенное пользователем программы, преобразовать в десятичное число. Результат вывести на экран.
Описание переменных:
binary – двоичное число;
n – его длина;
digit – цифра очередного разряда;
m - степень двойки;
decimal – десятичное число.
Алгоритм решения задачи:
- Двоичное число хранится в программе в виде строки.
- Измеряется его длина, то есть количество символов. Это необходимо для возведения двойки каждого разряда в соответствующую ему степень.
- В цикле перебирается каждый символ строки.
- Символ преобразовывается в число.
- Находится степень, в которую должна возводиться двойка. Для первого символа она на единицу меньше длины строки. Для каждого следующего уменьшается на единицу.
- Если число разряда не равно 0, то
- возвести двойку в степень,
- а результат добавить к десятичному числу.
Функция возведения двойки в заданную степень:
- Получить степень.
- Присвоить результату функции значение 1.
- Умножать результат на 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.