Im, выполняющее назначение colledge, которое позволяет нам создать программу python для преобразования двоичного кода в десятичный без использования функции bin() или списка(). Я планирую, чтобы каждый 1 и 0 сохранялся в функции, которая будет умножаться позже. Тем не менее, я не уверен, как я могу это сделать.Python-Преобразование двоичного в десятичное
ответ
Ну, вы можете передать двоичное число в виде строки и перебрать его в обратном порядке, умножая каждый 0 или 1 на 2^n, где n - это число, увеличивающееся в каждом цикле цикла.
def bin2dec(b):
number = 0
counter = 0
for i in b[::-1]: # Iterating through b in reverse order
number += int(i)*(2**counter)
counter += 1
return number
bin2dec("101010") # 42
EDIT: Как Byte Commander сделал, вы также можете использовать перечисление в цикле вместо счетчика Мануэль, он служит той же цели.
def bin2dec(b):
number = 0
for idx, num in enumerate(b[::-1]): # Iterating through b in reverse order
number += int(num)*(2**idx)
return number
вы можете использовать enumerate() вместо переменной счетчика вручную. –
Я сделал это простым способом, так что его можно легко понять, но ваш однострочный файл более эффективен. – Aurel
. Ваш цикл for fine, но 'enumerate (b)' было бы так, как вы должны использовать в реальном коде, это много чище и проще, чем вручную заботиться о переменной счетчика. –
Простой один вкладыш, используя список понимание:
decimal = sum(int(bit) * 2**rank for rank, bit in enumerate(reversed(binary)))
Там нет необходимости в обратном битовую строку, или индексы использования. Вы можете использовать побитовые операторы для этого простого преобразования.
Вот некоторые Python 2/Python 3 код:
from __future__ import print_function
def bin_to_dec(bits):
n = 0
for b in bits:
n = (n << 1) | (b == '1')
return n
# Test
for i in range(16):
bits = format(i, 'b')
n = bin_to_dec(bits)
print('{0:2}: {1:>4} {2:2}'.format(i, bits, n))
выход
0: 0 0
1: 1 1
2: 10 2
3: 11 3
4: 100 4
5: 101 5
6: 110 6
7: 111 7
8: 1000 8
9: 1001 9
10: 1010 10
11: 1011 11
12: 1100 12
13: 1101 13
14: 1110 14
15: 1111 15
Это работает, потому что False
имеет арифметическое значение, равное нулю, и True
имеет арифметическое значение одного, поэтому в арифметическом выражении (b == '1')
ведет себя как 1, если b
равно '1'
и 0 в противном случае.
Если вы не чувствуете себя комфортно с помощью сдвига левого разряда <<
и |
побитовых операторов ИЛИ, вместо этого вы можете использовать умножение и добавление. Просто замените
n = (n << 1) | (b == '1')
с
n = (n * 2) + (b == '1')
- 1. высчитывает двоичного в десятичное вручную
- 2. Преобразование из двоичного в десятичное
- 3. Десятичное значение для двоичного преобразования
- 4. Преобразование двоичного в десятичное в Objective C
- 5. Преобразование двоичного в десятичное в Java
- 6. Преобразование 32 бит двоичного числа в десятичное
- 7. Десятичное значение для двоичного преобразования в C
- 8. C++ Простое преобразование из двоичного в десятичное
- 9. Преобразование двоичного в десятичное с помощью MySQL
- 10. преобразование двоичного в десятичное - результаты слишком большие
- 11. Преобразование из двоичного дополнения в десятичное.
- 12. QBASIC Десятичное значение для двоичного преобразования
- 13. java 4 десятичное место для двоичного кода
- 14. Преобразование двоичного в десятичное с использованием массивов в java
- 15. Неправильное десятичное преобразование из двоичного в строку в java
- 16. Преобразование повторяющегося двоичного числа в десятичное (выражение в виде серии?)
- 17. Программа для преобразования двоичного в десятичное число в C#?
- 18. Преобразование двоичного в десятичное число в заданной последовательности
- 19. Преобразование двоичного числа в десятичное число из файла с пробелом
- 20. Преобразование числа с плавающей точкой из двоичного в десятичное число
- 21. Преобразование из двоичного в десятичное без использования арифметических операций
- 22. Преобразование двоичного в десятичное с использованием рекурсивного метода
- 23. Как преобразовать двоичную часть двоичного кода в отрицательное десятичное число?
- 24. Perl-скрипт для преобразования двоичного числа в десятичное число
- 25. Преобразование двоичного в десятичное с использованием цикла while?
- 26. Преобразование двоичного в десятичное с использованием массива и цикла
- 27. Преобразование сложения двоичного кода 2 в десятичное число
- 28. Десятичное значение для двоичного кода в сборке высокого уровня (HLA)
- 29. Быстрый способ преобразования двоичного числа в десятичное число
- 30. Десятичное значение для двоичного преобразования с использованием массива и стека
Вы читали о процессе. Представьте себе, как бы вы конвертировали небольшое число, затем немного больше и создавали оттуда –
Преобразование - это не проблема, связанная с имением, является ли сохранение двоичных чисел проблемой – Ruben
@Ruben number - это число (это ' d всегда хранятся в двоичном виде как таковые, на машине). Таким образом, вы можете подумать о сохранении своего представления base-2. Как хранить его как строку? – Roberto