Zum Inhalt springen
BetaEN
Lektion 1 von 5Informatik entdecken

Informatik entdecken · Lektion 1 · 35 Minuten

Binärzahlen, Bits und Bytes

Das lernst du

  • Verstehen, warum Computer nur mit 0 und 1 rechnen
  • Zahlen zwischen Dezimal- und Zweiersystem umrechnen
  • Wissen, wie Buchstaben als Zahlen gespeichert werden

Strom an, Strom aus

Ein Computer besteht aus Milliarden winziger Schalter. Jeder Schalter kennt nur zwei Zustände: Strom an oder Strom aus. Dafür schreibt man 1 und 0. Eine solche Ziffer heißt Bit. Acht Bits zusammen sind ein Byte.

Mit nur zwei Ziffern kann ein Computer trotzdem jede Zahl speichern. Er rechnet dafür im Zweiersystem mit Binärzahlen.

So funktioniert das Zweiersystem

Im Dezimalsystem hat jede Stelle den zehnfachen Wert der Stelle rechts davon: Einer, Zehner, Hunderter. Im Zweiersystem ist jede Stelle doppelt so viel wert:

Stelle8421
Ziffer1101

1101 heißt also: 8 + 4 + 0 + 1 = 13. Python rechnet das mit int(text, 2) für dich um – und mit bin() in die andere Richtung:

print(int("1101", 2))
print(bin(13))
print(bin(255))

for zahl in range(9):
    print(zahl, "→", bin(zahl)[2:])

bin() setzt ein 0b davor, damit man sieht, dass es eine Binärzahl ist. Mit [2:] schneidest du das ab.

Wie viel passt in ein Byte?

Mit 8 Bits gibt es 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 = 256 Möglichkeiten: die Zahlen 0 bis 255. Jedes zusätzliche Bit verdoppelt die Anzahl:

for bits in [1, 2, 4, 8, 16, 32]:
    print(f"{bits:2} Bits → {2 ** bits} verschiedene Werte")

Deshalb haben Farben im Computer oft Werte von 0 bis 255 – das ist genau ein Byte pro Farbanteil.

Auch Buchstaben sind Zahlen

Der Computer speichert jeden Buchstaben als Zahl. ord() verrät dir die Zahl, chr() macht daraus wieder einen Buchstaben:

for zeichen in "Hi!":
    nummer = ord(zeichen)
    print(zeichen, "→", nummer, "→", bin(nummer)[2:])

print(chr(72) + chr(105))

H ist also 72 – und im Speicher steht 1001000. Diese Zuordnung heißt Unicode. Du brauchst sie gleich in der Lektion über Verschlüsselung.

Kurz-Check

Was gibt dieses Programm aus?

print(int("1010", 2) + int("11", 2))

Deine Aufgabe

Jetzt bist du dran

Schreib die Funktion zu_binaer(zahl). Sie bekommt eine ganze Zahl ab 0 und gibt sie als Text aus Nullen und Einsen zurück – ohne bin() oder format(). So geht es: Teile die Zahl immer wieder durch 2. Der Rest (% 2) ist jeweils die nächste Ziffer von rechts. Mit // 2 geht es weiter, bis die Zahl 0 ist. Sonderfall: zu_binaer(0) gibt "0" zurück.

def zu_binaer(zahl):
    ergebnis = ""
    # Solange die Zahl größer als 0 ist: Rest vorne anfügen, Zahl halbieren
    return ergebnis


print(zu_binaer(13))

Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.

Lösung anzeigen

Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:

def zu_binaer(zahl):
    if zahl == 0:
        return "0"
    ergebnis = ""
    while zahl > 0:
        ergebnis = str(zahl % 2) + ergebnis
        zahl = zahl // 2
    return ergebnis


print(zu_binaer(13))