Buchstaben in einer Zahl
Dreh deinen WLAN-Router zu Hause um. Auf dem Aufkleber steht oft eine Adresse wie 3C:A6:2F:11:08:9E.
Das ist eine Zahl, obwohl Buchstaben darin stehen. Der Router selbst kennt nur Schalter, die an oder aus sind. Heute lernst du, wie beides zusammenpasst.
Am Ende dieser Lektion
Notiz
Ich kann ganze Zahlen binär und hexadezimal schreiben.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Bit | eine binäre Ziffer, also 0 oder 1 | |
| Byte | eine Gruppe von acht Bits | |
| Dezimal | das übliche Zählen mit den zehn Ziffern 0 bis 9 | |
| Binär | Zählen mit nur zwei Ziffern, 0 und 1 | 100101 |
| Stellenwert | was eine Ziffer wegen ihres Platzes wert ist | |
| Hexadezimal | Zählen in Sechzehnern, mit 0 bis 9 und A bis F | 3C |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Bevor du anfängst
Notiz
Drück oben in der Leiste auf Lab starten. Das Lab ist eine ganze Ubuntu-Maschine für dich allein und braucht eine Minute zum Hochfahren. Jede Schaltfläche Ausführen tippt ihren Befehl in das Terminal der Maschine.
Binär kennt nur 0 und 1
Im Computer hält jede Zahl aus Schaltern, die aus oder an sind. Aus schreiben wir als 0, an als 1.
Im Dezimalsystem ist jede Stelle zehnmal so viel wert wie die rechts daneben. Binär ist sie doppelt so viel wert. Ein Byte hat acht Stellen: 128, 64, 32, 16, 8, 4, 2 und 1. Zähl die Stellen zusammen, an denen eine 1 steht.
Beispiel: die Zahl 37 in einem Byte
| Stellenwert | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| Bit | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
| Wert | 0 | 0 | 32 | 0 | 0 | 4 | 0 | 1 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
In den Ordner arch wechseln
cd ~/archHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Python schreibt 37 binär
python3 -c "print(bin(37))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Bits wieder dezimal lesen
python3 -c "print(int('100101', 2))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Halbieren macht aus dezimal binär
Teil die Zahl durch 2 und schreib den Rest auf. Teil das Ergebnis wieder durch 2. Mach weiter, bis du bei 0 ankommst.
Die Reste sind die Bits. Lies sie von unten nach oben, also vom letzten Rest zum ersten.
Beispiel: 11 durch Halbieren
| Zahl | Geteilt durch 2 | Rest |
|---|---|---|
| 11 | 5 | 1 |
| 5 | 2 | 1 |
| 2 | 1 | 0 |
| 1 | 0 | 1 |
| Von unten gelesen | 1011 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Auch die Shell liest binär
echo $((2#1011))Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele lesen eine Binärzahl von links, als wäre das erste Bit 1 wert. Das stimmt nicht. Das Bit ganz rechts ist 1 wert, und jede Stelle links davon ist doppelt so viel wert. Darum ist 1000 acht und 0001 eins.
Hexadezimal ist eine Kurzschrift für Bits
Lange Reihen aus Bits sind schwer zu lesen. Hexadezimal zählt in Sechzehnern. Nach 0 bis 9 kommen A bis F für zehn bis fünfzehn.
Eine Hex-Ziffer steht für genau vier Bits. Ein Byte sind also immer zwei Hex-Ziffern. Teil das Byte in zwei Hälften zu je vier Bits und schreib jede Hälfte als eine Ziffer.
Beispiel: drei Bytes vom Router
| Dezimal | Binär | Zwei Hälften | Hex |
|---|---|---|---|
| 60 | 00111100 | 0011 ist 3, 1100 ist 12 | 3C |
| 166 | 10100110 | 1010 ist 10, 0110 ist 6 | A6 |
| 47 | 00101111 | 0010 ist 2, 1111 ist 15 | 2F |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Shell schreibt 60 hexadezimal
printf '%X\n' 60Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Python prüft die anderen zwei
python3 -c "print(hex(166), hex(47))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Weiterführend: die ganze Router-Adresse
Die Adresse auf dem Aufkleber hat sechs Bytes: 3C:A6:2F:11:08:9E. Drei davon kennst du schon.
Rechne die anderen drei von Hand in dezimal um. Prüf deine Ergebnisse danach im Terminal, zum Beispiel mit echo $((16#9E)).