http://www.icp.uni-stuttgart.de Computergrundlagen Boolesche Logik, Zahlensysteme und Arithmetik Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 http://www.icp.uni-stuttgart.de 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, ... • Schaltungen entsprechen logischen Operationen ( Spannung an Pin a und Spannung an Pin b ” ⇒ Spannung am Ausgang“) Wie kann ich damit rechnen? Axel Arnold Computergrundlagen 2/11 http://www.icp.uni-stuttgart.de Aussagenlogik G. Boole, 1815 - 1864 • erlaubt formale Beweise über logische Aussagen • Grundlage der Computerlogik • kann mathematisch als Algebra formalisiert werden – als eine boolesche Algebra Axel Arnold Computergrundlagen 3/11 http://www.icp.uni-stuttgart.de 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. 2. 3. 4. 5. a ∨ (b ∨ c) = (a ∨ b) ∨ c, a ∧ (b ∧ c) = (a ∧ b) ∧ c a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c), a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c) a ∨ b = b ∨ a, a∧b =b∧a a ∨ (a ∧ b) = a, a ∧ (a ∨ b) = a a ∨ ¬a = 1, a ∧ ¬a = 0 Axel Arnold (Assoziativität) (Distributivität) (Kommutativität) (Adsorption) (Komplemente) Computergrundlagen 4/11 http://www.icp.uni-stuttgart.de 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 der Aussagenlogik – und unserem Verständnis von Logik. Axel Arnold Computergrundlagen 5/11 http://www.icp.uni-stuttgart.de Zahlensysteme • 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= ∞ X B n zk , i=0 wobei für alle k 0 ≤ zk < B und nur endliche viele zk 6= 0. Beispiel B = 10 entspricht unserem Dezimalsystem: 1042 = 100 × 2 + 101 × 4 + 103 × 1 = 1042d B = 8 ergibt das Oktalsystem: 1042 = 80 × 2 + 81 × 2 + 83 × 2 = 2222o Axel Arnold Computergrundlagen 6/11 http://www.icp.uni-stuttgart.de Binärsystem • Wie kann ich mit nur zwei Elementen Zahlen darstellen? Wir benutzen das Binärsystem mit B = 2 und Ziffern 0 und 1 (Bits) Beispiele 42 = 26 + 23 + 21 = 1001010b • Umrechnung von Binär- auf Dezimalzahlen ist umständlich • Oktal ist es einfach: 1042 = 210 + 24 + 21 = 10.000.010.010b = 2222o • oder in Hexadezimalzahlen (B = 16, Ziffern 1–9, A–F): 100.0001.0010b = 812h, Axel Arnold 1010.1111.1111.1110b = AFFEh Computergrundlagen 7/11 http://www.icp.uni-stuttgart.de Addieren/Subtrahieren im Binärsystem Genau wie im Dezimalsystem: + = 101010 1111 1110 111001 (Summand a) (Summand b) (Übertrag c) (Ergebnis e) = 101010 1111 11111 11011 (1. Summand a) (2. Summand b) (geborgt c) (Ergebnis e) Betrachten wir die Ziffern als Wahrheitswerte, so gilt: e0 = (a0 ∨ b0 ) ∧ ¬(a0 ∧ b0 ) =: a0 ⊕ b0 c1 = a0 ∧ b0 ei = (ai ⊕ bi ) ⊕ ci−1 ci = (ai ∧ bi ) ∨ (ai ∧ ci ) ∨ (bi ∧ ci ) Damit kann die Addition als Schaltkreis realisiert werden! Axel Arnold Computergrundlagen 8/11 http://www.icp.uni-stuttgart.de Komplementdarstellung negativer Zahlen Was ist z.B. -5 = 0 - 5? = 0 101 ...11111 ...111011 • im Prinzip unendlich viele führende 1er • in der Praxis endliche Darstellung (z.B. 32 Bit) • Bei n Bit-Darstellung wird −z als 2n − z dargestellt • Bei 8 Bit z.B. ist −5 = 256 − 5 = 251 = 11111011b • Addition und Subtraktion funktionieren ohne Änderung, solange module 2n gerechnet wird Axel Arnold Computergrundlagen 9/11 http://www.icp.uni-stuttgart.de Multiplizieren im Binärsystem = 101010 * 1010 0 ↓ + 101010. ↓ + 0.. ↓ + 101010... ↓ 110100100 Binäre Multiplikation ist sehr einfach: • Eine Zahl wird bitweise nach links geschoben (Multiplikation mit 2) • ist das entsprechende Bit der andere Zahl gesetzt, wird die erste addiert, sonst nicht Axel Arnold Computergrundlagen 10/11 http://www.icp.uni-stuttgart.de Dividieren im Binärsystem 101111 - 101... = 111 0.. = 111 0. = 111 - 101 = 10 / 101 = 1001 ↑ (Ergebnis) ↑ ↑ ↑ (Rest) Binäre Division analog zur Multiplikation: • Der Divisor wird zunächst ganz nach links geschoben • Und dann bitweise wieder nach links • Wenn der Rest größer als der Divisor ist, abziehen, und das entsprechende Bit des Ergebnisses setzen Axel Arnold Computergrundlagen 11/11