Мы обсудим некоторые встроенные методы, а также создадим собственные методы для преобразования двоичной строки в десятичную на Питоне.

Есть разные способы конвертировать двоичные числа в десятичные в Python.

Содержание

Метод 1: с помощью int()

Самый простой способ преобразовать двоичное число в десятичное в Python — использовать встроенную функцию int() с базовым параметром 2.

# This line initializes a string variable named binary_num to the value '1101',
# which is a binary number representation
binary_num = '1101'

# This line converts the binary number representation in the binary_num string to a decimal number
# The second parameter of the int function(base 2) indicates that the string represents a binary number
decimal_num = int(binary_num, 2)

# This line prints the decimal number that corresponds to the binary number in binary_num
print(decimal_num)

Приведенный выше код преобразует двоичное число(в виде строки) в его десятичный эквивалент и выводит его на консоль.

С помощью метода int()

Метод 2: с использованием цикла for

Другой способ преобразования двоичного числа в десятичное в Python — использовать цикл for для перебора каждой цифры двоичного числа, начиная с самой правой цифры, и вычисления десятичного эквивалента.

# Assign a binary number as a string to the variable 'bin_num'
bin_num = '1101'

# Initialize a variable 'deci_num' to 0 to store the decimal equivalent of the binary number
deci_num = 0

# Loop through each digit in the binary number using the range() function
for i in range(len(bin_num)):
    # Convert the digit at index i from a string to an integer
    digit = int(bin_num[i])
    
    # Calculate the decimal equivalent of the binary digit by multiplying it with 2 #raised to the power of the digit's position
    # The position of the digit is determined by subtracting the current index i from                #the length of the binary number and subtracting 1
    deci_num += digit * 2**(len(bin_num)-i-1)
    
# Print the final decimal equivalent of the binary number
print(deci_num)

Приведенный выше код преобразует двоичное число(представленное в виде строки) в его десятичный эквивалент.

  • Для этого он перебирает каждую цифру двоичного числа, преобразует ее в целое число и затем умножает ее на 2, возведенную в степень ее позиции в числе.
  • Затем десятичные эквиваленты каждой цифры складываются вместе, чтобы получить окончательный десятичный эквивалент двоичного числа, который хранится в переменной deci_num.
Output: 13

Метод 3: с помощью функции reduce()

Функцию reduce() Python из модуля functools также можно использовать для преобразования двоичного числа в десятичное путем итеративного применения функции к последовательности значений.

В этом случае мы можем использовать функцию reduce() для вычисления десятичного эквивалента каждой двоичной цифры.

# Import the 'reduce' function from the 'functools' module
from functools import reduce

# Assign a binary number as a string to the variable 'bin_num'
bin_num = '1111'

# Use the 'reduce' function to calculate the decimal equivalent of the binary number
# The 'reduce' function takes two arguments: a function and a list(or other iterable) # of values
# The function is applied cumulatively to the values in the list, from left to right
deci_num = reduce(lambda x, y: 2*x + y, [int(digit) for digit in bin_num])

# Print the final decimal equivalent of the binary number
print(deci_num)

Приведенный выше код преобразует двоичное число(представленное в виде строки) в его десятичный эквивалент с помощью функции reduce() из модуля functools.

  • Лямбда-функция, передаваемая в функцию reduce(), принимает два аргумента, x и y, и возвращает результат удвоения x и добавления к нему y.
  • Функция reduce() применяет эту лямбда-функцию кумулятивно к списку двоичных цифр(преобразованных в целые числа с использованием понимания списка), начиная слева.
  • Конечным результатом функции reduce() является десятичный эквивалент двоичного числа, который хранится в переменной deci_num. Наконец, код печатает значение d
Output: 15

Метод 4: с помощью оператора побитового сдвига.

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

# Assigning a binary number to a string variable
bin_num = "10101"   

# Initializing a variable to hold the decimal value
deci_num = 0        

