Перевод из десятичной системы счисления в двоичную
Заметим, что в языке Python есть встроенная функция bin , которая переводит десятичное число в двоичную систему счисления.
>>> bin(5) '0b101' >>> bin(10) '0b1010'
Здесь же рассматривается алгоритм такого перевода и его реализация на Python.
Обычно десятичное число преобразуют к двоичному представлению путем нахождения остатков от деления на 2. При этом полученное на предыдущем шаге частное выступает в качестве делимого на следующем шаге. Деление заканчивается, когда делимое обращается в ноль. Остатки собираются в двоичное число начиная с конца, то есть последний остаток будет первой цифрой двоичного числа. Например, надо перевести число 8 в двоичную систему:
- 8 / 2 = 4, остаток 0
- 4 / 2 = 2, остаток 0
- 2 / 2 = 1, остаток 0
- 1 / 2 = 0, остаток 1
- 0 — конец деления
- Сборка: 10002
При реализации данного алгоритма с помощью языка программирования надо организовать хранение остатков. Сделать это можно в переменной строкового типа или в списке. В случае строки каждый новый остаток следует добавлять в начало.
n = int(input()) b = '' while n > 0: b = str(n % 2) + b n = n // 2 print(b)
8 1000
Пример решения задачи с использованием списка и без преобразования цифр двоичного числа в строковый тип:
n = int(input()) b = [] while n > 0: b.append(n % 2) n //= 2 b.reverse() for i in b: print(i, end='') print()
Метод reverse списка изменяет последовательность элементов на обратную.
X Скрыть Наверх
Решение задач на Python
Функция перевода целого двоичного числа в десятичное
Закрепим пройденный материал с функциями и создадим реальный пример функции, которая вычисляет что-нибудь интересное.
Пожалуй, всякий начинающий программист должен написать самостоятельно программу перевода целого двоичного числа в десятичное. Именно этим мы и займёмся в этом примере.
Использование готовой функции перевода двоичного числа
На Питоне конечно уже есть готовое и весьма простое решение, которое делает перевод двоичной записи в десятичное число.
К примеру, есть функция int([object], [основание системы счисления]) — преобразование к целому числа в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.
В нашем случае, выбираем основание 2.
a=input(«Введите двоичное целое число =»)
print(«Двоичное целое число»,a, «соответствует десятичному числу», int(a, 2))
Вот пример выполнения этого кода:
Но мы ведь не ищем лёгких путей, а создаём свою функцию. Поэтому код будет следующий.
При помощи def задаём имя функции с соответствующим названием bin_to_dec и внутреннюю переменную.
Функция len(digit) будет возвращать длину числа или количество символов
Это необходимо, чтобы вычислить, сколько проходов будет для вычисления общей суммы по известной в информатике формуле перевода числа из двоичной формы в десятичную.
Проходы делает оператор цикла 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))
Пример выполнения программы показан на рисунке.
Конечно, данная функция достаточно простая и не имеет защиты от неправильного ввода, однако для образовательного примера вполне сгодится. Пробуем выполнить по памяти пример, а затем создать свои функции на Питоне.
© 2013-2020 Информатика. Полезные материалы по информационным технологиям. Использование материалов без активной ссылки на сайт запрещено! Публикация в печати только с письменного разрешения администрации.
перевод из двоичной в десятичную python
Суть задачи:на вход функции подаются два положительных целочисленных числа, нужно вывести их сумму в двоичной системе. Написал код, с числами порядка 10^4-10^6 работает, с очень большими числами, как в примере ниже работает лишь на половину, т.е сначала идут все 0, а потом уже часть числа конвертируется, не могу понять в чем ошибка.
def add_binary(a,b): summ = a + b ostatok = int(summ % 2) delimoe = int((summ - ostatok)/2) answer = [str(int(ostatok))] while(delimoe > 0): ostatok = int(delimoe % 2) delimoe = int((delimoe - ostatok)/2) answer.append(str(int(ostatok))) answer.reverse() answerstring = ''.join(answer) return(answerstring) add_binary(996658199706798567539,711895482903627032739)
Отслеживать
задан 16 дек 2019 в 19:32
31 1 1 серебряный знак 2 2 бронзовых знака
16 дек 2019 в 20:05
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
У вас возникала ошибка округления в этой формуле int((summ — ostatok)/2)
Используйте целочисленное деление, оно есть в Питоне.
def add_binary(a,b): summ = a + b ostatok = summ % 2 delimoe = summ//2 answer = [ostatok] while(delimoe > 0): ostatok = delimoe % 2 delimoe = delimoe//2 answer.append(ostatok) answer.reverse() answerstring = ''.join(str(e) for e in answer) return(answerstring) print(add_binary(996658199706798567539,711895482903627032739))
Перевод из двоичной СС в десятичную
Перевод числа из двоичной в десятичную, или обратно
«Перевод числа из 10-ной в двоичную систему счисления” 1 задача. Программа должна запрашивать на.
Перевод из двоичной в десятичную
как преобразовать из двоичной системы счисления в десятичную на питоне?
Перевод из двоичной в десятичную систему
привет всем. я только-только начинающий изучать Питон и уже спотыкаюсь на простейшем задании. нужно.
Перевод числа из двоичной в десятичную
Дана символьная строка, представляющая собой запись натурального числа в p-ичной системе счисления.
Перевод чисел из двоичной системы в десятичную
Написать программу для перевода чисел из двоичной системы в десятичную
4973 / 3209 / 1125
Регистрация: 21.03.2016
Сообщений: 7,939
1 2 3 4 5 6 7 8 9
x = int(input("Введите натуральное число: ")) n = "" while x > 0: y = str(x % 2) n = y + n x = int(x / 2) print (n)
1354 / 651 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
Сообщение было отмечено mik-a-el как решение
Решение
BAD_B0Y, пойдет?
1 2 3 4 5
def func(n):# ввод числа ав двоичной print(int(n, base=2)) # приводимм к числу, с основанием(в 2-ичной системе и выоводим) if __name__ == '__main__': n=input() func(n)
Добавлено через 2 минуты
Semen-Semenich,ТС просил наооборот
Сообщение от BAD_B0Y