def dezimal_zu_binaer(n):
= []
ziffern while n > 0:
% 2)
ziffern.append(n //= 2
n return ziffern[::-1]
23) # Beispiel: 23 → 10111 dezimal_zu_binaer(
[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:
% 2)
ziffern.append(n //= 2
n return ziffern[::-1]
23) # Beispiel: 23 → 10111 dezimal_zu_binaer(
[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):
= 0
dezimalwert for i in range(len(ziffern)):
= len(ziffern) - i - 1
potenz += ziffern[i] * (2 ** potenz)
dezimalwert return dezimalwert
1, 0, 1, 1]) # Ergebnis: 11 binaer_zu_dezimal([
11
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!