Dezimalzahlen in Binärzahlen umwandeln

Das Verständnis dafür, wie dezimale Zahlen (die Zahlen, die wir im Alltag benutzen) in binäre Zahlen (die von Computern verwendet werden) umgewandelt werden, ist eine grundlegende Fähigkeit in der Informatik. Im Binärsystem repräsentiert jede Stellenposition eine bestimmte Zweierpotenz. Man kann sich eine binäre Zahl als eine Angabe der benötigten Zweierpotenzen vorstellen, deren Summe dem gegebenen Dezimalwert entspricht.
Zahl im Zehnersystem
128
64
32
16
8
4
2
1
Summe
114
0
1
1
1
0
0
1
0
114 = 64 + 32 + 16 + 2
12
0
0
0
0
1
1
0
0
12 = 8 + 4
13
0
0
0
0
1
1
0
1
13 = 8 + 4 + 1
Jede 1 in der binären Darstellung zeigt an, dass die zugehörige Zweierpotenz Teil der Summe ist, während eine 0 bedeutet, dass diese Potenz nicht verwendet wird. Die Schönheit des Binärsystems liegt in seiner Einfachheit und Eindeutigkeit.
💡
Jede Zahl hat genau eine binäre Darstellung, die sich aus einer Summe verschiedener Zweierpotenzen zusammensetzt.

Das Finden des rechtesten Bits

Beginnen wir damit, wie man das rechteste Bit der Binärdarstellung einer Zahl ermittelt. Im Dezimalsystem erhält man die letzte Ziffer, indem man den Rest bei Division durch 10 nimmt (in vielen Programmiersprachen als % 10 geschrieben). Im Binärsystem ist das rechteste Bit einer Zahl der Rest bei Division durch 2 (% 2). Das bedeutet auch, dass das rechteste Bit bei ungeraden Zahlen immer 1 und bei geraden Zahlen immer 0 ist.
Beispiele:
  • Für 114 ist das rechteste Bit 0, da 114 % 2 = 0.
  • Für 13 ist das rechteste Bit 1, da 13 % 2 = 1.

Das Verschieben einer Binärzahl

Nachdem wir das rechteste Bit kennen, wird im nächsten Schritt die gesamte Binärzahl um eine Stelle nach rechts verschoben. Diese Operation entspricht einer Ganzzahldivision der Zahl durch 2 (/ 2 in den meisten Programmiersprachen oder // 2 in Python). Dadurch wird das rechteste Bit entfernt, und das darauf folgende Bit rückt nach rechts.
  • Das Verschieben von 114 ( in Binär) um eine Stelle ergibt , was 114 / 2 = 57 im Zehnersystem entspricht.
  • Das Verschieben von 13 ( in Binär) um eine Stelle ergibt , was 13 / 2 = 6 im Zehnersystem entspricht.

Der Umwandlungsalgorithmus

Aus den zwei Schritten – Ermitteln des rechtesten Bits und Verschieben der Zahl – lässt sich ein einfacher Algorithmus ableiten, um eine Dezimalzahl in Binärdarstellung zu konvertieren:
  1. Eine leere Zeichenkette initialisieren, in der die Binärdarstellung gespeichert wird.
  1. Solange die Zahl größer als 0 ist:
      • Das rechteste Bit durch den Rest bei Division durch 2 bestimmen.
      • Dieses Bit links an die bisherige Binärzeichenkette anhängen.
      • Die Zahl durch 2 (Ganzzahldivision) teilen, um sie nach rechts zu verschieben.
  1. Wenn die Zeichenkette nicht leer ist, diese zurückgeben, ansonsten 0.
Mit diesem Algorithmus kann jede beliebige Zahl im Zehnersystem in ihre eindeutige Binärdarstellung umgewandelt werden.

Minimale Implementierung

b, d = '101001101', 0   # Binär- und Dezimalzahl
power = 1               # Aktuelle Zweierpotenz (1, 2, 4, 8, 16, ...)

for bi in b[::-1]:      # Schleife vom niederwertigsten zum höherwertigsten Bit
    d += int(bi) * power
    power *= 2

print(d)
binary → decimal conversion
b, d = '', 5234         # Binär- und Dezimalzahl

while d > 0:            # Solange es noch Bits zu verarbeiten gibt
    b = str(d % 2) + b  # Bit links an den String anfügen
    d //= 2             # Zahl nach rechts verschieben

print(b if b != '' else 0)
decimal → binary conversion
 
To check your solution you need to sign in
Sign in to continue