def dezimal_zu_binaer(n):
ziffern = []
while n > 0:
ziffern.append(n % 2)
n //= 2
return ziffern[::-1]
dezimal_zu_binaer(23) # Beispiel: 23 → 10111[1, 0, 1, 1, 1]
In diesem Kapitel betrachten wir die Umrechnung zwischen Dezimal- und Binärzahlen algorithmisch. Dabei analysieren wir den Ablauf der Rechenschritte, beschreiben sie als Pseudocode, visualisieren sie mit Flussdiagrammen und setzen sie anschließend manuell in Python um.
Wir wiederholen die ganzzahlige Division durch 2 und merken uns den Rest. Die Binärziffern ergeben sich aus den Resten — von unten nach oben gelesen.
Eingabe: Dezimalzahl n
Initialisiere leere Liste ziffern
Solange n > 0:
rest ← n mod 2
ziffern an rest anhängen
n ← n ganzzahlig geteilt durch 2
Ausgabe: ziffern in umgekehrter Reihenfolge
def dezimal_zu_binaer(n):
ziffern = []
while n > 0:
ziffern.append(n % 2)
n //= 2
return ziffern[::-1]
dezimal_zu_binaer(23) # Beispiel: 23 → 10111[1, 0, 1, 1, 1]
Jede Stelle repräsentiert eine Zweierpotenz. Wir addieren die Produkte der Ziffern mit ihrer Potenz.
Eingabe: Liste binärer Ziffern (z. B. [1, 0, 1, 1])
Initialisiere dezimalwert ← 0
Für jede Stelle i von rechts nach links:
dezimalwert ← dezimalwert + ziffer * 2^position
Ausgabe: dezimalwert
def binaer_zu_dezimal(ziffern):
dezimalwert = 0
for i in range(len(ziffern)):
potenz = len(ziffern) - i - 1
dezimalwert += ziffern[i] * (2 ** potenz)
return dezimalwert
binaer_zu_dezimal([1, 0, 1, 1]) # Ergebnis: 1111
Beide Algorithmen haben eine logarithmische Laufzeit bezogen auf die Eingabegröße \(n\), denn:
Daher gehören beide zur Klasse der logarithmischen Algorithmen.
Diese Verfahren sind nicht nur theoretisch interessant – genau so arbeiten Computer intern mit Bitfolgen!