# Iterate over each digit in the binary string
for digit in bin_num:
    
    # Shifts the bits in `deci_num` one position to the left and then bitwise OR with the 
    # integer value of the current digit(0 or 1) to get the decimal equivalent of the binary number
    deci_num =(deci_num << 1) | int(digit) 

# Output the decimal equivalent of the binary number
print(deci_num)     

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

  • Он инициализирует переменную для хранения десятичного значения, а затем перебирает каждую цифру строки двоичного числа.
  • Для каждой цифры он сдвигает биты десятичного значения на одну позицию влево, а затем побитовое OR с целочисленным значением текущей цифры, чтобы получить десятичный эквивалент двоичного числа.
  • Наконец, он выводит десятичный эквивалент двоичного числа.
Output: 21

Метод 5: с помощью функции sum() и понимания списка

Этот метод включает в себя использование функции sum() и генератора списка для перебора каждого бита двоичного числа и вычисления его десятичного значения.

bin_num = "11101"    # Assigning a binary number to a string variable

# Calculate the decimal value of the binary number using a list comprehension
deci_num = sum([int(bin_num[i]) * 2**(len(bin_num)-i-1) for i in range(len(bin_num))])

# Output the decimal equivalent of the binary number
print(deci_num)

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

  • Он перебирает каждую цифру в двоичной строке и вычисляет значение этой цифры, умноженное на соответствующую степень 2, на основе положения цифры в строке.
  • Понимание списка создает список этих значений, которые затем суммируются, чтобы получить десятичный эквивалент двоичного числа.
  • Полученное десятичное значение выводится с помощью функции print().
Output: 29

Метод 6: с использованием рекурсии

Этот метод предполагает использование рекурсии для преобразования двоичного числа в десятичное в Python.

Мы начинаем с преобразования самого правого бита в десятичный, затем умножаем на 2 и добавляем десятичное значение остальных битов.

# This code defines a recursive function that converts a binary number represented as a string into its equivalent decimal representation.

def binary_to_decimal(binary_num):

    # Check if the binary number string contains only one digit
    if len(binary_num) == 1:
      # Return the integer value of the single digit binary number
        return int(binary_num)   

    # If the binary number string has more than one digit
    else:
        # Compute the decimal equivalent of the binary number by recursively calling the `binary_to_decimal()`
        # of the last character in the binary string.
        return int(binary_num[-1]) + 2 * binary_to_decimal(binary_num[:-1])

# Assigning a binary number to a string variable
binary_num = "10101"

# Convert the binary number to decimal by calling the `binary_to_decimal()` function
decimal_num = binary_to_decimal(binary_num)

# Output the decimal equivalent of the binary number
print(decimal_num)

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

  • Функция умножает каждую цифру в двоичной строке на соответствующую ей степень 2 и рекурсивно складывает их для вычисления десятичного эквивалента. Полученное десятичное значение выводится с помощью функции print().
Output: 21

Другой пример — программа Python для преобразования двоичного числа в десятичное с использованием рекурсии.

Вы также можете использовать технику рекурсии для преобразования двоичного числа в десятичное в Python.

Рекурсия — это метод, при котором функция вызывает себя внутри своего тела для определенного условия. Если условие выполнено, он вызовет сам себя. В противном случае программа завершится.

Ниже приведена программа Python для преобразования двоичного числа в десятичное с использованием метода рекурсии:

# Defining the function
def BinaryToDecimal(num, expo=1):
    if num== 0:
        return 0
    else:
        digit= num % 10
        num= int(num / 10)
        digit= digit * expo
        return digit + BinaryToDecimal(num, expo * 2)
        
# Taking user input
num = int(input('Enter a binary number: '))

