Im a colledge Zuordnung zu tun, das wir ist ein Python-Programm erstellen binäre zu konvertieren, ohne die Behälter() Funktion oder Liste() in Dezimalzahlen. Ich plane, jede 1 und 0 in einer Funktion zu speichern, die später multipliziert wird. Ich bin mir jedoch nicht sicher, wie ich das tun sollPython-Converting binär dezimal
Antwort
Nun, Sie könnten die Binärzahl als Zeichenfolge übergeben, und durchlaufen Sie es in umgekehrter Reihenfolge, multipliziert jede 0 oder 1 mit 2^n, wobei n ist eine Zahl, die bei jedem Schleifenzyklus inkrementiert wird.
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: Wie Byte Kommandant tat, konnte man auch in der Schleife anstelle eines manuel Zähler verwenden aufzählen, sie dem gleichen Zweck dienen.
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
können Sie enumerate() anstelle der manuellen Zählervariable verwenden. –
Ich habe ihm die einfache Art und Weise, so kann es leicht zu verstehen, aber Ihre Einzeiler sind effiziente – Aurel
Ihr for-Schleife in Ordnung ist, aber 'enumerate (b)' wäre so, wie Sie in echtem Code gewesen verwenden sollten, ist es viel ist sauberer und einfacher als die manuelle Pflege einer Zählervariable. –
einfache Einzeiler mit Liste Verständnis:
decimal = sum(int(bit) * 2**rank for rank, bit in enumerate(reversed(binary)))
Es gibt keine Notwendigkeit, die Bit-String oder die Verwendung Indizes zu umkehren. Sie können bitweise Operatoren für diese einfache Transformation verwenden.
Hier einiger Python 2/Python 3-Code:
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))
Ausgang
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
Dies funktioniert, weil False
den arithmetischen Wert von Null hat, und True
hat den arithmetischen Wert von eins, so in einem arithmetischen Ausdruck (b == '1')
verhält sich wie 1, wenn b
gleich '1'
und 0 sonst.
Wenn Sie sich nicht wohl fühlen mit den Bits <<
linkes Bit und |
bitweise OR-Operatoren, können Sie stattdessen Multiplikation und Addition verwenden. Einfach
n = (n << 1) | (b == '1')
mit
n = (n * 2) + (b == '1')
- 1. Dezimal zu Bit (Binär)
- 2. Python: Binär Dezimal-Umwandlung
- 3. JavaScript konvertieren dezimal zu binär
- 4. Formel für binär bis dezimal
- 5. So konvertieren Sie Binär in Dezimal
- 6. binär zu dezimal in C Programmierung
- 7. hexadezimal zu binär und dezimal in Matlab
- 8. Konvertiere Binär in Hex in Dezimal
- 9. Bash Shell Dezimal zu Binär Konvertierung
- 10. C++ konvertieren binär zu dezimal, oktal
- 11. Konvertieren von Dezimal zu Binär in Python
- 12. Konvertieren von Binär in Dezimal in Objective C
- 13. Falsche Funktion für die Dezimal-zu-Binär-Konvertierung?
- 14. Konvertieren zwischen Dezimal, Binär und Hexadezimal in Swift
- 15. Konvertieren kam eine Reihe von dezimal in binär
- 16. Konvertieren von Dezimal zu Binär in C++ mit korrekter Bitgröße
- 17. Wie konvertiert man Binär in Dezimal (39,0) in MySQL?
- 18. Kann ich in binär drucken?
- 19. Unterschied zwischen Dezimal und Dezimal
- 20. Wandle wirklich große Zahl von binär in dezimal um und drucke es
- 21. Wie kann ich eine int-Zahl von dezimal in binär konvertieren?
- 22. Wie konvertiert man Binär in Dezimal, ohne native PHP-Funktionen zu verwenden?
- 23. Wie konvertiert man einen String in HEX oder Binär oder Dezimal
- 24. Probleme mit der Umwandlung von Binär in Dezimal in Java (Arrays)
- 25. Binär-String in Binär- oder Dezimalwert umwandeln
- 26. MySQL "binär" vs "Char Zeichensatz binär"
- 27. In C# sind Dezimal und Dezimal unterschiedlich?
- 28. Binäre Darstellung eines .NET Dezimal
- 29. Python Dezimal
- 30. Dataformatstring dezimal
eine Lese über den Prozess. Stellen Sie sich vor, wie Sie die eine kleine Zahl umwandeln würden, dann ein etwas größeren und bauen von dort –
Konvertieren ist nicht das Problem, das mit im, ist die Speicherung der binären Zahlen wird das Problem – Ruben
@Ruben eine Zahl eine Zahl (es d immer binär auf einer Maschine gespeichert). Sie könnten also tatsächlich darüber nachdenken, seine Basis-2-Repräsentation zu speichern. Wie wäre es, es als String zu speichern? – Roberto