Zahlensysteme

Du zählst und rechnest gewöhnlich im Dezimalsystem (Zehnersystem): Du kennst die zehn Ziffern 0 bis 9 – und du weisst, dass bei mehrstelligen Zahlen jede zusätzliche Stelle von rechts nach links zehn mal mehr wert ist: Die Zahl 234 setzt sich zusammen aus 2 mal 100 plus 3 mal 10 plus 4 mal 1.

Hier betrachten wir andere Zahlensysteme, insbesondere das Binärsystem und das Hexadezimalsystem.

Lernziele:

Neben dem Zehnersystem könnten wir auch in Stellenwertsystemen mit anderer Basis zählen und rechnen – zum Beispiel im Oktalsystem mit Basis 8 oder im Vigesimalsystem mit der Basis 20. Das Binärsytem (Basis 2) und das Hexadezimalsystem (Basis 16) sind in der Informatik von besonderer Bedeutung:

  • Computer und andere digitale Geräte kennen nur die Zustände 0 und 1. Sie rechnen im Binärsytem, in dem alle Zahlen mit diesen zwei Ziffern, 0 und 1, dargestellt und berechnet werden können.
  • Das Hexadezimalsystem besteht aus den Ziffern 0 bis 9 und zusätzlich aus den Ziffern A…F, hat also 16 Ziffern (von griech. hexa „sechs“ und lat. decem „zehn“). Wozu ist das gut? Die Antwort: Für Menschen, die mit Computern arbeiten:
    • Jede vierstellige Binärzahl lässt sich durch eine einzige Ziffer im Hexadezimalsystem darstellen:
    • Die grösste vierstellige Binärzahl 1111 passt genau in die grösste einstellige Hexadezimalzahl F (weil 16 ist eine 2er-Potenz ist: 24 = 16).
    • Das heisst: Im Hexadezimalsystem können Binärzahlen sehr kompakt und für Menschen gut lesbar dargestellt werden.

Wir arbeiten vorwiegend mit dem Dossier Zahlensysteme.

Auftrag 1 – Einführung ins Dossier Zahlensysteme

  1. Lies Kapitel 1 im Dossier und beantworte die Fragen zum Zählen mit den Fingern:
    1. Wie weit zählst du gewöhnlich mit Fingern?
    2. Zusatzaufgabe (freiwillig): Wie weit kannst du im Binärsystem mit den Fingern einer Hand oder zweier Hände zählen?

Auftrag 2 – Verschiedene Zahlensysteme

  1. Lies Kapitel 2 im Dossier und löse Aufgabe A1. Vergleiche anschliessend mit der Lösung am Ende des Dossiers.
  2. Zusatzaufgabe: Wie gross ist die Zahl 2347 im uns bekannten Dezimalsystem?

Tipps für die Zusatzaufgabe:

Auftrag 3 – Binärzahlen lesen und umwandeln

  1. Lies Kapitel 3 im Dossier und löse Aufgaben B1 und B2.
  2. Löse Aufgabe B3 im Dossier auf https://webtigerpython.ethz.ch/:
    1. Definiere eine Funktion binary_to_decimal(b), die den Binärstring b in eine Dezimalzahl wandelt und diese zurückgibt. Beachte hierfür folgende Hinweise in den grünen Boxen. Notiere zuerst mit Kommentaren, wie du die Funktion aufbauen willst.
    2. Teste deine Funktion.

Binärzahlen als Strings

  • Für diese Übungen stellen wir Binärzahlen als String (als Text) dar: Der Binärstring „101“ entspricht der Dezimalzahl 5.
  • Einen String können wir mit einer Schleife (while oder for) Buchstabe für Buchstabe durchgehen.
  • Mit [eckigen Klammern] kannst auf einzelne Positionen im String zugreifen: Für text = „Hallo Welt“ gibt text[4] das Zeichen „o“.

Binärzahlen in Dezimalzahlen umrechnen

  • Die Wertigkeit jeder Stelle in einer Binärzahl ist 2Stelle (in python: 2 ** stelle):
  • Die Stelle ganz rechts ist die nullte Stelle, die links davon ist Stelle 1, dann 2 etc.
  • Beispiel 1: Für die dreistellige Binärzahl 111 rechnen wir 22 + 21 + 20 = 4 + 2 + 1 = 7.
  • Beispiel 2: Für die vierstellige Binärzahl 1001 rechnen wir 23 + 20 = 8 + 1 = 9.

Weitere Hinweise

  • Wenn du mit einer Schleife einen String durchgehst, beginnst du gewöhnlich bei der Stelle ganz links. Dann hat die erste Stelle im Binärstring „10110“ die Wertigkeit 24, also 16. Die nächste Stelle hat die Wertigkeit 8, dann 4 etc. Der Binärstring „10110“ entspricht also der Dezimalzahl 22 (16 + 4 + 2).
  • Die Funktion int wandelt ein Zeichen in die entsprechende Zahl, z. B. int('1') = 1.

Auftrag 4 – Bits und Bytes

  1. Löse Aufgabe B4 im Dossier.

Auftrag 5 – Dezimalzahlen in Binärzahlen umwandeln

  1. Lies Seite 8 im Dossier und löse die Aufgabe B5.
  2. Löse die Aufgabe B6: Schreibe eine Funktion decimal_to_binary(d), die die Dezimalzahl d in einen Binärstring umrechnet und diesen zurückgibt.

Auftrag 6 – Binäre Addition

  1. Löse die Aufgabe B7 auf Seite 11.
  2. Löse die Aufgabe B8 Schreibe eine Funktion binary_add(a, b), die zwei gleich lange Binästrings a und b addiert und die Summe als Binärstring zurückgibt.
    1. Die Addition soll nach demselben Verfahren verfolgen, das du in der schriftlichen Addtion anwendest. Eine Umwandlung in Dezimalzahlen ist nicht erlaubt.
    2. Beachte die Tipps im Dossier und folgenden Hinweise: Wir können Aufgabe mithilfe der Operatoren Modulo und Ganzzahldivision lösen. Kopiere den Code unten und notiere erst mit #Kommentaren hinter jede Zeile, welche beiden Zahlen ausgegeben werden. Führe dann aus.
    3. Deine Funktion muss (unter anderem) a und b Bit für Bit mit dem (bestehenden) Rest zusammenrechnen, um erstens die Summe für das aktuelle Bit und zweitens den Rest für das nächste Bit zu erhalten.
    4. Notiere erst mit Kommentaren, wie du die Funktion aufbauen willst.
  3. Wenn deine Funktion funktioniert: Erweitere sie so, dass auch zwei unterschieldich lange Binärstrings miteinander addiert werden können.