# Displaying Output
print('The decimal value is =', BinaryToDecimal(num))
  • В приведенной выше программе мы определили функцию, которая принимает два аргумента: двоичное число и экспоненциальное значение 2.
  • Первоначально экспоненциальное значение будет равно 1(т.е. 20).
  • Мы указали условие, при котором функция не будет вызывать себя снова, если она станет нулевой.
  • Затем мы отделим последнюю цифру двоичного числа, умножим ее на текущий экспоненциальный член, равный 2, и вернем его сумму с помощью рекурсивно вызванной функции.
  • На этот раз мы передадим двоичное число без последней цифры со следующим экспоненциальным членом, равным 2, вызываемой функции.

Программа для преобразования с использованием рекурсии

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

Метод 7: с помощью функции eval()

Этот метод предполагает использование функции eval() для оценки двоичного числа как строки кода Python, которая вычисляет его десятичное значение.

# This code converts a binary number represented as a string into its equivalent decimal value using the built-in `eval()` function.

# Assigning a binary number to a string variable
binary_num = "10101"

# Convert the binary number to decimal using the `eval()` function, which evaluates # the binary string as a Python expression
# that represents an integer value in binary format.
decimal_num = eval("0b" + binary_num)

# Output the decimal equivalent of the binary number
print(decimal_num)

Приведенный выше код сначала присваивает двоичное число переменнойbinary_num.

  • Затем он преобразует двоичное число в десятичное с помощью встроенной функции eval(). Функция eval() оценивает двоичную строку как выражение Python, которое представляет целочисленное значение в двоичном формате.
  • В этом коде функции eval() передается строка «0b» +binary_num в качестве аргумента, который добавляет префикс «0b» к двоичной строке, чтобы указать, что ее следует интерпретировать как двоичное число.
  • Полученное десятичное значение присваивается переменной decimal_num, которая затем выводится с помощью функции print().
Output: 21

Метод 8: без встроенной функции

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

binary_num = int(input("Enter the Binary Number: "))
dec_num = 0
m = 1
length = len(str(binary_num))

for k in range(length):
    reminder = binary_num % 10
    dec_num = dec_num +(reminder * m)
    m = m * 2
    binary_num = int(binary_num/10)

print("Equivalent Decimal Value = ", dec_num)

Некоторые части программы:

  • dec_num — десятичное число, которое мы получим в результате. Первоначально его значение равно нулю.
  • Переменная m внутри цикла представляет собой значение экспоненциального члена 2 после каждого цикла.
  • Мы умножаем каждую цифру двоичного числа на значение m.
  • Наконец, сложив все значения после умножения с последующими степенями 2, мы получим окончательный результат.

Преобразование без встроенной функции

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

Метод 9: без встроенной функции

В приведенном выше разделе мы преобразовали тип данных двоичного числа в десятичный в Python. На этот раз мы преобразуем двоичную строку в десятичную, т. е. входные данные будут строкой.

binary_num = input("Enter the Binary Number: ")
dec_num = 0
m = 1

for digit in binary_num:
    digit= int(digit)
    dec_num = dec_num +(digit * m)
    m = m * 2

print("Equivalent Decimal Value = ", dec_num)
  • В приведенной выше программе мы берем входную двоичную строку и перебираем ее с помощью цикла for.
  • Внутри цикла мы преобразуем каждый двоичный символ в целочисленный тип данных.
  • После этого мы умножаем двоичную цифру на последующие члены значений показателя степени 2.
  • В конце мы складываем полученные значения и сохраняем их внутри переменной.

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

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

Метод 10: с использованием цикла while

В этом разделе вы увидите программу Python для преобразования двоичного числа в десятичное с помощью цикла while. Программа Python написана ниже:

def BinaryToDecimal(num):
    expo =1
    dec_num= 0
    while(num):
        digit = num % 10
        num = int(num / 10)
        
        dec_num += digit * expo
        expo = expo * 2
    return dec_num

# Taking user input
num = int(input('Enter a binary number: '))

# Displaying Output
print('The decimal value is =', BinaryToDecimal(num))
  • В приведенной выше программе Python мы создали функцию, которая преобразует двоичное число в десятичное с помощью цикла while.
  • Затем мы берем пользовательский ввод и передаем его в функцию, отображая результат с помощью оператора печати.
  • Давайте приведем пример ввода и проверим нашу программу.

