Modul 01

Von-Neumann-Architektur im Rückblick

In der letzten Einheit hast du den Von-Neumann-Rechner kennengelernt: ein Computermodell, bei dem Daten und Befehle im selben Speicher liegen. Bevor wir in die Digitaltechnik eintauchen, fassen wir die wichtigsten Punkte noch einmal zusammen – und stoßen dabei auf eine Spur, die uns direkt zum nächsten Thema führt.

Die vier Bereiche des Rechners

John von Neumann teilte den Computer in vier funktionale Bereiche ein: das Rechenwerk (ALU, beherrscht die vier Grundrechenarten), das Steuerwerk (CU, steuert den Programmablauf), das Speicherwerk und die Ein-/Ausgabewerke. Rechen- und Steuerwerk bilden zusammen die CPU; verbunden sind alle Bereiche über ein gemeinsames Bus-System.

CPU Rechenwerk ALU Steuerwerk CU Bus-System Speicherwerk Ein-/Ausgabewerk
Blockschaltbild des Von-Neumann-Rechners: Alle vier Bereiche kommunizieren über ein gemeinsames Bus-System – Daten und Befehle nutzen denselben Weg in denselben Speicher.
💡 Kernprinzip
Daten und Befehle liegen im gleichen Speicher vor. Das Modell verwendet dazu drei zentrale Speicherorte: den Akkumulator (AC) für das aktuelle Rechenergebnis, das Befehlszählregister (BZ) für die Adresse des nächsten Befehls, und den Hauptspeicher (DS) für Daten und Programm gemeinsam.

Der Befehlssatz des Modellrechners

BinärcodeMnemonicWirkung
000000000000READAC ← Eingabe
000100000000PRINTAusgabe ← AC
0010adrLOAD adrAC ← DS[adr]
0011adrLOADI adrAC ← DS[DS[adr]]
0100numLOADNUM numAC ← num
0101adrSTORE adrDS[adr] ← AC
0110adrSTOREI adrDS[DS[adr]] ← AC
0111adrADD adrAC ← AC + DS[adr]
1000adrSUB adrAC ← AC − DS[adr]
1010adrJUMP adrBZ ← adr
1011adrJUMPE adrFalls AC = 0: BZ ← adr
1100adrJUMPG adrFalls AC > 0: BZ ← adr
110100000000HALTProgrammende
🌉 Der Haken an der Sache
Der Binärcode jedes Befehls besteht aus 4 Bit für die Anweisungsnummer und weiteren 8 Bit für die Adresse adr bzw. die Zahl num. Jeder Befehl – und jede Adresse, jede Zahl – ist am Ende nichts als eine Folge von Nullen und Einsen. Warum eigentlich? Genau darum geht es ab Modul 2.

Übung: Verfolge den Programmdurchlauf

Auf dem Eingabeband steht die Zahl 2. Vervollständige BZ und AC nach jedem Befehl (nutze die Tabelle oben zum Decodieren).

Speicher-AdresseBefehlBZ (neu)AC (neu)Zelle 1000 0000Ausgabe
000000000100 0000 0100 → LOADNUM 4
000000010101 1000 0000 → STORE 1000 00004
000000100000 0000 0000 → READ (Eingabe: 2)4
000000110111 1000 0000 → ADD 1000 00004
000001000001 0000 0000 → PRINT46
000001011101 0000 0000 → HALT646
Modul 02

Die Bedeutung des Binärsystems

🌉 Anschluss an Modul 1
Du hast gesehen: Sogar die Befehle des Von-Neumann-Rechners sind reine Bitmuster – 4 Bit Anweisungsnummer, 8 Bit Adresse oder Zahl. Aber warum eigentlich nur 0 und 1, und nicht z. B. die zehn Ziffern 0–9 wie im Alltag?

Warum überhaupt binär?

Elektronische Schaltungen lassen sich zuverlässig nur auf zwei klar unterscheidbare Zustände auslegen: Spannung liegt an, oder sie liegt nicht an. Zehn fein abgestufte Spannungspegel wären technisch denkbar, aber extrem störanfällig – schon kleine Schwankungen würden zu Fehlern führen. Zwei Zustände dagegen lassen sich robust und günstig erzeugen. Das Binärsystem ist also keine willkürliche Wahl der Informatik, sondern eine direkte Folge der Elektrotechnik dahinter.

Die Speicher-Adressen und BZ-Werte aus der Von-Neumann-Übung (z. B. 00000011) sind beispielsweise letztlich nichts anderes als Dualzahlen – man kann sie also genauso gut als ganz normale Dezimalzahl lesen. Wie das genau geht, schauen wir uns jetzt an.

Das Stellenwertsystem

Im gewohnten Dezimalsystem hat jede Ziffernposition einen Stellenwert – eine Zehnerpotenz: ..., 1000, 100, 10, 1. Das Binärsystem funktioniert genauso, nur mit Zweierpotenzen: ..., 16, 8, 4, 2, 1.

Beispiel: das Bitmuster 01011010
128
0
64
1
32
0
16
1
8
1
4
0
2
1
1
0

Addiere die Stellenwerte, an denen eine 1 steht: 64 + 16 + 8 + 2 = 90.

So wandelst du Dezimal in Binär um

  1. Teile die Zahl fortlaufend ganzzahlig durch 2 und notiere jeweils den Rest (0 oder 1).
  2. Wiederhole das mit dem Ergebnis der Division, bis 0 erreicht ist.
  3. Lies die notierten Reste von unten nach oben – das ist die gesuchte Bitfolge.

Übung: Bitmuster → Dezimalwert

Bitmuster (8 Bit)Dezimalwert
00000101
00010000
01100100
11111111

Übung: Dezimalwert → Bitmuster

DezimalwertBitmuster (8 Bit)
10
33
200
255
Modul 03

Binäre Codierung als Prinzip der Informationsverarbeitung

🌉 Anschluss an Modul 1
Erinnerst du dich: Im Speicher des Von-Neumann-Rechners liegen Daten und Befehle nebeneinander – als reine Bitmuster. Ob eine bestimmte Speicherzelle eine Zahl, ein Befehl oder etwas ganz anderes darstellt, entscheidet sich erst durch die Interpretation dieser Bits.

Bits haben keine Bedeutung an sich

Ein Bitmuster ist zunächst nur eine Folge elektrischer Zustände. Erst eine festgelegte Codierungsvorschrift legt fest, was ein bestimmtes Muster bedeuten soll. Dasselbe Muster kann – je nach Vorschrift – völlig verschiedene Dinge darstellen.

Beispiel: dasselbe Byte, zwei Bedeutungen

Bitmuster: 01000010
128
0
64
1
32
0
16
0
8
0
4
0
2
1
1
0

Kleiner ASCII-Ausschnitt

DezimalBinärZeichen
3200100000(Leerzeichen)
4800110000'0'
6501000001'A'
6601000010'B'
6701000011'C'
9701100001'a'

Übung: Bitmuster als ASCII decodieren

BitmusterDezimalASCII-Zeichen
01000011
01100001
00110000

Dieselben Bits als Von-Neumann-Befehl

Auch ein 12-Bit-Muster wie 010000000101 lässt sich unterschiedlich lesen:

Ob der Prozessor diese zwölf Bit als Zahl 1029 oder als Befehl „LOADNUM 5“ behandelt, hängt einzig davon ab, an welcher Stelle im Programm sie stehen – nicht von den Bits selbst.

Ein Bild aus Bits

Auch Bilder sind nur Bitmuster: Bei einem einfachen Schwarz-Weiß-Bild steht jedes Bit für einen Bildpunkt (1 = schwarz, 0 = weiß). Zeile für Zeile ergibt das ein Byte pro Reihe:

00011000
00111100
01111110
11111111
00011000
00011000
00011000
00011000

Dieselben acht Bytes könnte man genauso gut als acht Dezimalzahlen (24, 60, 126, 255, 24, 24, 24, 24) oder – aneinandergereiht – als eine einzige riesige Dualzahl lesen. Erst die Codierungsvorschrift „ein Bit = ein Pixel, zeilenweise“ macht daraus einen Pfeil.

Modul 04

Byte, Bit und Binärpräfixe

Ein Bit ist die kleinste Speichereinheit (0 oder 1). Acht Bit bilden ein Byte – die kleinste Einheit, die ein Rechner üblicherweise einzeln adressiert. Genau in ein Byte passt z. B. ein ASCII-Zeichen aus Modul 3.

Wie viele Bitmuster passen in n Bit?

Mit n Bit lassen sich genau 2n verschiedene Bitmuster darstellen.

n BitAnzahl Muster (2ⁿ)Wertebereich (unsigned)
4160 – 15
8 (1 Byte)2560 – 255
1665 5360 – 65 535

Binärpräfixe: kB vs. KiB

Für große Mengen an Byte gibt es zwei parallele Präfix-Systeme: die SI-Präfixe (Zehnerpotenzen, wie im Alltag) und die IEC-Binärpräfixe (Zweierpotenzen, wie sie zum Speicher tatsächlich passen).

SI-PräfixSymbolWert (10er)BinärpräfixSymbolWert (2er)
KilokB10³ = 1 000KibiKiB2¹⁰ = 1 024
MegaMB10⁶MebiMiB2²⁰ = 1 048 576
GigaGB10⁹GibiGiB2³⁰ = 1 073 741 824
TeraTB10¹²TebiTiB2⁴⁰
💡 Deshalb die Verwirrung im Alltag
Eine als „500 GB“ beworbene Festplatte zeigt das Betriebssystem oft nur als „465 GiB“ an. Die Bytes sind exakt dieselben – der Hersteller rechnet nur in Zehnerpotenzen (GB), das Betriebssystem in Zweierpotenzen (GiB).

Übung: Einheiten umrechnen

AufgabeErgebnis
2 KiB = ? Byte
1 MiB = ? KiB
3 GiB = ? MiB
0,5 KiB = ? Byte
Modul 05

Positive und negative Ganzzahlen im Bitmuster

In Modul 4 hast du gesehen: n Bit stellen 2n Muster dar, meist gelesen als Zahlen von 0 bis 2n − 1. Aber wie stellt man mit reinen Bitmustern auch negative Zahlen dar – es gibt schließlich kein Minuszeichen in der Hardware?

Erster Versuch: Vorzeichen-Betrag

Naheliegende Idee: Das höchstwertige Bit (MSB) dient nur als Vorzeichen-Flag (0 = positiv, 1 = negativ), der Rest bleibt der normale Betrag. Beispiel (8 Bit): +5 = 00000101, −5 = 10000101.

Das Verfahren hat zwei Probleme: Es gibt zwei Bitmuster für die Null (00000000 und 10000000), und die normale Bit-für-Bit-Addition liefert bei gemischten Vorzeichen falsche Ergebnisse. Für Hardware ist das unpraktisch.

Die Lösung: das Zweierkomplement

Reale Prozessoren nutzen stattdessen das Zweierkomplement: Positive Zahlen werden ganz normal dual dargestellt (MSB = 0). Für eine negative Zahl wird das Zweierkomplement des positiven Betrags gebildet:

  1. Schreibe den Betrag der Zahl als Dualzahl, mit führenden Nullen auf die volle Bitbreite.
  2. Invertiere alle Bits (0 ↔ 1) – das Ergebnis heißt Einerkomplement.
  3. Addiere 1 zum Einerkomplement – das Ergebnis ist das gesuchte Zweierkomplement.

Beispiel: −5 in 8 Bit

  +5        = 00000101
  invertiert = 11111010
  + 1        = 11111011  ← das ist −5

Rückwärts lesen: Stellenwerttabelle mit negativem Vorzeichenbit

Ein Zweierkomplement-Muster lässt sich direkt decodieren, wenn man das höchstwertige Bit mit einem negativen Stellenwert versieht:

Beispiel: 11110110
−128
1
64
1
32
1
16
1
8
0
4
1
2
1
1
0

Summe der gesetzten Stellenwerte: −128 + 64 + 32 + 16 + 4 + 2 = −10.

💡 Wertebereich
Mit n Bit im Zweierkomplement lassen sich Zahlen von −2n−1 bis +2n−1 − 1 darstellen. Bei 8 Bit also von −128 bis +127 – weiterhin genau 256 Muster, nur anders aufgeteilt als bei der vorzeichenlosen Darstellung aus Modul 4.

Übung: Zweierkomplement decodieren

Bitmuster (8 Bit)Dezimalwert (Zweierkomplement)
00000111
11111111
10000000
11101000

Übung: Zweierkomplement bilden

DezimalzahlZweierkomplement (8 Bit)
−3
−16
−100
−1
Modul 06

Dualzahlen addieren und subtrahieren

Schriftliche Addition im Dualsystem

Die Regeln für die binäre Addition sind denkbar einfach: 0+0=0, 0+1=1, 1+0=1, 1+1=10 (0 schreiben, 1 Übertrag).

Beispiel: 83 + 38 (8 Bit)

  Übertrag:   00001100
              01010011   (83)
            + 00100110   (38)
            -----------
              01111001   (121)
💡 Achtung: Überlauf (Overflow)
11111111 (255) + 00000001 (1) ergibt eigentlich 256 – das passt nicht mehr in 8 Bit. Das Ergebnis „kippt“ auf 00000000 zurück, der Übertrag aus dem MSB geht verloren. Man spricht von einem Overflow.

Übung: Dualzahlen addieren (4 Bit)

AufgabeSumme (4 Bit, dual)
0011 + 0101
0110 + 0001
1001 + 0010

Subtraktion durch Addition: A − B = A + (−B)

Weil jede negative Zahl im Zweierkomplement einfach ein weiteres Bitmuster ist, kann die ALU Subtraktion auf Addition zurückführen: Sie bildet das Zweierkomplement von B und addiert es zu A. Ein zusätzlicher „Subtrahierer“ ist gar nicht nötig – deshalb kommt der SUB adr-Befehl aus Modul 1 in echter Hardware oft ganz ohne eigene Schaltung aus.

Beispiel: 12 − 5 (8 Bit)

  12          = 00001100
  Zweierkomplement von 5 = 11111011  (= −5)

    00001100
  + 11111011
  -----------
  1 00000111   ← führende 1 fällt aus dem 8-Bit-Register heraus
    00000111   = 7

Übung: Subtraktion über das Zweierkomplement (8 Bit)

AufgabeErgebnis (8 Bit, dual)
20 − 7
9 − 9
6 − 10
Modul 07

Wissenstest: Teste dein Verständnis

Neun Fragen von der Von-Neumann-Architektur bis zur Dualzahl-Subtraktion. Beantworte alle Fragen und werte sie am Ende gemeinsam aus.

Modul 1 · Von Neumann

Frage 1: Welches Grundprinzip beschreibt den Von-Neumann-Rechner am besten?

Modul 1 · Befehlscodierung

Frage 2: Ein Befehl im Modellrechner besteht aus 4 Bit Anweisungsnummer und 8 Bit Adresse/Zahl. Wie viele Bit hat ein vollständiger Befehl insgesamt?

Modul 2 · Binärsystem

Frage 3: Warum verwenden digitale Schaltungen das Binärsystem und nicht z. B. das Zehnersystem?

Modul 2 · Stellenwertsystem anwenden

Frage 4: Welchen Dezimalwert hat das Bitmuster 00101000?

Modul 3 · Codierung

Frage 5: Wieso kann dasselbe Bitmuster einmal die Zahl 65 und einmal den Buchstaben 'A' bedeuten?

Modul 4 · Binärpräfixe anwenden

Frage 6: Wie viele Byte sind 2 KiB?

Modul 4 · Binärpräfixe

Frage 7: Warum zeigt das Betriebssystem bei einer als „1 TB“ beworbenen Festplatte weniger als 1 TiB an?

Modul 5 · Zweierkomplement anwenden

Frage 8: Welchen Dezimalwert hat das 8-Bit-Zweierkomplement-Bitmuster 11111110?

Modul 6 · Overflow

Frage 9: Was ergibt 9 + 7 im vorzeichenlosen 4-Bit-Dualsystem?

0 / 9