Мы обсудим некоторые встроенные методы, а также создадим собственные методы для преобразования двоичной строки в десятичную на Питоне.
Есть разные способы конвертировать двоичные числа в десятичные в Python.
- Метод 1: с помощью int()
- Метод 2: с использованием цикла for
- Метод 3: с помощью функции reduce()
- Метод 4: с помощью оператора побитового сдвига.
- Метод 5: с помощью функции sum() и понимания списка
- Метод 6: с использованием рекурсии
- Метод 7: с помощью функции eval()
- Метод 8: без встроенной функции
- Метод 9: без встроенной функции
- Метод 10: с использованием цикла while
- Способы, как преобразовать
- Программа для преобразования десятичных чисел в двоичные и наоборот
- Программа преобразования в десятичные, восьмеричные и шестнадцатеричные
Метод 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)
Приведенный выше код преобразует двоичное число(в виде строки) в его десятичный эквивалент и выводит его на консоль.

Метод 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 в 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))

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