HOWTO · Python
So konvertieren Sie Int in Binär in Python
Dieses Tutorial demonstriert, wie Ganzzahlen in Python in Binärform umgewandelt werden
Auf dieser Seite
Pythons integrierte Funktion bin() ist der schnellste Weg, eine Ganzzahl in eine Binärzeichenfolge umzuwandeln. Verwenden Sie format() oder Zeichenfolgenformatierung, wenn Sie die Ziffern ohne das Präfix 0b benötigen. Ein Beispiel zur Bitmanipulation zeigt, wie sich die Ziffern manuell zusammensetzen lassen.
Mit bin() eine Ganzzahl in Python in Binärdarstellung umwandeln
Rufen Sie bin() mit einer Ganzzahl auf. Die Funktion gibt eine Zeichenfolge zurück, in der den Binärziffern das Präfix 0b vorangestellt ist. Dieses kennzeichnet die Darstellung zur Basis 2.
value = 16
binary = bin(value)
print(binary)
0b10000
Bei einer negativen Ganzzahl setzt bin() das Zeichen - vor das Präfix, wie bei bin(-10). Das Ergebnis ist eine Zeichenfolge. Sie können sie direkt ausgeben oder nur dann wieder in einen Zahlenwert umwandeln, wenn Ihre Anwendung das benötigt.
Mit format() eine Ganzzahl in Python ohne das Präfix 0b in Binärdarstellung umwandeln
Übergeben Sie format() die Ganzzahl und den Formatspezifizierer b, um nur die Binärziffern zu erhalten. Dieser Spezifizierer wählt die Basis 2 aus; anders als bei bin() enthält das Ergebnis kein 0b. format() ist eine integrierte Funktion. Auch bin() ist eine integrierte Funktion und keine Methode; sie gibt die oben beschriebene Darstellung mit Präfix zurück.
value = 10
binary_digits = format(value, "b")
print(binary_digits)
1010
Bei negativen Ganzzahlen enthält die formatierte Zeichenfolge ein führendes Minuszeichen, gefolgt von den Binärziffern des Betrags. Für führende Nullen können Sie eine Breite angeben, etwa mit format(10, "08b"); die Breite zählt sowohl die Ziffern als auch ein mögliches Vorzeichen. Sie ist ein Mindestwert: Benötigt eine Zahl mehr Stellen, wird sie nicht abgeschnitten.
Mit Zeichenfolgenformatierung eine Ganzzahl in Python in Binärdarstellung umwandeln
Die Methode str.format() verwendet denselben Formatspezifizierer b. Sie eignet sich, wenn Sie den Wert in eine längere Zeichenfolge einfügen möchten. Eine f-Zeichenfolge ist eine kürzere Alternative. Im unveränderten Beispiel bleibt die sichtbare Ausgabe Value: auf Englisch.
value = 15
formatted = "Value: {:b}".format(value)
f_string = f"Value: {value:b}"
print(formatted)
print(f_string)
Value: 1111
Value: 1111
Um die Binärziffern auf eine Mindestbreite aufzufüllen, geben Sie vor b eine Breite an, etwa mit {:08b} oder {value:08b}. Beide Varianten behalten bei negativen Ganzzahlen das Vorzeichen bei und füllen das formatierte Feld bis zur angegebenen Mindestbreite auf; das Vorzeichen zählt dabei mit.
Eine Ganzzahl mit Bitmanipulation in Binärdarstellung umwandeln
Bei einer manuellen Umwandlung lässt sich wiederholt das niederwertigste Bit mit & 1 auslesen und der Betrag anschließend mit >> nach rechts verschieben. Da die Bits dabei von rechts nach links erfasst werden, müssen sie umgekehrt werden, um die Binärziffern zu erhalten. Die folgende Hilfsfunktion behandelt den Wert null ausdrücklich und stellt eine negative Ganzzahl mit einem Minuszeichen und den Binärziffern ihres Betrags dar. Das entspricht Pythons Vorzeichen-Betrag-Darstellung und nicht einer Darstellung im Zweierkomplement mit fester Breite.
def int_to_binary(value):
if value == 0:
return "0"
sign = "-" if value < 0 else ""
magnitude = abs(value)
bits = []
while magnitude:
bits.append(str(magnitude & 1))
magnitude >>= 1
return sign + "".join(reversed(bits))
for number in (15, 0, -10):
print(int_to_binary(number))
1111
0
-1010
Dieser Ansatz veranschaulicht das Auslesen einzelner Bits. Für gewöhnliche Umwandlungen sind bin() und format() einfacher. Die Schleife endet, sobald der Betrag keine weiteren Bits mehr enthält; der Sonderfall für null liefert dessen einzelne Binärziffer. Da der Betrag umgewandelt und das Vorzeichen getrennt ergänzt wird, beansprucht das Ergebnis nicht, eine Darstellung im Zweierkomplement mit fester Breite zu sein. Legen Sie Breite und Darstellung ausdrücklich fest, wenn Sie Binärdaten mit einem Protokoll oder einer Hardwareschnittstelle austauschen.