print(3%2, 3//2)
print(2%2, 2//2)
print(1%2, 1//2)
print(0%2, 0//2)

Auftrag 7 – Binäre Addition ohne Software (optional)

Du weisst, dass Computer und andere digitale Geräte Rechenmaschinen sind: Sie können unfassbar schnell rechnen. Aber wie? Die Einsen und Nullen speichert der Computer in Form elektrischer Ladungen – vereinfacht betrachtet: Ist in einer Speicherzelle eine Ladung, so bedeutet das eine Eins, sonst eine Null. Nehmen wir 8 Speicherzellen zusammen, so können wir darin eine 8-Bit-Binärzahl speichern. Angenommen, wir haben 8 Speicherzellen für Zahl A und weitere 8 Speicherzellen für Zahl B: Eine digitale Addiermaschine muss nun die Speicherzellen der Zahlen A und B so miteinander verbinden, dass sich daraus die Summe von A und B ergibt.

  1. Lies Teil 3 im Skript Vom Transistor zur CPU: Du musst nicht alles verstehen: Betrachte den Transitor einfach als Schalter, der elektrisch aktiviert wird. Wichtig ist, dass du die Logikgatter (engl. Logic gates) AND, OR, und XOR verstehst. Aus diesen Bausteinen werden nicht nur Rechenschaltungen, sondern auch andere essentielle Bestandteile eines Computers wie Speicher, Zähler, Register etc. gebaut. Bei Unklarheiten LP fragen.
  2. Lies nun das Kapitel Binäre Addition im Teil 7 des Skripts.
    1. Dieses Video erklärt den Aufbau von digitalen Addierschaltungen Schritt für Schritt.
    2. Testfrage: Angenommen, ein Logikgatter ist aus durchschnittlich 10 Transistoren aufgebaut: Wie viele Transistoren sind nötig, um zwei 8-Bit-Zahlen zu addieren?
  3. Baue selbst eine kleine Schaltung mit fertigen 4-Bit-Additions-Bausteinen auf und probiere sie aus:
    1. Löse erst Aufgabe 1 in Einfache Schhaltungen auf dem Breadboard aufbauen : Damit du lernst, wie man Schaltungen auf dem Breadboard aufbaut.
    2. Studiere das Datenblatt des 4-Bit-Voll-Addierer-Chips 74LS283
      1. VCC verbindest du mit dem Pluspol der Spannungsquelle (5V), GND mit dem Minuspol.
      2. GND Eingänge auf Schalter.
      3. Die Eingänge A und B verbindest du erstens über 10kΩ-Pullup-Widerstände mit 5V, zweitens über Schalter mit GND.
      4. Die Ausgänge Σ verbindest du über 150Ω-Widerstände mit den Anoden von LEDs, deren Kathoden dann auf GND gehen.
      5. Frage die LP nach dem Material.
Wert Dezimal Wert Binär Hex-Nennwert Merkhilfe
0 0000 0
1 0001 1
9 1001 9
10 1010 A
11 1011 B
12 1100 C Cwölf
13 1101 D Dreizehn
14 1110 E
15 1111 F Fünfzehn

Auftrag 8 – Umwandlungen Hex, Dez, Bin

  1. Löse Aufgabe C1 im Dossier.
    1. Gehe gleich vor, wie bei der Umwandlung von Binär zu Dezimal. Nur ist die Basis nun 16. Die Stelle ganz rechts hat die Wertigkeit 160, die links davon 161, dann 162 etc. Die Nennwerte entsprechen der Tabelle oben.
    2. Bei der Umwandlung von Dezimal zu Hex kannst du wieder den Restwert-Algorithmus anwenden – angepasst für das Hexadezimalsystem
  2. Lies Seite 23 im Dossier und folgende Überlegung: Wie du in der Tabelle oben siehst, füllen vier Binär-Stellen genau eine Hex-Stelle aus:
    1. Für die Umwandlung von Binär nach Hex musst du einfach jeweils vier Binär-Stellen (von rechts) zusammennehmen und die entsprechende Hex-Ziffer notieren.
    2. Für die Umwandlung von Hex nach Binär machst du das Gegenteil: Für jede Hexziffer vier Binärstellen hinschreiben.
  3. Löse Aufgabe C2 im Dossier.

Auftrag 9 – RGB-Hexcodes

Alle Farben können durch Mischen der Grundfarben Rot, Grün, und Blau erzeugt werden. Auf deinem Display, das du jetzt gerade ansiehst (auch Bildschirm genannt), werden diese drei Farben wie folgt gemischt: Jedes Pixel deines Displays besteht aus einem roten, grünen und blauen Feld. Jedes dieser Felder kann unterschiedlich hell leuchten:

Jedes Pixel besteht aus einem roten, grünen und blauen Leuchtefeld:

Hier sind 9 x 6 Pixel zu sehen:


Jedes Feld kann unterschiedlich hell leuchten:

  • Beispiel: Wenn das rote und das blaue Feld ganz hell leuchten und das grüne gar nicht leuchtet, dann leuchtet dieses Pixel pink.

Dein Computer speichert also für jedes Pixel drei Farbwerte. Die drei Werte geben an, wie hell das jeweilige Feld leuchten soll. Normalerweise wird für jede Farbe 1 Byte (= 8 Bit) reserviert. Das heisst, für jede Farbe können 28 verschiedene Helligkeitsstufen definiert werden: 0 = dunkel, 255 = maximal hell.

Was hat das alles mit Hex zu tun? Im Hexadezimalsystem kann 1 Byte mit genau 2 Ziffern dargestellt werden. Um jede beliebige Farbe anzugeben, benötige ich also bloss 2 Ziffern pro Grundfarbe, also 6 Ziffern. Hier ein paar Beispiele:

  • Der Code 0xFF0000 beschreibt die Farbe (reines) Rot: voll rot, kein grün, kein blau.
  • Der Code 0xFF7C00 beschreibt die Farbe Orange: voll rot, halb grün und kein blau.
  • Der Code 0x9437FF beschreibt dieses Violett: viel rot, wenig grün und voll blau.

Alles klar? Falls ja: Bearbeite folgende Aufgaben. Falls nein: LP fragen.

A – Wie viele Farben?

Wenn jede Farbe eine Pixels in 256 verschiedenen Helligkeitsttufen leuchten kann: Wie viele Farben können dargestellt werden? Rechne und vergleiche dann mit der Lösung unten.

Lösung:

B – RGB-Werte in Word

Experimentiere mit Word (oder mit einem ähnlichen Programm):

  1. Schreibe einen Text, markiere ihn und klicke auf die Schaltfläche für die Textfarbe.
  2. Klicke auf „weitere Farben“. Du solltest zu einem Menü gelangen, bei dem du die drei Grundfarben mit Reglern oder direkt durch Eingabe von Werten verstellen kannst.
  3. Verstelle die Werte für Rot, Grün, und Blau und beobachte die Wirkungen.
C – RGB-HexCode-Bild

Jedes gute Gestaltungsprogramm bietet die Möglichkeit, RGB-HexCodes einzugeben und auszulesen. RGB-HexCodes kannst du einfach kopieren und einfügen. Damit kannst du sicher sein, dass du genau die richtige Farbe wählst. Hier eine kleine Übung: Erstelle ein Bild in der Art, wie du es unten siehst:

  1. Suche ein Bild in hoher Auflösung, das dir gefällt, aber nicht zu bunt ist: Mann soll die Texte lesen können.
  2. Füge es in Powerpoint (o.ä.) ein, vergrössere es seitenfüllend und füge drei grosse schwarze Texte namens 0x000000 ein.
  3. Markiere einen Text, ändere seine Farbe und wähle mit dem Pipetten-Werkzeug eine Farbe aus dem Bild. Kopiere den HexCode dieser Farbe und füge ihn in den Text ein, der nun ebenso gefärbt ist.
  4. Am Ende soll für alle drei Texte der Text (RGB-HexCode) mit der Textfarbe übereinstimmen.
  5. Exportiere das ganze als PNG-Datei.
  6. Öffne dein PNG-Bild und überprüfe, ob die Hex-Codes mit den Farben übereinstimmen. Hier kannst du RGB-HexCodes auslesen und einfügen und die entsprechende Farbe sehen.
  7. Wenn alles stimmt: sende das Bild der Lehrperson.

Auftrag 10 – Turtle-RGB-Regler (optional)

Erstelle auf webtigerpython einen einfachen Turtle-RGB-Regler:

  • Die Turtle zeichnet einen grossen Punkt der gewählten Farbe.
  • Mit den Pfeiltasten links und rechts kannst du die aktuelle Grundfarbe wählen.
  • Mit den Pfeiltasten auf und ab kannst du den Wert dieser Farbe erhöhen:
    • Für jede Grundfarbe sollen nur 6 Stufen inkl. 0 einstellbar sein, also 0, 51, 102, 153, 204, 255.
    • Wenn du diese Zahlen in Hex notierst und in eine Liste packst, kannst du den anzuzeigenden RGB-HexCode jederzeit leicht zusammenstellen.
  • Erweitere deinen Regler mit beliebigen Features.

Siehe Dossier Kapitel 5, Aufgaben D1 bis D3

Aufgabe B3

Aufgabe B6

Aufgabe B8

  • gf_informatik/zahlensysteme_gra.txt
  • Zuletzt geändert: 2025-08-15 09:01
  • von gra