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