Перевод из десятичной в двоичную питон: Перевод из десятичной системы счисления в двоичную. Язык Python

Содержание

Как перевести десятичное число в двоичное на 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-ичной системы в десятичную?

int в CPython не хранится в десятичной системе:

>>> import sys
>>> sys. int_info
sys.int_info(bits_per_digit=30, sizeof_digit=4)

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

Пример:

>>> base3 = make_converter_int_from_base_k('abc')
>>> base3('c')
2
>>> base3('ba')
3
>>> base3('baa')
9

Пример из Википедия как число, представляющее Man в ASCII, можно в основание 64 преобразовать (507121410 = 4d616e16 = TWFu64):

>>> import base64
>>> import string
>>> int. from_bytes(b'Man', 'big')
5071214
>>> base64.b64encode(b'Man')
b'TWFu'
>>> base64digits = string.ascii_uppercase + string.ascii_lowercase + string.digits + '+/'
>>> base64decode = make_converter_int_from_base_k(base64digits)
>>> base64decode('TWFu').to_bytes(3, 'big')
b'Man'

Если известны ограничения на вводимые числа, то можно попробовать угадать систему счисления по самому числу, не задавая 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

    90) = (0)+(8)+(0)+(2)+(1) =(11)_{10}(01011)2=(0×24)+(1×23)+(0× 22)+(1×21)+(1×20)=(0)+(8)+(0)+(2)+(1)=(11)10​

    ) (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
     

    Заключение

    1. Большинство компьютеров и цифровых систем используют двоичный код из-за надежного хранения данных.
    2. Десятичная система счисления (с основанием 10) использует комбинацию чисел от 0 до 9 для формирования цифр, где каждая цифра в десять раз больше, чем последняя цифра.
    3. Двоичная система (с основанием 2) использует комбинацию 0 или 1 для формирования цифр, при этом каждая цифра в два раза больше, чем последняя цифра.
    4. Преобразование двоичного кода в десятичное представляет собой взвешенную сумму каждой цифры (2i x ith-значение).

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

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

    Цифра 0 1 0 1 1