Мы обсудим некоторые встроенные методы, а также создадим собственные методы для преобразования двоичной строки в десятичную на Питоне.
Есть разные способы конвертировать двоичные числа в десятичные в 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, которая преобразует двоичное число в десятичные, восьмеричные и шестнадцатеричные числа.