Как перевести из двоичной в десятичную в питоне
Перейти к содержимому

Как перевести из двоичной в десятичную в питоне

  • автор:

Перевод из десятичной системы счисления в двоичную

Заметим, что в языке 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)

Эксперт Python

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 Посмотреть сообщение

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *