Abschnittsübersicht

    • George BoolDass das Binärsystem für Rechenautomaten besonders günstig ist, erkannten Konrad Zuse (Deutschland) und George Stibitz (USA) in den 1930er Jahren. Die Mathematik dafür wurde von George Boole (USA) in der Mitte des 18. Jahrhunderts entwickelt. 

      Versuchen wir nun, Elemente aus dem theoretische Modell der von-Neumann-Architektur mithilfe der (booleschen) Grundbausteine digitaler Systeme - der sog. Logikgatter - zu entwickeln.

      Bildquelle: George Boole, See page for author, Public domain, via Wikimedia Commons

    • Grundlagen Logikgatter entdecken

      (in Abhängigkeit vom Wissensstand aus Klasse 10)

    • Lösungen Verzeichnis
      Nicht verfügbar, außer: Sie sind in LK_12
    • Lösungen Verzeichnis
      Nicht verfügbar, außer: Sie sind in LK_12
    • Elemente der von-Neumann-Architektur mit Logikgatter entwickeln

    • Lösungen Verzeichnis
      Nicht verfügbar, außer: Sie sind in LK_12
    • Probleme beim Rechnen

    • Durch das Zusammenschalten von Logikgattern ist es uns gelungen, Elemente der von-Neumann-Architektur hardwarenah zu entwickeln. Schauen wir, ob es vielleicht irgendwo Probleme geben könnte.

      1. Geben Sie die Elemente der von-Neumann-Architektur an, die wir hardwarenah aus Grundgattern entwickeln könnten.
      2. Im Rechenwerk finden Berechnungen und Vergleiche mithilfe des Binärsystems statt.
        1. Informieren Sie sich im Lehrbuch über die Codierung positiver und negativer ganzer Zahlen.
        2. Erläutern Sie die Begriffe Einer- und Zweierkomplement.
        3. Begründen Sie, dass Computer bei der Additionen zweier positiver Zahlen eine negative Zahl erhalten können.
        4. Starten Sie das Java-Programm Zahlen.java im Java-Editor und testen Sie die Funktionalität für die Zahlen 0, 30, -4, 120, -120. Begründen Sie das Verhalten des Programms.
        5. Gruppe A:
          1. Entwickeln Sie in LogicSim je eine Schaltung für die Bildung des Einerkomplements und des Zweierkomplements einer 4-Bit breiten Binärzahl.
          2. Analysieren Sie die Schaltung GruppeA.lsim. Ermitteln Sie, was diese Schaltung leistet.
        6. Gruppe B:
          1. Johnny verfügt über den Befehl TST. Ermitteln Sie, worauf der Test erfolgt.
          2. Entwickeln Sie in LogicSim je eine Schaltung für Testung eines Bits bzw. eines Bytes wie in Johnny. 
          3. Analysieren Sie die Schaltung GruppeB.lsim. Ermitteln Sie, was diese Schaltung leistet.
    • Computer müssen auch negative ganze Zahlen darstellen können. 

      Eine Idee besteht darin, die Bitfolgen der natürlichen Zahl zu negieren (Einerkomplement). Wenn beispielsweise 6d = 0110b gilt, dann wäre im Einerkomplement -6d = 1001b.
      Allerdings gibt es dann zur Zahl 0 eine "negative" Null: 0d = 0000b, -0d = 1111b. Die Null ist aber einmalig, zur ihr darf es kein "Gegenstück" geben.

      Daher verwendet man das sog. Zweierkomplement. Die negierte Binärzahl wird einfach inkrementiert; aus 6d = 0110b wird -6d = 1010b. Addiert man beide Binärzahlen, so erhält man  sinnvollerweise Null.

      Im Zweierkomplement sind alle Binärzahlen, bei denen das höchste Bit den Wert 1 hat, negativ. Mit vier Bit lassen sich nun die Zahlen von -8d = 1111b bis 7d = 0111b bilden. Inkrementiert man die Binärdarstellung von 7d = 0111b, so erhält man 1000b = -8. Der Zahlbereich der ganzen Zahlen ist somit als Zahlenkreis darstellbar. Dies erklärt den Fehler im Java-Programm. Der Programmierer muss also stets auf den Wertebereich des Datentyps achten, um keine fehlerhaften Berechnungen durch Überlauf zu erzeugen.

      Die Abbildung reeller Zahlen auf dem Computer ist defacto unmöglich. Man nutzt ein Hilfskonstrukt, die Gleitkommadarstellung. Diese ist lässt jedoch nur eine endlich und diskret Menge an Zahlen zu, d. h. zwischen zwei Zahlen ist eine Lücke. Die Differenz zu nächst möglichen Gleitkommazahl ist ein Fehler, der sich bei umfangreichen Rechnungen auch sehr schnell summieren und dann zu ernsthaften Konsequenzen führen kann. 

      Zum Ausprobieren: Addiert in Java/Python einfach mal 0.1 und 0.2.