Rechnergrundlagen SS 2007 - fbi.h

Werbung
Rechnergrundlagen
SS 2007
4. Vorlesung
Inhalt
• Binäre Darstellung von Integer-Zahlen
– Vorzeichen-Betrag
– 2er-Komplement
– BCD
• Addition und Subtraktion binär
dargestellter Zahlen
• Carry und Overflow
• Little Endian / Big Endian
• Umrechnung in eine binäre Darstellung
Integer-Zahlen (Signed Magnitude)
Most Significant Bit (MSB)
definiert das Vorzeichen.
Vorzeichenbit muss gesondert
ausgewertet werden.
Es existiert eine positive und
eine negative Darstellung der
Null.
Wertebereich:
−2
n −1
+1 ≤ Z ≤ 2
n −1
−1
Integer-Zahlen (2er-Komplement)
Most Significant Bit (MSB)
definiert das Vorzeichen.
positive Zahl: MSB = 0,
3 niederwertigen Bits
werden wie gewohnt ausgewertet
negative Zahl: MSB = 1,
3 niederwertigen Bits
werden invertiert, 1
addiert und anschließend
ausgewertet
Wertebereich:
−2
n −1
≤Z ≤2
n −1
−1
Vorteile 2er-Komplement
Darstellung
• Es existiert nur eine Null.
• Das Vorzeichenbit muss für Addition
und Subtraktion nicht gesondert ausgewertet werden.
• Signifikante Vereinfachung der
Berechnung.
• 2er-Komplement wird in der Praxis fast
ausschließlich eingesetzt.
Beispiel 2er-Komplement
Zu berechnen: (6)10-(1)10 = (6)10 + (-1)10 = (5)10
(6)10: (0110)2
-1: Betrag 001, invertiert 110, 1 addiert 111
(-1)10: (1111)2-2k
0 1 1 0
+
1 1 1 1
C 1 1 0
1 0 1 0 1
Ergebnis: (0101)2-2k = (5)10
Beispiel 2er-Komplement
Zu berechnen: (4)10 + (5)10 = (9)10
(4)10: (0100)2
0 1 0 0
+
0 1 0 1
C 1 0 0
1 0 0 1
(5)10: (0101)2
Ergebnis: (1001)2-2k = (-7)10
Overflow
Beispiel 2er-Komplement
Zu berechnen: (3)10-(6)10 = (-3)10
(3)10: (0011)2
-6: Betrag 110, invertiert 001, 1 addiert 010
(-6)10: (1010)2-2k
0 0 1 1
101, invertiert 010, 1 addiert 011
+ 1 0 1 0
0 0 1 0
1 1 0 1
Ergebnis: (1101)2-2k = (-3)10
Überlauf (Overflow, OV)
Ein Überlauf entsteht, wenn bei Operationen von 2er-Komplement-Zahlen der Wertebereich überschritten wird.
Ein Überlauf liegt dann vor, wenn beide Summanden ein
gleiches Vorzeichen haben und das Ergebnis ein anderes.
Beispiel 2er-Komplement
Zu berechnen: (-6)10-(7)10 = (-6)10 + (-7)10 = (-13)10
(-6)10: (1010)2-2k
1 0 1 0
+ 1 0 0 1
1 0 0 0
1 0 0 1 1
(-7)10: (1001)2-2k
Ergebnis: (0011)2-2k = (3)10
Overflow
OV-Tabelle
Addition 2er-Komplement
Summand
A
B
+
+
+
+
+
+
-
+
+
-
-
Summe
Y
+
Flag
OV
0
+
+
1
0
-
0
0
0
+
-
1
0
Carry (VZ)
Cin
Cout
0
0
1
0
1
1
0
1
0
0
0
1
0
1
1
1
Tabelle
Übung
Bitte berechnen Sie:
1 0 1 0 1
+ 0 1 0 1 1
Bitte interpretieren Sie das Ergebnis unter der
Annahme, dass es sich um eine 2er-Komplement
Darstellung handelt.
Tritt ein Overflow auf?
Little Endian – Big Endian
Bei der Interpretation, z.B. einer Integer-Zahl, ist zu
unterscheiden, ob das least significant Byte an
der höchsten Adresse („big endian“) oder der
niedrigsten Adresse („little endian“) gespeichert
wird.
Beispielsweise Speicherung eines 4 Byte Integer:
MSB Æ Byte3 Byte2 Byte1 Byte0 Å LSB
Speicheradresse
BasisAdresse+0
BasisAdresse+1
BasisAdresse+2
BasisAdresse+3
Little Endian
Byte0
Byte1
Byte2
Byte3
Little Endian: PC (Intel,
AMD), DEC, …
Big Endian
Byte3
Byte2
Byte1
Byte0
Big Endian: Apple
(Motorola), Sun, …
Beispiel: -96
000 0000 0000 0000
128 64 32 16 8 4 2 1
FF A0
A0 FF
000 0000 0110 0000
Betrag
111 1111 1001 1111
1er-Komplement
111 1111 1010 0000
2er-Komplement
1111 1111 1010 0000
Vorzeichen
Hex-Editor auf einem PC (Intel)
Hex-Darstellung
in einem PC
Interpretation als
signed 2 Byte Integer
4F 00
79
FF FF
-1
A1 FF
-95
Binary Coded Decimal (BCD)
BCD Code I
• Binary Coded Decimal (BCD)
• jede Dezimalziffer wird mit 4 Bit dargestellt
• jede Einheit mit vier binären Stellen wird
als Tetrade (Vierergruppe) bezeichnet
• von insgesamt 16 möglichen Tetraden
werden nur 10 genutzt
• die nicht genutzten werden PseudoTetraden genannt
BCD Code II
Dezimal
23
22
21
20
0
0
0
0
0
1
0
0
0
1
2
0
0
1
0
3
0
0
1
1
4
0
1
0
0
5
0
1
0
1
6
0
1
1
0
7
0
1
1
1
8
1
0
0
0
9
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
Tetraden
Pseudotetraden
Beispiel
0010
2
0110
6
269
1001
9
BCD-Addition
• BCD-Addition wird für jede Tetrade
durchgeführt.
• Eine übergelaufene Tetrade muss durch
Addition von 6 korrigiert werden.
• Eine Pseudotetrade (als Ergebnis einer
Stellen oder Korrekturaddition) muss
durch Addition von 6 korrigiert werden.
Beispiele
1
0 0 0 1
1 0 0 0
1 0 0 1
0 0 0 1
0 0 0 1
0 1 1 0
0 1 1 1
0 1 1 1
0 1 1 0
1 1
0 0 0 0
1
0 0 0 1
1 1 0 1
0 1 1 0
1
0 0 1 1
Übertrag
Pseudotetrade
8 + 9 = 17
7 + 6 = 13
BCD-Addition: Übung
68 + 35 = 103
0 0 0 0
0 0 0 0
0 0 0 0
0
0
1
1
1 1 0
0 1 1
1
0 0 1
1 1
0 0 0 0
0 0 0 0
1
0 0 0 1
1
0
1
0
0 1 0
1 1 0
1
0 0 0
1 0 0 0
0 1 0 1
1 1 0 1
0 1 1 0
1
0 0 1 1
0 0 0 0
0 0 1 1
BCD-Subtraktion
• Subtraktion wird durch Addition des
Zehnerkomplements der zu subtrahierenden
Zahl realisiert.
• Pseudotetraden müssen korrigiert werden.
• Ergibt sich in die 5. Stelle einer Tetrade kein
Übertrag, so ist das Ergebnis eine negative
Zahl.
– In diesem Fall muss für die Ermittlung des Betrags
wiederum das Zehnerkomplement gebildet
werden.
Beispiel 1: Subtraktion
9–7=2
10er-Komplement für 7: 3
1 0 0 1
0 0 1 1
1 1
1 1 0 0
0 1 1 0
1 1
1 0 0 1 0
Beispiel 2: Subtraktion
7 – 9 = -2
0 1 1 1
0 0 0 1
1 1 1
1 0 0 0
10er-Komplement für 9: 1
• Kein Übetrag in die
5. Stelle
• negative Zahl
• 10er-Komplement 8:
2
• Ergebnis: -2
3-Exzess Code, Aiken Code
• Beim 3-Exzess Code werden die ersten und
letzten drei Tetraden der 16 möglichen nicht
verwendet. Die Tetrade 0000 kommt nicht
vor. Das Neuner-Komplement kann durch
einfache Inversion gebildet werden.
• Beim Aiken Code werden die ersten und die
letzten 5 Tetraden verwendet. Das NeunerKomplement kann durch einfache Inversion
bestimmt werden.
Gray Code
Beim Gray Code wird beim Übergang von einerTetrade zur
nächst höheren Tetrade nur ein Bit geändert. Derartige Codes
werden als einschrittig oder progressiv bezeichnet.
G
R
A
Y
G
R
A
Y
0
0
0
0
0
5
0
1
1
1
1
0
0
0
1
6
0
1
0
1
2
0
0
1
1
7
0
1
0
0
3
0
0
1
0
8
1
1
0
0
4
0
1
1
0
9
1
1
0
1
Fazit: Integer-Zahlen
• Unmittelbare Interpretierbarkeit der
Darstellung ist für die Verwendung in
Rechnern von geringer Bedeutung.
• Zentrale Bedeutung haben die Vereinfachung
von arithmetischen Operationen und eine
weitgehende Absicherung gegen Fehler wie
Überlauf.
• Optimale Darstellung hängt vom konkreten
Einsatz und den Anforderungen ab.
Darstellung gebrochener Zahlen
allgemeine Form:
a=
∞
∑
i =−∞
zi bi
Verwendung von n+1 Bits für Vorkommastellen,
m Bits für Nachkommastellen und 1 Bit für Vorzeichen:
a=
i =n
∑
i =− m
zi bi
n −1
−1
= znb + zn −1b ... z1b + z0 + z−1b + ... z− mb
n
−m
2er-Komplement Darstellung: MSB zeigt das Vorzeichen an
Auswertung MSB = 1: negative Zahl; Betrag wird
komplementiert; im LSB wird 1 hinzuaddiert
Übung
Gesucht ist eine gebrochene Zahl a in Dezimal-Darstellung,
die als 2er-Komplement folgendermaßen codiert ist:
a = (1001,1100) 2− 2 k
Da MSB=1 handelt es sich um eine negative Zahl und
die Bits sind zu komplementieren:
(0110, 0011)
Außerdem muss das LSB um 1 erhöht werden
a = (0110, 0100) 2
Umwandlung ins Dezimalsystem:
a = (−6, 25)10
Umrechnung einer Dezimalzahl
(235)10 = (z)2
235 : 2 = 117,Rest 1
117 : 2 = 58, Rest 1
58 : 2 = 29, Rest 0
29 : 2 = 14, Rest 1
14 : 2 = 7, Rest 0
7 : 2 = 3, Rest 1
3 : 2 = 1, Rest 1
1: 2 = 0, Rest 1
11101011
Test: 1+2+8+32+64+128 = 235
Regel zur Umrechnung einer
Dezimalzahl
a / b2 = d 0 + r0 / b2
d 0 / b2 = d1 + r1 / b2
d n −1 = rn
d n − 2 = rn ∗ b2 + rn −1
...
...
d n − 2 / b2 = d n −1 + rn −1 / b2
d n −1 / b2 = 0 + rn / b2
a = rn ∗ b2 n + ...+r1 ∗ b2 + r0
n
a = ∑ ri ∗ b2i
i =0
Hornerschema (4 Ziffern)
(a )10 = (r3 r2 r1r0 )b
= r3 b + r2b + r1b + r0 b
3
2
1
= r3 b + r2 b + r1b + r0
3
2
= (r3 b + r2 b + r1 )b + r0
2
= ((r3 b + r2 )b + r1 )b + r0
0
Hornerschema (allgemein)
Effiziente Methode zur Umwandlung von Zahlen zur
Basis b in das Dezimalsystem.
(rn rn −1...r1r0 )b = (...((rnb + rn −1 )b + rn − 2 )b + ... + r1 )b + r0
(1324)5 = ((1 ∗ 5 + 3) ∗ 5 + 2) ∗ 5 + 4 = 214
Umwandlung von
Nachkommastellen
Regel
Übung (0,28125)10
a ∗ b = v0 , a0
0,28125*2 = 0,5625
a0 ∗ b = v1 , a1
0,5625*2 = 1,125
a1 ∗ b = v2 , a2
0,125*2 = 0,25
...
0,25*2 = 0,5
an −1 ∗ b = vn , 0
0,5*2 = 1,0
(a )10 = (0, v0 v1...vn )b
(0,28125)10 = (0,01001)2
Herunterladen