Computergrundlagen Boolesche Logik, Zahlensysteme und Arithmetik Institut für Computerphysik Universität Stuttgart Wintersemester 2012/13
Wie rechnet ein Computer? Ein Mikroprozessor ist ein Netz von Transistoren, Widerständen und Kondensatoren Leitungen kennen nur zwei Zustände: Spannung oder nicht Interpretation als ja/nein, 0/1, an/aus, richtig/falsch... Schaltungen entsprechen logischen Operationen Die richtige Algebra (das richtige Zahlensystem) musst verwendet werden um damit rechnen zu können. Computergrundlagen 2/20
Aussagenlogik G. Boole, 1815-1864 erlaubt formale Beweise über logische Aussagen Grundlage der Computerlogik kann mathematisch als Algebra formalisiert werden (boolesche Algebra) Anwendung auch in Computerprogrammieren die Operatoren dienen zur Beschreibung der boolschen Funktion digitaler Schaltungen (hohe bzw. niedrige Spannung) Computergrundlagen 3/20
Die zweielementige boolesche Algebra Wir betrachten eine Menge mit zwei Elementen 1 ( wahr ) und 0 ( falsch ) mit zwei Verknüpfungen ( oder ) und ( und ) mit einer einstelligen Verknüpfung ( nicht, Negation) Ferner gilt für beliebige a, b, c {0, 1}: 1. a (b c) = (a b) c, a (b c) = (a b) c 2. a (b c) = (a b) (a c), a (b c) = (a b) (a c) (Assoziativität) (Distributivität) 3. a b = b a, a b = b a (Kommutativität) 4. a (a b) = a, a (a b) = a (Adsorption) 5. a a = 1, a a = 0 (Komplemente) Computergrundlagen 4/20
Abgeleitete Gesetze Neutralität: a 0 = a, a 1 = a Idempotenz: a a = a, a a = a Extremalgesetze: a 1 = 1, a 0 = 0 Doppelnegation: ( a) = a Dualität: 0 = 1, 1 = 0 De Morgansche Gesetze: (a b) = a b, (a b) = a b Die zweielementige boolesche Algebra entspricht genau unserem Verständnis von Logik. Computergrundlagen 5/20
Was sind Zahlensysteme? Ein Zahlensystem wird zur Darstellung von Zahlen verwendet. Jede ganze Zahl B 2 kann als Basis(B) verwendet werden. Die Stelle bestimmt den Wert der Ziffer (die niederwertigste Position steht dabei im Allgemeinen rechts, z.b. die erste 3 in 373 hat einen anderen Wert als die zweite 3 dreihundert nicht drei). Der Ziffernvorrat ist 0 bis B-1. Die Zifferposition bestimmt den Stellenwert B n, entspricht eine Potenz der Basis. Zwei benachbarte Stellenwerte unterscheiden sich um den Faktor B. Die gängigsten Basen sind 2 (Dualsystem), 8 (Oktalsystem), 10 (Alltags Rechnen) oder 16 (das in der Informatik wichtige Hexadezimalsystem). Computergrundlagen 6/20
Was sind Zahlensysteme? Das System zur B=2 enthält nur 0 und 1.und wird für Computerrechnen und Datenspeichern verwendet. Die kleinste Informationseinheit (Bit) ist die Information über die Möglichkeiten 1 oder 0. In der Computertechnik wird oft das Hexadezimalsystem (Basis B=16) verwendet (0-9,A-F) Die Standardeinheit der Informationsgröße ist ein Byte (=8 Bit): die Information über eine aus 256 Möglichkeiten (die je zwei Zustände der acht Bits ermöglichen insgesamt 2 8 =256 Möglichkeiten). In dezimaler Darstellung: 0, 1, 2,... bis 255, im Binärsystem: 00000000, 00000001, 00000010,... bis 11111111.) Mit dem 16er-System (immer genau 2 Ziffern entsprechen einem Byte) viel besser handhaben als mit dem Dezimalsystem. Computergrundlagen 6/20
Zahlensysteme: Eigenschaften Wie kann ich mit nur zwei Elementen Zahlen darstellen? Sei B > 0 eine natürliche Zahl. Dann kann jede natürliche Zahl z eindeutig dargestellt werden als z = B n z k, wobei für alle k 0 z k < B und nur endliche viele z k 0. Beispiel i=0 B = 10 entspricht unserem Dezimalsystem: 1042 = 10 0 2 + 10 1 4 + 10 3 1 = 1042 16 B = 8 ergibt das Oktalsystem: 1042 = 8 0 2 + 8 1 2 + 8 3 2 = 2022 8 Computergrundlagen 7/20
Binärsystem Wie kann ich mit nur zwei Elementen Zahlen darstellen? Beispiele Wir benutzen das Binärsystem mit B = 2 und Ziffern 0 und 1 (Bits) 1042 = 2 10 + 2 4 + 2 1 = 10.000.010.010 2 Umrechnung von Binär- auf Dezimalzahlen ist umständlich Binär oktal ist einfach: 10.000.010.010 2 = 2022 8 Hexadezimal (B = 16, Ziffern 1 9, A F) auch: 10.000.010.010 2 = 412 16 1010.1111.1111.1110 2 = AFFE 16 Computergrundlagen 8/20
Umwandeln von Binär in Hexadezimalzahlen und umgekehrt Jeweils 4 Binärstellen entsprechen einer Hexadezimalstelle (16 = 2 4 ). Umwandlung: Vom Binär- ins Hexadezimalsystem: Unterteile die Binärzahl (rechts nach links) in 4er-Päckchen; wandle jedes Päckchen nach nebenstehender Tabelle in die entsprechende Hexadezimalziffer um. Vom Hexadezimal- ins Binärsystem: Wandle die Hexadezimalziffern der Reihe nach in die entsprechenden vierstelligen Binärzahlen um. Quelle:mathe-lexikon.at Computergrundlagen 9/20
Umwandeln von Binär in Oktalzahlen Jeweils 3 Binärstellen entsprechen einer Oktalstelle (8 = 2 3 ). Die Ziffern in Dreierblöcke gruppieren (von rechts nach links), die entsprechenden oktalen Ziffern aus der Tabelle ablesen, falls Stellen über bleiben, die keine vollständige Dreier-Gruppe ergeben, kann man sich statt dessen unsichtbare Nullen vorstellen (z.b. 10 ist mit 010 gleichbedeutend und umgekehrt die Dreiergruppe 001 ist gleichbedeutend mit 1). Quelle:mathe-lexikon.at Computergrundlagen 10/20
Darstellung reeller Zahlen ±1, 23456789 10 ±123 Eine Fließkommazahl besteht aus: Vorzeichen Mantisse (10er-)Exponent Stellen daher nur einen Teil der rationalen Zahlen exakt dar Alle anderen Zahlen werden angenähert Die Mantissenlänge bestimmt die Genauigkeit der Näherung Binär entsprechend: ±1, 0011110000001100101 2 ±1111011 Computergrundlagen 11/20
IEEE-Fließkommazahlen Speicherung einer 64-Bit-Fließkommazahl nach IEEE 754-Standard: Bit 6362... 5251... 0 ± Exponent e Mantisse m Keine Komplementdarstellung von Mantisse oder Exponent Binärsystem: (normalisierte) Mantisse wird ohne führende Stelle gespeichert, die immer 1 ist Der 11-bittige Exponent e ist um (Bias=)1023 (127 in 32-Bit-Fließkommazahlen) verschoben gespeichert und nimmt Werte von -1022 (e = 1) bis 1023 (e = 2046) an Der Wert einer Zahl ist also: ±1, m 2 e 1023 Computergrundlagen 12/20
Spezielle Werte Was ist mit den Exponenten 1023 (e = 0) und 1024 (e = 2047)? Diese stellen spezielle Werte dar: e = 0 und m = 0 ±0 e = 0 und m 0 Zahlen der Form ±0, m 2 1022 e = 2047 und m = 0 ± e = 2047 und m 0 ±NaN (not a number) Da die erste Stelle immer 1 ist, kann 0 nur so dargestellt werden ± ergibt sich z.b. bei Berechnung von ±1/0 ±NaN ergibt sich z.b. bei Berechnung von 1 Python fängt NaNs mit Fehlern ab, nicht aber z.b. C Computergrundlagen 13/20
32-Bit gegen 64-Bit Fließkommazahlen 32-Bit: einfach-genaues Format (single precision) [Länge des Exponenten=8 Bit, Länge der Mantisse=23 Bit, Bias des Exponenten=127] Genauigkeit der Darstellung von ca. 7 Dezimalstellen z.b. bei einer Zahl wie 12.345,678 ist die dritte Stelle nach dem Komma schon ungenau in numerischen Berechnungen mit mehreren Rechenoperationen sinkt die Genauigkeit sehr stark einfach genaues Format nicht ausreichent 64-Bit: doppelt genaues Format (double precision) [Länge des Exponenten=11 Bit, Länge der Mantisse=52 Bit, Bias des Exponenten=1023] Genauigkeit der Darstellung von ca. 16 Dezimalstellen. Speicherplatz und Rechenleistung sind so reichlich vorhanden, dass man nur noch das doppelt genaue Format verwendet kann. Computergrundlagen 14/20
Subtraktion/Addition von Fließkommazahlen Beispiele: 1, 0 10 0 + 1, 0 10 5 = 1, 0 10 0 + 0, 00001 10 0 = 1, 00001 10 0 1, 000002 10 0 1, 000001 10 0 = 0, 000001 10 0 = 1, 0 10 6 Verschieben der Mantisse der kleineren Zahl, bis beide denselben Exponenten haben Dabei gehen Stellen der kleineren Zahl verloren Dann gewöhnliche Addition/Subtraktion der Mantissen Schließlich den Exponenten verringern, bis die Mantisse keine führenden Nullen hat Computergrundlagen 15/20
Unterlauf/Überlauf In der Fließkommadarstellung gibt es eine kleinste(größte) positive Zahl, unter(über) diese Zahl kann kein Wert dargestellt werden in diesem Bereich wird die Zahl als 0( ) repräsentiert im Falle eines Zwischenergebnisses ist die Information üeber das Ergebnis verloren Zahlen verschiedener Größenordnung Die Addition/Subtraktion einer betragsmäßig viel kleineren Zahl ändert die größere Zahl nicht in einer vierstelligen Dezimalarithmetik: 1e3 + 1e-2 =1, 000 10 3 + 1, 000 10 2 =1, 000 10 3 + 0, 000 010... 10 2 =1, 000 10 3 + 0, 000 10 3 = 1e3 Computergrundlagen 16/20
Auslöschung:falsches Ergebnis bei der Subtraktion fast gleich großer Zahlen Ist x < 2 lm, wobei l m die Bitlänge der Mantisse ist, so ist in Fliesskommaarithmetik x x + 1 1 (x + 1) 1 1 1 0 Auslöschung der vorderen Stellen bei Subtraktion ungefähr gleich großer Zahlen führt zu fehlenden hinteren Stellen im Ergebnis Im Beispiel verschwindet die kleinere Zahl x komplett Ist x 2 lm, verliert x fast alle signifikanten Stellen Formeln muss man umformen so dass keine Auslöschung passieren kann. Computergrundlagen 17/20
Beispiel: quadratische Gleichung Lösen der quadratischen Gleichung x 2 + ax + b = 0: x ± = a 2 ± (a 2) 2 b ( Bei kleinem b ist a ) 2 2 b a 2 a > 0: Auslöschung bei der größeren Nullstelle x + a < 0: Auslöschung bei der kleineren Nullstelle x Ausweg: Es gilt ( x + x = a 2 + (a 2 ) 2 b ) ( a 2 (a 2 ) 2 b ) = b Berechne also nur die stabile Summe (x bei a > 0, sonst x + ), und die zweite Nullstelle durch x + = b/x bzw. x = b/x + Computergrundlagen 18/20
Multiplikation von Fließkommazahlen Beispiel: 1, 01 10 0 1, 01 10 5 = 1, 0101 10 0+5 = 1, 0101 10 5 Multiplikation und Division sind unkritisch, es kann zu keiner Auslöschung kommmen Allerdings zu Über- oder Unterläufen des Exponenten In diesem Fall ist das Ergebnis bzw. 0 Meist kann man dies aber durch geeignete Umformungen auch vermeiden, z.b. durch logarithmisches Rechnen Computergrundlagen 19/20
Fehlerquellen bei numerischen Rechnungen Numerische Fehler Auslöschung Über- und Unterläufe Rundungsfehler durch endliche Mantissenlänge Algorithmische (Verfahrens-) Fehler Abschneidefehler: Unendliche Summen müssen durch endliche Summen ersetzt werden Diskretisierungsfehler: Funktionsauswertung immer nur an endlich vielen Punkten Modellierungsfehler Das der Rechnung zugrundeliegende Modell erfasst wesentliche Details des Experiments nicht Datenfehler Genauigkeit der Anfangswerte (z.b. aus einem Experiment) Computergrundlagen 20/20