Computergrundlagen Boolesche Logik

Werbung
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
Herunterladen