Grundlagen der Rechnerarchitektur
Binäre Logik und Arithmetik
Übersicht
• Logische Operationen
• Addition, Subtraktion und negative Zahlen
• Logische Bausteine
• Darstellung von Algorithmen
• Multiplikation
• Division
• Gleitkommazahlen
• Gleitkommaarithmetik
Logische Operationen
AND, OR und XOR
A B AND 0 0
0 1 1 0 1 1
A B OR 0 0
0 1 1 0 1 1
A B XOR 0 0
0 1 1 0 1 1
Beispiele:
1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 AND 0 1 1 1 1 OR 1 1 1 0 1 XOR 1 0 1 0 1 --- --- ---
Notationen: Notationen: Notation:
NOT, NAND und NOR
A NOT 0
1
A B NAND 0 0
0 1 1 0 1 1
A B NOR 0 0
0 1 1 0 1 1 Beispiele:
1 1 0 0 1 1 1 0 0 1 NOT 1 1 0 0 1 NAND 1 1 1 0 1 NOR 1 0 1 0 1 --- --- ---
Notationen:
Rechenregeln auf logischen Ausdrücken
• Kommutativgesetz
• Assoziativgesetz
• Distributivgesetz
• De Morgansche Regeln
Rechenregeln auf logischen Ausdrücken
• Rechnen mit den Konstanten 0 und 1
• Doppelte Negation
• Kürzungsregeln
Logischer Links‐ und Rechts‐Shift
Links‐ und Rechts‐Shift am Beispiel von 8‐Bit‐Zahlen:
0 1 0 0 1 1 1 1 << 1 = 0 0 1 1 1 1 0 0 << 2 = 0 1 0 0 1 1 1 1 >> 1 = 1 1 1 1 0 0 0 0 >> 2 = Logischer Links‐Shift „b << x“:
Verschiebe Bits in b nach links, um den angegebenen Wert x.
Die neuen leeren Stellen werden mit 0 aufgefüllt.
Logischer Rechts‐Shift „b >> x“:
Verschiebe Bits nach rechts, um den angegeben Wert x.
Die neuen leeren Stellen werden mit 0 aufgefüllt.
Was bedeutet Shift um i?
Links‐Shift:
Rechts‐Shift:
Links‐ und Rechts‐Rotation
Links‐ und Rechts‐Rotation am Beispiel von 8‐Bit‐Zahlen:
Links‐Rotation um 2 Stellen:
0 1 0 0 1 1 1 1 -->
Rechts‐Rotation um 2 Stellen:
1 1 1 1 0 0 0 1 -->
Links‐Rotation von b um x Stellen:
Verschiebe Bits in b nach links, um den angegebenen Wert x.
Die leeren Stellen werden mit den herausgeschobenen aufgefüllt.
Rechts‐Rotation von b um x Stellen:
Verschiebe Bits nach rechts, um den angegeben Wert x.
Die leeren Stellen werden mit den herausgeschobenen aufgefüllt.
Addition, Subtraktion und negative Zahlen
Addition und Subtraktion von binären Zahlen
Beispiel C = A + B:
(Carry) 1 1 1 0 1 0 (A)
+ 1 0 1 0 1 1 (B) ---
= (C)
Beispiel C = A – B:
1 1 1 0 1 0 (A) - 1 0 1 0 1 1 (B)
(Carry) ---
= (C)
Darstellung von negativen binären Zahlen
Beobachtung für eine beliebige Binärzahl B, z.B. B=110010:
B
+ NOT(B)
---
= B + NOT(B) 1
+ (Carry)
---
Also gilt:
Quiz
Was ist die Dezimalzahl –7 als Binärzahl B in Zweierkomplement?
Zweierkomplement‐Binärzahl B=...1111011 als Dezimalzahl?
Subtraktion von binären Zahlen nochmal
Beispiel C = A – B:
1 1 1 0 1 0 (A) - 1 0 1 0 1 1 (B)
Bestimme Zweierkomplement zu B, also –B:
Also ist C:
(Carry) 1 1 1 0 1 0 (A)
+ ... 1 1 0 1 0 1 0 1 (-B) ---
N‐Bit binäre Zahlen (signed)
n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl
…0000000000000000000000000000000000000000000000000110 = 6
…1111111111111111111111111111111111111111111111111101 = -3
MSB bestimmt das Vorzeichen. MSB=0 bedeutet nicht‐negativ, MSB=1 bedeutet negativ.
Beispiel: 16‐Bit
Beispiel vorzeichenbehaftete 8‐Bit‐Binärzahlen:
0 0 0 0 0 0 0 0 = 0 1 0 0 0 0 0 0 0 = -128 0 0 0 0 0 0 0 1 = 1 1 0 0 0 0 0 0 1 = -127 0 0 0 0 0 0 1 0 = 2 1 0 0 0 0 0 1 0 = -126
. .
. .
. .
0 1 1 1 1 1 0 1 = 125 1 1 1 1 1 1 0 1 = -3 0 1 1 1 1 1 1 0 = 126 1 1 1 1 1 1 1 0 = -2 0 1 1 1 1 1 1 1 = 127 1 1 1 1 1 1 1 1 = -1
Nicht‐vorzeichenbehaftete Zahlen (unsigned)
n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl
…0000000000000000000000000000000000000000000000000110 = 6
…0000000000000000000000000000000000001111111111111101 = 65533
MSB bestimmt das Vorzeichen nicht. Zahl ist immer nicht‐negativ.
Beispiel: 16‐Bit
Beispiel nicht‐vorzeichenbehaftete 8‐Bit‐Binärzahlen:
0 0 0 0 0 0 0 0 = 0 1 0 0 0 0 0 0 0 = 128 0 0 0 0 0 0 0 1 = 1 1 0 0 0 0 0 0 1 = 129 0 0 0 0 0 0 1 0 = 2 1 0 0 0 0 0 1 0 = 130
. .
. .
. .
Signed‐N‐Bit Binär in Dezimal umrechnen
Beispiel 8‐Bit‐Binärzahl B:
1 1 1 1 1 1 0 1 binär ist dezimal:
Beobachtung für folgende 8‐Bit‐Zahl C (Erinnerung: 10000000 binär ist –128):
1 0 0 0 0 1 0 1
Also für signed n‐Bit‐Binärzahl b = bn‐1 bn‐2 ... b0 gilt:
Beobachtung für folgende 8‐Bit‐Zahl C (Erinnerung: 10000000 binär ist –128):
1 0 0 0 0 1 0 1
Also für signed n‐Bit‐Binärzahl b = bn‐1 bn‐2 ... b0 gilt: