Как перевести десятичное число в двоичное на python?
Хочу написать алгоритм по переводу числа из десятичной сс в двоичную, но столкнулся с проблемой — код ниже заходит в бесконечный цикл. Если помните, нужно делить число на 2. Весь алгоритм писать не нужно, опишите проблему и её решение кода ниже
a = int(input())
x = []
integer = []
result = []
x = list(str(a))[::-1]
while True:
if a != 1 and a != 0:
if a % 2 == 0:
result.append(0)
a = a / 2
elif a % 2 == 1:
result.append(1)
a = a / 2
else:
False
python
2
вы просто написали много ненужного кода
a = int(input())
result = []
while a:
result.append(a % 2)
a //= 2
result.reverse()
print(result)
0
код ниже заходит в бесконечный цикл
else:
False
Данный код не завершает цикл, а просто вызывает значение False. Чтобы завершить цикл нужно либо использовать оператор break, либо в условии использовать переменную и заменить её значение на False для прекращения работы цикла.
1 способ завершения цикла **
a = True
while a: # пока a is True
if False:
pass
else:
a = False
2 способ
While True:
If False:
pass # пропустить
else:
break # завершение цикла
Также a = a / 2 будет возвращать дробное значение и условие a == 1 или a == 0 никогда не выполнится.
Вот работающий код:
a = int(input())
x = []
integer = []
result = []
x = list(str(a))[::-1]
while True:
if a != 0:
if a % 2 == 0:
result.append(0)
a = a // 2
elif a % 2:
result.append(1)
a = a // 2
else:
result.reverse()
print(result)
break
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Python как написать функцию перевода из k-ичной системы в десятичную?
print(some_number) вызывает str(int) функцию, которая и преобразует int в строку, содержащую десятичные цифры (это не бесплатная операция—она может занимать долгое время для больших чисел).
Будем считать, что задача в вопросе: преобразовать строку kstr, содержащую натуральное число в к-ичной системе исчисления в Python int объект.
Если нельзя использовать int(kstr, base) напрямую (основание больше 36, цифры нестандартные, то легко в цикле собрать из отдельных цифр соответствующее число. К примеру, аналог 100 3 = 910:
>>> from functools import reduce
>>> reduce(lambda n, d: n * 3 + d, map("012".index, "100"))
9
>>> int("100", 3)
9
Если цифры abc, а не 012 то есть для baa3 = 910:
>>> reduce(lambda n, d: n * 3 + d, map("abc". index, "baa"))
9
Вот более подробно о том как reduce() функция последовательность цифр
в число превращает (для основания 10).
Можно написать функцию, которая автоматически генерирует функцию преобразования (converter) по заданным цифрам системы счисления:
from functools import reduce
def make_converter_int_from_base_k(digits):
"""Return int(kstr, len(digits)) analog for any digits."""
if not digits:
raise ValueError('no digits')
k = len(digits)
basek2digit = {d:i for i, d in enumerate(digits)}.__getitem__
def converter(kstr):
if not (set(kstr) <= set(digits)) or not kstr:
raise ValueError('invalid literal for int with digits {digits!r}: {kstr!r}')
return reduce(lambda number, digit: number*k + digit, map(basek2digit, kstr))
return converter
Если известны ограничения на вводимые числа, то можно попробовать угадать систему счисления по самому числу, не задавая digits явно.
При преобразовании между некоторыми парами систем исчисления, иногда
достаточно только строковых замен без промежуточного
преобразования в int. К примеру из 16-ной в 2-ную
(hex2bin()), из 2-ной в
8-ную (bin2oct()).
Стоит заметить, что int в CPython не хранится в десятичной системе (sys.int_info). print вызывает str(int) функцию, которая и преобразует int в строку, содержащую десятичные цифры (это не бесплатная операция—она может занимать долгое время для больших чисел).
Программа Python для преобразования десятичных чисел в двоичные
Улучшить статью
Сохранить статью
Нравится Статья
Уровень сложности:
Easy
Последнее обновление:
30 декабря 2022 г.
Читать
Обсудить
Улучшить статью
Сохранить статью
Нравится Статья
При вводе десятичного числа задача состоит в том, чтобы написать программу Python для преобразования данного десятичного числа в эквивалентное двоичное число. Примеры:
Ввод: 7
Выход: 111
Вход: 10
Вывод: 1010
Метод №1: Рекурсивное решение
DecimalToBinary(num):
если число >= 1:
DecimalToBinary (число // 2)
print num % 2
Ниже приведена реализация приведенного выше рекурсивного решения:0051
if num >
= 1 :
DecimalToBinary(num / / 2 )
Печать (NUM % 2 , END = '')
, если __Name__
0050 = = '__main__' :
dec_val = 24
DecimalToBinary( dec_val)
Вывод
011000
Метод №2: Десятичное преобразование в двоичное с использованием встроенной функции
Python3
DEF DecimaltObinary (n):
return
. )
if __name__ = = '__main__' :
print (decimalToBinary( 8 ))
print (decimalToBinary( 18 ))
print (decimalToBinary( 7 ))
Выход
1000
10010
111
Способ №3: Без встроенной функции
Python3
def decimalToBinary(n):
возврат "{0:b}" . format ( int (n))
if __name__ = = '__main__' :
print (decimalToBinary( 8 ))
print (decimalToBinary( 18 ))
print (decimalToBinary( 7 ))
Output
1000
10010
111
Быстрый метод ниндзя: Однострочный код для преобразования десятичного числа в двоичное с вводом пользователем0051 ( 4785 )[ 2 :])
Output
1001010110001
or
Python3
decNum = 4785
Печать ( BIN (декабря) [ 2 :])
Decnum1 =
Decnum1 =
Decnum1 =
Decnum1 =
. 0051 10
print ( bin (decNum1)[ 2 :])
decNum2 = 345
print ( бин (decNum2)[ 2 :])
Выход
1001031 10
1010
101011001
Использование оператора побитового сдвига >>.
Python3
DEF DEC2BIN (номер: INT ):
ANS ). = = 0 ):
Возврат 0
, пока (номер):
0 . 0051
ans + = str (number& 1 )
number = number >> 1
ANS = ANS [:: - 1 ]
9003
Возврат
.0051 ans
def main():
number = 60
print (f "The binary of the number {номер} IS {dec2bin (номер)} ")
IF __name__ = = " __MAN__ "
= " __MAIN__ " = ". 0049 Main ()
Выход
Бинар из номера 60-111100
Использование встроенного формата. () функция. Этот подход включает преобразование десятичного числа в целое число, а затем использование функции format() со спецификатором формата «b» для преобразования его в двоичную строку. Затем двоичную строку можно распечатать или сохранить для последующего использования.
Вот пример того, как можно использовать этот подход:
Python
DEF DECIMAL_TO_BININ INT (Decimal_Num), 'B' )
возврат Binary_str
(Decimal_to_BIN0051 7 ))
ПЕЧАТЬ (Decimal_TO_BININ
1010
Нравится статья
Сохранить статью
Преобразование десятичного числа в двоичное в Python с помощью программы-примера
Обзор
Десятичные цифры в диапазоне от 0 до 9 используются в десятичной или «десятичной» двоичной системе счета. Это наиболее широко используемая система нумерации. Каждая цифра в этой системе имеет место и десятичную точку. С другой стороны, в двоичной системе используются целые числа по основанию два в диапазоне от 0 до 1. Это самая простая система, поскольку она состоит из двух цифр: 0 и 1. В результате она является обычной для экспертов в области компьютерного программирования или других связанные инженерные области, чтобы преобразовать десятичный код в двоичный.
Scope
В этой статье мы узнаем, как преобразовать Decimal в Binary в Python с использованием встроенных функций Python и без них.
Введение
Двоичный код является одним из наиболее важных основополагающих аспектов компьютеров и других цифровых систем. Поскольку мы, люди, используем языки для понимания и общения друг с другом, компьютеры и другие цифровые системы используют двоичный код. Это система счисления с основанием 2, в которой только два числа, 0 и 1, соответствуют состояниям ВКЛ и ВЫКЛ, понятным вашему компьютеру.
Поскольку у обычных людей есть десять пальцев для представления простой системы счисления, называемой десятичной, компьютеры имеют эти состояния ВКЛ и ВЫКЛ, представляющие двоичную систему счисления. Итак, чтобы понять и интерпретировать двоичный код, нам нужна некоторая техника для преобразования двоичного кода в десятичный (удобочитаемый) код и наоборот. Таким образом, в этой статье будет обсуждаться, как преобразовать десятичное число в двоичное и наоборот, в контексте одного из языков программирования, Python.
Понимание десятичной и двоичной системы
Десятичная система счисления (с основанием 10) использует десять чисел в диапазоне от 0 до 9, а затем использует их комбинации для формирования цифр, причем каждая цифра в десять раз больше, чем последняя цифра (1, 10, 100 и т. д.), начиная с слева направо.
Рассмотрим значение 265:
Здесь 265 — это комбинация цифр от 0 до 9, образующая каждую цифру
Каждая цифра в десять раз больше, чем последняя цифра слева направо 5 -> 5×100; 6 -> 6×101; 2 -> 2×102
9{st}1-я цифра
Преобразование двоичной системы в десятичную в Python
Мы уже видели, что двоичная система представляет собой комбинацию [0 или 1], где каждая цифра в два раза больше, чем последняя цифра, поэтому давайте посмотрите, как эта информация поможет нам преобразовать двоичный код в десятичный эквивалент.
) (01011)2(01011)_2(01011)2 эквивалентно (11)10(11)_{10}(11)10 Десятичное число (с основанием 10).
Преобразование двоичного в десятичное в Python
Мы увидим, как преобразовать двоичное в десятичное в Python с помощью встроенной функции.
Встроенная функция Python для преобразования двоичного числа в десятичное:
В Python мы можем использовать функцию int() для преобразования двоичного числа в его десятичное значение. Функция int() принимает 2 аргумента: значение и основание преобразуемого числа, которое равно 2 в случае двоичных чисел 9.0003
Синтаксис:
int( , )
Код:
# Функция Двоично-десятичное число
def binaryToDecimal (значение):
вернуть целое (значение, 2)
# Код драйвера
если __name__ == '__main__':
печать (двоичныйToDecimal ('100'))
печать (двоичныйToDecimal ('101'))
печать (двоичныйToDecimal ('1001'))
Вывод:
Преобразование десятичного числа в двоичное в Python
Давайте попробуем понять преобразование десятичных чисел в двоичные. Самый простой метод преобразования десятичных чисел в их двоичный эквивалент — это деление на 2.
В методе деления на 2 мы непрерывно делим десятичное число на 2 и записываем напоминание, пока не получим 1 в качестве входного значения. Затем мы читаем отмеченные напоминания в обратном порядке, чтобы получить окончательное двоичное значение.
Давайте нарушим предыдущие утверждения, чтобы получить больше ясности. Предположим, у нас есть специальная функция, которая делит входное число на 2 и выдает остаток на выходе. Для Decimal to Binary мы вызываем эту специальную функцию несколько раз, пока не получим 1 в качестве входного значения. Затем мы, наконец, печатаем все сохраненные напоминания, чтобы получить окончательное двоичное значение (с основанием 2).
Преобразование десятичного числа в двоичное в Python
Теперь мы увидим, как преобразовать десятичное число в двоичное в Python. Сначала мы попробуем закодировать технику, которую мы изучили, используя вызов пользовательской рекурсивной функции в Python.
1. Пользовательская рекурсивная функция в Python для преобразования десятичного числа в двоичное:
В этом примере мы напишем специальную функцию (DecimalToBinary) для получения частных (ввод для следующего вызова функции) и остатка (выходное значение), а затем мы будем вызывать его повторно, пока входное значение не будет больше и равно 1
Код:
#Рекурсивная функция для преобразования десятичного числа в двоичное
децималтобинари (ip_val):
если ip_val >= 1:
# рекурсивный вызов функции
decimalToBinary (ip_val // 2)
# печать остатка от каждого вызова функции
печать (ip_val% 2, конец = '')
# Код драйвера
если __name__ == '__main__':
# десятичное значение
ip_val = 24
# Вызов специальной функции
decimalToBinary (ip_val)
Выход:
011000
Помимо этого, Python также предоставляет встроенную функцию для преобразования десятичного числа в двоичное.
2. Встроенная функция Python для преобразования двоичного числа в десятичное:
В Python мы можем просто использовать функцию bin() для преобразования десятичного значения в соответствующее двоичное значение. bin() принимает значение в качестве аргумента и возвращает двоичный эквивалент.
Примечание. bin() возвращает двоичное значение с префиксом 0b, поэтому в зависимости от варианта использования необходимо выполнить форматирование для удаления 0b.
Код:
# Функция преобразования десятичного числа в двоичное
# используя встроенную функцию Python
децималтобинари(п):
# преобразование десятичного числа в двоичное
# и удаление префикса (0b)
вернуть корзину(n).replace("0b", "")
# Код драйвера
если __name__ == '__main__':
# вызов функции
# с десятичным аргументом
печать (десятичное в двоичном (77))
Вывод:
1001101
Мы также можем преобразовать десятичное число в двоичное другим способом, помимо использования встроенной функции Python.
3. Без использования встроенной функции в Python для преобразования двоичного числа в десятичное:
Код:
# Функция для преобразования десятичного числа в двоичное
децималтобинари(п):
вернуть "{0:b}".format(int(n))
# Код драйвера
если __name__ == '__main__':
печать (десятичное в двоичном (77))
Вывод:
1001101
Заключение
Большинство компьютеров и цифровых систем используют двоичный код из-за надежного хранения данных.
Десятичная система счисления (с основанием 10) использует комбинацию чисел от 0 до 9 для формирования цифр, где каждая цифра в десять раз больше, чем последняя цифра.
Двоичная система (с основанием 2) использует комбинацию 0 или 1 для формирования цифр, при этом каждая цифра в два раза больше, чем последняя цифра.
Преобразование двоичного кода в десятичное представляет собой взвешенную сумму каждой цифры (2i x ith-значение).