Функция перевода целого двоичного числа в десятичное

Закрепим пройденный материал с функциями и создадим реальный пример функции, которая вычисляет что-нибудь интересное.



Пожалуй, всякий начинающий программист должен написать самостоятельно программу перевода целого двоичного числа в десятичное. Именно этим мы и займёмся в этом примере.


Использование готовой функции перевода двоичного числа


На Питоне конечно уже есть готовое и весьма простое решение, которое делает перевод двоичной записи в десятичное число.


К примеру, есть функция int([object], [основание системы счисления]) - преобразование к целому числа в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.


В нашем случае, выбираем основание 2.



a=input("Введите двоичное целое число =")
print("Двоичное целое число",a, "соответствует десятичному числу", int(a, 2))

Вот пример выполнения этого кода:



Но мы ведь не ищем лёгких путей, а создаём свою функцию. Поэтому код будет следующий.


При помощи def задаём имя функции с соответствующим названием bin_to_dec и внутреннюю переменную.


Функция len(digit) будет возвращать длину числа или количество символов

Это необходимо, чтобы вычислить, сколько проходов будет для вычисления общей суммы по известной в информатике формуле перевода числа из двоичной формы в десятичную.


an*2n-1+an-1*2n-2+...+a0*20

Проходы делает оператор цикла for i in range(0, dlina), где и i меняется от значения 0 до общего количества.


2**(dlina-i-1) - двойка как основание возводится в степень (dlina-i-1)


А вот эта конструкция вычисляет сумму, которая и будет числом в десятичной форме.




def bin_to_dec(digit):
dlina=len(digit)
print (dlina)
chislo_dec=0
for i in range(0, dlina):
chislo_dec=chislo_dec+int(digit[i])*(2**(dlina-i-1))
return chislo_dec
a=input("Введите двоичное целое число =")
print("Двоичное целое число",a,"соответствует десятичному числу ", bin_to_dec(a))

Пример выполнения программы показан на рисунке.



Конечно, данная функция достаточно простая и не имеет защиты от неправильного ввода, однако для образовательного примера вполне сгодится. Пробуем выполнить по памяти пример, а затем создать свои функции на Питоне.


Сумма ряда натуральных чисел на Питоне Нахождение натуральных чисел с условием