Преобразование с использованием цикла while

Следовательно, таким образом вы можете использовать цикл while в Python для преобразования двоичного числа в десятичное.

Способы, как преобразовать

Давайте поймем логику этого преобразования на примере.

Рассмотрим двоичное число: 1011.

Теперь мы умножим каждую цифру на кратные 2, начиная с места единицы. Затем мы сложим все полученные значения. Расчет будет такой:

Десятичное число = 1 * 23 + 0 * 22 + 1 * 21 + 1 * 20, что эквивалентно 8 + 0 + 2 + 1 = 11

Преобразовать двоичную строку в десятичную в Python можно различными способами. Вы можете использовать функции int() или float() для преобразования двоичной строки в целое число или число с плавающей запятой соответственно.

Другой способ — использовать нашу собственную логику для создания программы на Python. Мы будем использовать логику, которую мы видели в приведенном выше объяснении.

Программа для преобразования десятичных чисел в двоичные и наоборот

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

Я буду использовать встроенные функции для преобразований. Функцию int() можно использовать для преобразования двоичной строки в десятичную, а функцию bin() можно использовать для преобразования десятичного числа в двоичное.

def binToDeci():
    binary_num = input('Enter a binary string:')
    dec_num = int(binary_num, 2)
    return dec_num

def deciToBin():
    dec_num = int(input('Enter a decimal number:'))
    binary_num= bin(dec_num).replace('0b', '')
    return binary_num

print('''Enter 1 for Binary to decimal conversion
Enter 2 for Decimal to Binary conversion ''')
choice = int(input('Enter your choice: '))

if choice == 1:
    print('Decimal conversion of the binary number is:', binToDeci())
elif choice == 2:
    print('Binary represntation of the decimal number is:', deciToBin())
else:
    print('Invalid Choice')

Вывод в тестовых случаях вызова

Используя эту программу Python, вы можете преобразовать любое десятичное число в двоичное и наоборот.

Программа преобразования в десятичные, восьмеричные и шестнадцатеричные

В этом разделе вы увидите программу Python, которая принимает двоичное число в качестве пользовательского ввода и возвращает эквивалентное десятичное, восьмеричное и шестнадцатеричное число.

def binToDeci(binary_num):
    dec_num = int(binary_num, 2)
    return dec_num

def binToOct(binary_num):
    dec_num = int(binary_num, 2)
    oct_num= oct(dec_num)
    return oct_num

def binToHex(binary_num):
    dec_num = int(binary_num, 2)
    hex_num= hex(dec_num)
    return hex_num

binary_num = input('Enter a binary string:')
print('Decimal representation of the binary number is:', binToDeci(binary_num))
print('Octal representation of the binary number is:', binToOct(binary_num))
print('Hexadecimal representation of the binary number is:', binToHex(binary_num))

Преобразование в различные системы счисления

0o перед числом означает, что число восьмеричное, а 0x означает, что число шестнадцатеричное. если вы не хотите, чтобы они присутствовали в вашем выводе, вы можете использовать функцию replace() следующим образом:

def binToDeci(binary_num):
    dec_num = int(binary_num, 2)
    return dec_num

def binToOct(binary_num):
    dec_num = int(binary_num, 2)
    oct_num= oct(dec_num).replace('0o', '')
    return oct_num

def binToHex(binary_num):
    dec_num = int(binary_num, 2)
    hex_num= hex(dec_num).replace('0x', '')
    return hex_num

binary_num = input('Enter a binary string:')
print('Decimal representation of the binary number is:', binToDeci(binary_num))
print('Octal representation of the binary number is:', binToOct(binary_num))
print('Hexadecimal representation of the binary number is:', binToHex(binary_num))

Вывод с использованием функции replace()

Таким образом, вы можете создать программу Python, которая преобразует двоичное число в десятичные, восьмеричные и шестнадцатеричные числа.

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