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:
| Stelle | 8 | 4 | 2 | 1 |
|---|---|---|---|---|
| Ziffer | 1 | 1 | 0 | 1 |
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))- Denkanstoß
In einer
while-Schleife: ergebnis=str(zahl % 2)+ergebnis und danach zahl=zahl//2. - Welcher Befehl hilft?
Der Rest kommt immer VORNE an den Text – die erste Rest-Ziffer ist die ganz rechte.
ifzahl==0 – dann gleichreturn"0".Nur mit
%und//rechnen. - Lückencode – ergänze die ___
def zu_binaer(zahl): if ___: return ___ ergebnis = "" while ___: ergebnis = ___ zahl = ___ return ergebnis print(zu_binaer(13))
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
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))