Wie werden Daten im Computer repräsentiert?

Wie werden Daten im Computer repräsentiert?
Sie haben einen Brief geschrieben und speichern ihn auf der Festplatte
ab. So können Sie ihn später weiterschreiben bzw. aufbewahren.
Was genau kann man sich darunter vorstellen, dass der Brief auf der
Festplatte gespeichert ist?
In welcher Form war er vorher im Arbeitsspeicher existent?
Kurze Bemerkung zu Festplatten
Festplatten sind Magnetplattenspeichergeräte. In einem luftdicht
verschlossenen Gehäuse befinden sich im wesentlichen mehrere Platten mit
magnetisch beschichteter Oberfläche sowie ein Lese-Schreib-Kopf, der die
Polarisierung der Plattenoberflächen an bestimmten Stellen feststellen
(lesen) oder auch ändern (schreiben) kann. Dazu kommen Motoren zum
Drehen der Platten, zum Bewegen des Lese-Schreib-Kopfes sowie
Steuerelektronik, deren Leiterplatte meist an der Unterseite der Festplatte zu
sehen ist.
Bildquelle:
http://www.tonh.net/museum/525openharddisk.html
Wie ist Ihr Brief auf der Festplatte gespeichert?
Zwei Bereiche sind dafür zuständig. Der erste Bereich enthält
Informationen darüber, wo genau auf der Platte sich Ihr Brief befindet.
Auf dem zweiten Bereich „liegt“ Ihr Brief.
Beide Bereiche sind eine Abfolge von Punkten der Plattenoberfläche,
die jeweils in einer von zwei möglichen Weisen polarisiert sind. Mehr
kann das System Festplatte nicht leisten.
Symbolisch dargestellt sieht Ihr Brief auf der Festplatte etwa so aus:
...
...
Ihr Brief wird also durch einen bestimmten physikalischen Zustand
(von vielen möglichen) eines Festplattenbereiches repräsentiert.
Kurze Bemerkung zum Arbeitsspeicher
Der Arbeitsspeicher (RAM : Random Access Memory) besteht aus einer
Anzahl von Speichereinheiten. Diese sind nummeriert, die Nummern
heißen Adressen. Jede dieser Speichereinheiten besteht aus 32 (zur Zeit)
Speicherzellen. Über zwei Eingänge kann in die Speicherzelle geschrieben
werden, über den Ausgang kann der „Inhalt“ der Speicherzelle gelesen
werden.
Kurze Bemerkung zum Arbeitsspeicher
D
M
W
An D, W und M kann jeweils eine bestimmte (feste) Spannung anliegen
oder keine Spannung anliegen. Liegt an W eine Spannung an, so wird die
an D anliegende Spannung auf M übertragen (schreiben). Liegt an W keine
Spannung an, so bleibt der Zustand (Spannung liegt an ja / nein) an M
erhalten unabhängig davon, ob an D eine Spannung anliegt oder nicht. Der
Zustand an M kann abgefragt werden (lesen).
(Lesen und Schreiben erfolgt immer für alle 32 Speicherzellen einer
Speichereinheit gleichzeitig.)
Wie ist Ihr Brief im Arbeitsspeicher gespeichert?
Ihr Brief ist nun während Sie ihn schreiben in gewissen
Speichereinheiten des Arbeitsspeichers „enthalten“. Auf die
entsprechenden Adressen kann Ihr Programm zugreifen.
Die Gesamtheit der Speichereinheiten die Ihren Brief „enthalten“
ergeben eine Folge von Speicherzellen, an deren Ausgängen jeweils
eine Spannung anliegt oder keine anliegt.
Symbolisch kann der Brief nun z.Bsp. durch
. . . V0V00V0VV0VVV000VV0V0V00V00VVV000 . . .
dargestellt werden. Dabei zeigt V an, dass am entsprechenden M die
bestimmte Spannung anliegt; 0 bedeutet, dass am entspechenden M
keine Spannung anliegt.
Ihr Brief ist durch einen bestimmten physikalischen Zustand (von vielen
möglichen) eines Bereiches des Arbeitsspeichers repräsentiert.
0 und 1
Wir abstrahieren nun von den konkreten physikalischen Vorgängen und
Materialien. Ob nun an einem bestimmten Ausgang eine Spannung
anliegt oder keine anliegt, ob an einer bestimmten Stelle einer
magnetischen Oberfläche die Polarisation so- oder andersherum ist, ob
in einen Streifen Papier an bestimmter Stelle ein Loch gestanzt ist oder
nicht oder auch ob ein optischer Übergang zwischen reflektierend und
nicht reflektierend stattfindet oder nicht stattfindet, wir sehen von den
physikalischen Besonderheiten ab.
Zunächst sind dies für uns nur Folgen (Gesamtheit mit Reihenfolge)
von vielen elementaren Einheiten, die jeweils zweier verschiedener
Zustände fähig sind. Einen der beiden Zustände kennzeichnen wir mit 0,
den anderen mit 1.
Wenn wir an Daten im Computer denken, stellen wir uns zunächst
Folgen aus Nullen und Einsen vor. Das ist der erste Schritt.
Bit,Byte, Kilobyte, . . .
Die elementare Speichereinheit, die zweier verschiedener Zustände
fähig ist, ist die kleinste Einheit die Information tragen / repräsentieren
kann: 0 oder 1. Diese erhält die Dimension 1 Bit Speicher.
1 Byte = 8 Bit
1 Kilobyte = 1 KB = 1024 Byte
1 Megabyte = 1 MB = 1024 KB
1 Gigabyte = 1 GB = 1024 MB
In meinem Computer sind 512 MB RAM. Dies sind also
512 * 1024 * 1024 * 8 Bit = 4294967296 Bit Speicher.
Wieviele verschiedene physikalische Zustände hat ein solcher Speicher?
Oder, wieviel verschiedene 0-1-Folgen der Länge 4294967296 gibt es?
Es sind 2 hoch 4294967296. (Versuchen Sie nicht, die Zahl
auszurechnen.)
Bit,Byte, Kilobyte, . . .
Kleinere Digitalkameras bringen zur Zeit eine Auflösung von z.Bsp.
sieben Millionen Pixel (Bildpunkte). Die Farbinformation für jedes
Pixel wird in sogenannten Kanälen, jeweils einem für rot, grün und
blau, gespeichert. Die Farbtiefe für jeden Kanal beträgt (zur Zeit) 8 Bit.
Die Größe eines solchen Bildes ist somit
Anzahl_Bildpunkte * Anzahl_Kanäle * Farbtiefe =
7000000 * 3 * 8 = 168000000 Bit
Wie viele solcher Bilder würden auf eine 64 MB Speicherkarte passen?
Joint picture expert group (JPEG): Komprimiere Bilder so, dass ihre
Größe nur noch 10% der Ausgangsgröße beträgt und dabei keine
nennenswerten (vom menschlichen Auge deutlich wahrnehmbare)
Qualitätsverluste auftreten.
Bildformat jpeg / jpg.
Bit,Byte, Kilobyte, . . .
Speicher
1 Megabyte = 1024 * 1024 Byte = 1024 * 1024 * 8 Bit
Bilder
1 Megapixel = 1000 * 1000 Pixel
Datenübertragung im Netzwerk
1 Megabit pro Sekunde = 1000 * 1000 Bit pro Sekunde
Repräsentation von Daten durch 0-1-Folgen I
Daten: Zahlen, Texte, Bilder, Musik, Video, EKG, . . .
Wir schauen uns zunächst natürliche Zahlen und Buchstaben
(unformatierte Texte) an, der Rest wird in einer späteren Vorlesung
behandelt.
Repräsentation von natürlichen Zahlen durch 0-1-Folgen
Natürliche Zahlen: 1, 2, 3, 4, 5, 6, 7, . . .
Zur Repräsentation von natürlichen Zahlen durch 0-1-Folgen nutzt man
deren Darstellung zur Basis zwei.
Wichtige Aussage: Jede natürliche Zahl n kann eindeutig in der Form
n = ak 2k + . . . + aj 2j + . . . + a1 2 + a0 geschrieben werden, wobei ak = 1
und alle weiteren Koeffizienten aj den Wert 0 oder 1 haben.
Die Darstellung von n zur Basis zwei ist gegeben durch die Ziffernfolge
akak-1...a1a0.
Wie bestimmt man die Ziffernfolge akak-1... a1a0 ?
Die Zweierpotenzen sind: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, ...
Beispiel 311
Finde die größte Zweierpotenz kleiner gleich 311, dies ist 256.
311 = 256 + 55
Finde die größte Zweierpotenz kleiner gleich 55, dies ist 32.
55 = 32 + 23
Finde die größte Zweierpotenz kleiner gleich 23, dies ist 16.
23 = 16 + 7
Und so wird weiter verfahren, bis die Differenz zwischen der aktuellen
Zahl und der ermittelten Zweierpotenz null ist.
7 = 4 + 3, 3 = 2 + 1, 1 = 1 + 0
Wie bestimmt man die Ziffernfolge akak-1... a1a0 ?
Die Zweierpotenzen sind: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, . . .
Beispiel 311
311 = 256 + 32 + 16 + 4 + 2 + 1
Schreibe jetzt 311 als Summe aller Zweierpotenzen kleiner gleich 311:
311 = 1*256 + 0*128 + 0*64 + 1*32 + 1*16 + 0*8 + 1*4 + 1*2 + 1*1
Die Darstellung von 311 zur Basis zwei ist 100110111.
Wie bestimmt man die Ziffernfolge akak-1... a1a0 ?
Auch wenn die gezeigte Vorgehensweise für kleine Zahlen gut
funktioniert und auch verallgemeinerungsfähig ist, sie wird nicht
benutzt wegen schlechter Effizienz (Zeit- und Speicherverbrauch).
Finde die Darstellung zur Basis zwei von
91577439993454793221197256679351. Effizienz ist wichtig. In der
Übung lernen wir effiziente Verfahren zur Umrechnung von Basis zehn
zur Basis zwei und umgekehrt kennen.
Die nächste Seite beschreibt das Vorgehen bei der Umrechnung von
Basis zehn zur Basis zwei.
Vorgehen zur Bestimmung der Darstellung einer
natürlichen Zahl zur Basis zwei
1. Schreibe von rechts nach links.
2. Ist die Zahl gleich eins schreibe 1 und gehe zu 6.
3. Ist die Zahl ungerade, schreibe 1. Sonst schreibe 0.
4. Dividiere die Zahl durch zwei und nimm den ganzzahligen Anteil.
Diese Zahl ist die nächste (neue) Zahl.
5. Gehe zu 2.
6. ENDE.
Nutzen einer Tabelle zur Berechnung . . .
Beispiel 311 . . .
Repräsentation von natürlichen Zahlen durch 0-1-Folgen
Computer können nicht mit Bitfolgen sich ständig ändernder oder
beliebiger Länge umgehen. Es können nur nacheinander Bitfolgen einer
gegebenen festen Länge verarbeitet werden.
Die Speichereinheiten im RAM sind 32 Bit breit, ebenso der Datenbus
wie auch schnelle Zwischenspeicher (Register) im Prozessor.
Wie wird nun 17, zur Basis zwei 10001, verarbeitet, wenn immer 32 Bit
vorhanden sein müssen? Die fehlenden Bits werden nach vorn mit 0
aufgefüllt: 00000000000000000000000000010001
Vor längerer Zeit (25 Jahre oder so) war die Registerbreite beim PC erst
8, danach 16 Bit.
Repräsentation von natürlichen Zahlen durch 0-1-Folgen
Geben Sie für 8 Bit Registerbreite die Repräsentation durch 0-1-Folgen
für die Zahlen 97 und 233 an.
Geben Sie in Dezimaldarstellung die natürliche Zahl mit der
Repräsentation 00110011 an.
Repräsentation der Buchstaben des Alphabets durch
0-1-Folgen
Die Zuordnung der Buchstaben des Alphabets (inklusive Ziffern,
Satzzeichen, Klammern und einigen anderen Zeichen wie §, $, %, ...) zu 01-Folgen erfolgt klassisch mit Folgen der Länge 8.
Für das englische Alphabet wird die Zuordnung festgelegt durch die ASCIIKodierung.
ASCII : American Standard Code for Information Interchange
Die ASCII-Kodierung
Die ASCII-Kodierung
In der Tabelle sind Dezimalzahlen und Zeichen einander zugeordnet.
Wie erhält man die 8-Bit-Repräsentation der Zeichen?
Die 8-Bit-Repräsentation eines Zeichens ist gerade die 8-BitRepräsentation der zugeordneten Dezimalzahl (als Zahl).
Beispiel A
A ist 65 zugeordnet.
65 zur Basis 2 ist 1000001.
Mit 8 Bit ist die entsprechende Repräsentation 01000001.
A ist somit die Bitfolge 01000001 zugeordnet.
Die ASCII-Kodierung
Eine 8-Bit-Folge kann also ein Zeichen oder eine Zahl repräsentieren.
Woher „weiß“ der Rechner, wann wir was meinen? Dies ergibt sich
aus den Verarbeitungsschritten (Operationen), die wir mit der Bitfolge
durchführen lassen. Je nach dem was gemeint ist, werden die Bitfolgen
unterschiedlich manipuliert.
Beachten Sie auch den Unterschied zwischen Ziffernfolge und Zahl.
Beispiel 9
Für 9 als Zahl (Wert) ist die Repräsentation mit 8 Bit 00001001.
9 als Ziffer (Zeichen) ist 57 zugeordnet mit der Repräsentation
00111001.
Die ASCII-Kodierung
Die Nummerierung der Zeichen beginnt in der Tabelle mit 32. Was ist
mit 0, 1, ... , 31? Diese Zahlen sind Steuerzeichen wie „Neue Zeile“,
„Seitenvorschub“, „Glocke“ (Piepton aus dem PC-Lautsprecher) usw.
zugeordnet.
Schreiben Sie Harry als 0-1-Folge gemäß der ASCII-Kodierung auf.
(Das ist eine 0-1-Folge der Länge 40.)
Geben Sie die Repräsentation für 19 als Zahl (8 Bit) und als
Zeichenfolge (16 Bit) an.
Kodeseiten
Das erste Bit im ASCII-Kode ist immer 0. Wird das erste Bit auf 1
gesetzt, so können auch den Zahlen von 128 bis 255 Zeichen
zugeordnet werden. Diese Zuordnung wird sprach- und
regionsspezifisch in sogenannten Kodeseiten definiert. Auf diese Weise
können wir auch ä, ö, ü und ß sowie das Eurosymbol darstellen.
Werden Daten zwischen zwei Rechnern ausgetauscht, die
unterschiedliche Kodeseiten benutzen, so wird es i.a. Probleme bei der
Darstellung von Zeichen geben.
UniCode ist ein neuerer Standard, der für die Kodierung von Zeichen
16 Bit benutzt. Dies sind 65536 Zeichen. Für die Repräsentation im
Rechner gibt es verschiedene Formate.
Logische Bausteine und boolsche Funktionen
Im (abstrakten) Computer werden 0-1-Folgen gegebener fester
Länge in Speichereinheiten gespeichert, von einer Speichereinheit zu
einer anderen transportiert und schließlich auch in der ALU
manipuliert . ALU : Arithmetic Logic Unit
Die Bausteine, die dies leisten, denken wir uns zunächst als eine Art
Black-Box mit Eingängen und Ausgängen. Dabei betrachten wir
zunächst nur solche Bausteine, bei denen die Belegung an den
Ausgängen vollständig von der Belegung an den Eingängen
bestimmt ist.
Logische Bausteine und boolsche Funktionen, Beispiel
Ausgänge
aa1
aa2
1
2
Ausgänge
Eingänge
Eingänge
e1
e1
e2
e2
e3
e3
e1
0
1
0
1
0
1
0
1
e2
0
0
1
1
0
0
1
1
e3
0
0
0
0
1
1
1
1
a1
0
1
1
0
1
0
0
1
a2
0
0
0
1
0
1
1
1
Die „Funktion“ eines solchen Bausteins kann
durch eine Tabelle angegeben / charakterisiert
werden, in der jede Belegung für die Eingänge
höchstens einmal vorkommt.
Logische Bausteine und boolsche Funktionen
Die Belegung an den Eingängen definiert die Belegung an den
Ausgängen. Hat man im Beispiel an den Eingängen der Reihe nach 1 1 0,
so liegt an den Ausgängen entsprechend 0 1 an usw.
Die Tabelle kann zerlegt werden in zwei Einzeltabellen, für jeden
Ausgang eine. Hierdurch verliert man keine Information, denn die
Einzeltabellen können ja wieder zur Gesamttabelle zusammengesetzt
werden. Es ist aber eine nützliche Vereinfachung zunächst nur solche
Einzeltabellen, d.h. Bausteine mit nur einem Ausgang, zu betrachten.
Einen komplexeren Baustein mit mehreren Ausgängen erhält man dann
durch paralleles Zusammenheften der entsprechenden Bausteine mit nur
einem Ausgang.
Logische Bausteine und boolsche Funktionen
Eine boolsche Funktion von n Variablen a = f(e1, … , en) ist eine
Funktion, bei der die Variablen wie auch Funktionswerte nur die Werte 0
oder 1 annehmen können.
Boolsche Funktionen stellen sozusagen ein mathematisches Äquivalent
zu den eben besprochenen Bausteinen mit nur einem Ausgang dar.
George Boole, Claude Shannon …
Sequenzielle Kombinationen von logischen Bausteinen und
Hintereinanderausführung boolscher Funktionen …
Wie viele verschiedene boolsche Funktionen von zwei (Frage 1) und von
drei (Frage 2) Variablen gibt es?
Die logischen Grundbausteine (logische Gatter)
Als logische Grundbausteine benutzen wir (die boolschen Funktionen)
NOT, AND sowie OR. Es gibt weitere äquivalente Möglichkeiten,
darüber sprechen wir später.
Name
Negation
(nicht a)
Konjunktion
(a und b)
Funktion
a y
0 1
1 0
a
0
0
1
1
b
0
1
0
1
Symbol
Bezeichnung
y = NOT(a) = ¬a
y
0
0
0
1
y = AND(a, b) = a ∧ b
Die logischen Grundbausteine (logische Gatter)
Als logische Grundbausteine benutzen wir (die boolschen Funktionen)
NOT, AND sowie OR. Es gibt weitere äquivalente Möglichkeiten,
darüber sprechen wir später.
Name
Disjunktion
(a oder b)
Funktion
a
0
0
1
1
b
0
1
0
1
y
0
1
1
1
Symbol
Bezeichnung
y = OR(a, b) = a ∨ b
Logische Gatter
Überprüfen Sie, ob folgende Gleichungen gelten.
¬a = 1 – a
a ∧ b = a b (gewöhnliche Multiplikation)
a∨b=a+b–ab
Sequenzielle Schaltungen
Sequenzielle Schaltungen, kombinatorische Schaltungen sind Synonyme.
Mit den logischen Gattern werden sequenziell, ohne Rückkopplung,
komplexe Schaltungen aufgebaut.
Mit boolschen Funktionen läßt sich das so ausdrücken: Komplexe
boolsche Funktionen werden erzeugt durch Hintereinanderausführung
der elementaren Funktionen NOT, AND sowie OR in vielfältigen
Kombinationen.
Sequenzielle Schaltungen, Beispiel
a
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
c
0
1
0
1
0
1
0
1
y
0
0
0
1
0
1
1
1
Wertetabelle der Funktion
y = f(a, b, c) = (((a ∧ b) ∨ (b ∧ c)) ∨ (a ∧ c))
Boolsche Funktion
Schaltung
a
b
c
y
Sequenzielle Schaltungen
Eine konkrete sequenzielle Schaltung liefert eine auf bestimmte Weise
aufgebaute boolsche Funktion und eine Tabelle. Unterschiedliche
Schaltungen können im Ergebnis das Gleiche liefern, d.h. die
Schaltungen wie auch die zugeordneten boolschen Funktionen haben die
gleiche Tabelle.
Es ergeben sich nun einige interessante Problemstellungen.
Sequenzielle Schaltungen, Problemstellungen
Kann ein logischer Baustein, bei dem die Werte an den Ausgängen durch
die Werte an den Eingängen eindeutig bestimmt sind, durch eine
sequenzielle Schaltung nur mit den logischen Grundbausteinen aufgebaut
werden?
Dies ist für uns an dieser Stelle zunächst die wichtigste Frage. Mit ihrer
Beantwortung ist der zweite Schritt hin zum prinzipiellen Verstehen wie
Computer funktionieren getan.
Sequenzielle Schaltungen, Problemstellungen
Wenn mehrere sequentielle Schaltungen denselben Effekt (die gleiche
Tabelle) haben, wie findet man unter der Gesamtheit dieser Schaltungen
eine mit der geringsten Anzahl von logischen Gattern? Lässt sich die
geringste Anzahl angeben oder abschätzen?
Gegeben seien zwei boolsche Funktionen, die durch unterschiedliche
sequenzielle Schaltungen aus den logischen Gattern aufgebaut sind, aber
die gleiche Tabelle haben. Gibt es eine endliche Anzahl von
Rechenregeln, mit denen die eine Darstellungsform in die andere
umtransformiert werden kann?
Auf diese Fragen gehen wir nur kurz bzw. am Rande ein.
Die disjunktive und die konjunktive Normalform
einer boolschen Funktion (DNF und KNF)
Mit den Normalformen kann eine boolsche Funktion ausgehend von
ihrer Tabelle nur unter Verwendung der Funktionen NOT, AND sowie
OR, und eben auch noch in besonderer Form, dargestellt werden. Die
erste der vorangegangenen Fragen ist damit positiv beantwortet.
Zur Demonstration betrachten wir einige Beispiele. Dabei wird klar, dass
sich die Vorgehensweise auf boolsche Funktionen (Tabellen) beliebiger
Größe, d.h. mit jeder Anzahl von Variablen, anwenden lässt.
Kommutativität, Assoziativität, Bindung
Um in der Darstellung korrekt zu sei, benötigen wir an dieser Stelle
einige Regeln und Schreibweisen.
Regeln
Kommutativität: a ∧ b = b ∧ a und a ∨ b = b ∨ a
Assoziativität: (a ∧ b) ∧ c = a ∧ (b ∧ c) und (a ∨ b) ∨ c = a ∨ (b ∨ c)
Aus der Assozitivität erhält man, dass in Ausdrücken wie
(a ∧ ((b ∧ c) ∧ (d ∧ e))) die inneren Klammern weggelassen werden
können: (a ∧ ((b ∧ c) ∧ (d ∧ e))) = (a ∧ b ∧ c ∧ d ∧ e). Bei den äußeren
Klammern kommt es darauf an, wie der Ausdruck in einen größeren
eingebettet ist ...
Analoges gilt, wenn oben alle ∧ durch ∨ ersetzt werden.
Kommutativität, Assoziativität, Bindung
Um in der Darstellung korrekt zu sei, benötigen wir an dieser Stelle
einige Regeln und Schreibweisen.
Bindung
Um zusätzlich Klammern weglassen zu können, werden
Bindungsstärken für () , ¬ , ∧ und ∨ definiert. (Analog zu
„Punktrechnung geht vor Strichrechnung“.)
Die Bindungsstärken sind in abnehmender Folge wie folgt zugeordnet:
() , ¬ , ∧ , ∨ .
Begründen Sie die Richtigkeit von
(¬(a ∧ b)) ∨ ((¬c) ∧ d) = ¬(a ∧ b) ∨ ¬c ∧ d .
Können in a ∧ (b ∨ c) die Klammern weggelassen werden?
Die disjunktive und die konjunktive Normalform
einer boolschen Funktion (DNF und KNF)
Beispiel Antivalenz (XOR)
a
0
0
1
1
b
0
1
0
1
y y1
0 0
1 1
1 0
0 0
y2
0
0
1
0
y = y1 ∨ y2
y1= ¬a ∧ b, y2 =a ∧ ¬b
y = ¬a ∧ b ∨ a ∧ ¬b
a
y
b
Symbol für xor.
Bezeichnung: y = XOR(a, b) = a ∆ b
Die disjunktive und die konjunktive Normalform
einer boolschen Funktion (DNF und KNF)
a
0
1
0
1
0
1
0
1
b
0
0
1
1
0
0
1
1
c
0
0
0
0
1
1
1
1
y
0
0
0
1
0
0
1
1
y1
0
0
0
1
0
0
0
0
y2
0
0
0
0
0
0
1
0
y3
0
0
0
0
0
0
0
1
y = y1 ∨ y2 ∨ y3
y1 = a ∧ b ∧ ¬c
y2 = ¬a ∧ b ∧ c
y3 = a ∧ b ∧ c
y = a ∧ b ∧ ¬c ∨ ¬a ∧ b ∧ c ∨ a ∧ b ∧ c ist die DNF zur gegebenen
boolschen Funktion.
Die disjunktive und die konjunktive Normalform
einer boolschen Funktion (DNF und KNF)
a
0
1
0
1
0
1
0
1
b
0
0
1
1
0
0
1
1
c
0
0
0
0
1
1
1
1
y
0
0
1
1
0
1
1
1
y1
0
1
1
1
1
1
1
1
y2
1
0
1
1
1
1
1
1
y3
1
1
1
1
0
1
1
1
y = y1 ∧ y2 ∧ y3
y1 = a ∨ b ∨ c
y2 = ¬a ∨ b ∨ c
y3 = a ∨ b ∨ ¬c
y = (a ∨ b ∨ c) ∧ (¬a ∨ b ∨ c) ∧ (a ∨ b ∨ ¬c) ist die KNF zur
gegebenen boolschen Funktion.
Wie viele logische Gatter braucht man für einen, durch
eine boolsche Funktion gegebenen, Baustein?
Die Darstellungsform mit DNF oder KNF gestattet auch eine
Abschätzung der einzusetzenden logischen Gatter nach oben.
Nehmen wir die KNF für eine boolsche Funktion mit n Variablen, in
deren Tabelle also 2n Zeilen und in der y-Spalte höchstens 2n-1- mal die 0
vorkommt. Für jeden geklammerten Term braucht man dann n-1
Disjunktionen, und zur konjunktiven Verbindung dieser Terme
(höchstens) 2n-1–1 Konjunktionen. Dazu kommen die notwendigen
Negationen.
Eine grobe Abschätzung liefert also etwas in der Größenordnung von
n 2n .
Wie groß ist diese Zahl für n = 32 oder n = 64?
Wie viele logische Gatter braucht man für einen, durch
eine boolsche Funktion gegebenen, Baustein?
In der Übung betrachten wir nochmals die Normalformen und können
dann die etwas bessere Abschätzung 2n erhalten.
Ein besseres Ergebnis sagt, dass man im allgemeinen Fall in der
Größenordnung 2n /n logische Gatter braucht für fast alle Funktionen
und damit auch auskommt (alle Funktionen).
In der technischen Informatik werden Darstellungsformen für boolsche
Funktionen untersucht, die von der Tabellenform verschieden sind. Ziel
ist das Finden optimaler Darstellungen für spezielle Klassen von
boolschen Funktionen.
Vollständige Sätze von Operatoren
Bisher haben wir mit ¬ , ∧ und ∨ gearbeitet. Jede boolsche Funktion
kann durch eine Kombination dieser Operatoren dargestellt werden.
Deshalb bilden sie einen vollständigen Satz von Operatoren.
Zeigen Sie, dass a ∨ b = ¬(¬a ∧ ¬b) gilt.
∨ lässt sich also unter Verwendung von ¬ und ∧ allein erzeugen.
Somit bilden ¬ und ∧ schon einen vollständigen Satz von Operatoren.
Zeigen Sie, dass ¬ und ∨ ebenfalls ein VSO (Vollständiger Satz von
Operatoren) ist.
Es gibt viele andere VSO.
Die Operatoren ∧ und ∨ bilden keinen VSO. (Dies ist allerdings nicht
ganz so leicht zu beweisen.)
Vollständige Sätze von Operatoren
Es ist interessant, dass es einen Operator gibt, der bereits einen VSO
bildet. Im weiteren werden aber Funktionen statt Operatoren benutzt.
NAND ist die Hintereinanderausführung von NOT und AND.
NAND(a, b) = NOT(AND(a, b))
Wird b gleich 1 gesetzt, so bleibt nur eine Funktion mit der Variablen
a. Prüfen Sie nach, dass NOT(a) = NAND(a, 1).
Es läßt sich also NOT erzeugen. Wendet man NOT auf NAND an, so
erhält man AND: NOT(NAND(a, b)) = AND(a, b).
NAND (NOT AND) realisiert durch MOSFET
MOSFET : Metal Oxide Semiconductor Field Effect Transistor
+v
a NAND b
a
b
Erde