Rechnergrundlagen SS 2007

Werbung
Rechnergrundlagen
SS 2007
3. Vorlesung
Inhalt
• Zahlensysteme
• Binäre Darstellung von Integer-Zahlen
–
–
–
–
Vorzeichen-Betrag
Binary Offset
1er-Komplement
2er-Komplement
• Addition und Subtraktion binär dargestellter
Zahlen
• Carry und Overflow
• Little Endian / Big Endian
Zahlensysteme
Elementare Zahlenmengen
• Natürliche Zahlen (positive ganze
Zahlen)
• Ganze Zahlen (positive und negative
ganze Zahlen)
• Rationale Zahlen (gebrochene Zahlen)
• Reelle Zahlen (gemischt gebrochene
Zahlen)
Zahlen in Rechnern
• Integer-Zahlen (natürliche und ganze
Zahlen)
• Festkomma-Zahlen (rationale und reelle
Zahlen mit eingeschränktem
Wertebereich)
• Gleitkomma-Zahlen (rationale und reelle
Zahlen mit erweitertem Wertebereich)
Wertebereiche von IntegerZahlen
• 8 Bit: -128 … 127
• 16 Bit: -32768 … 32767
• 32 Bit: -2 147 483 648 …
2 147 483 647
• 64 Bit: Dezimalzahl mit 19 Ziffern, ca.
1019
Was ist die Differenz?
N
Z = ∑ xiY
i =0
i
a=
∞
∑ zb
i =−∞
i
i
Darstellung positiver Zahlen
allgemeine Form:
a=
∞
∑
i =−∞
zi bi
Verwendung von n+1 Bits für Vorkommastellen und
m Bits für Nachkommastellen:
a=
i =n
∑
i =− m
zi bi
n −1
−1
= znb + zn −1b ... z1b + z0 + z−1b + ... z− mb
n
−m
Es ist Konvention, die Ziffern mit absteigendem Index i als
Liste darzustellen und zwischen z0 und z-1 ein Komma
einzufügen.
Beispiel
Verwendung von n+1 Bits für Vorkommastellen und
m Bits für Nachkommastellen:
a=
i =n
∑
i =− m
zi bi
= znb n + zn −1b n −1... z1b + z0 + z−1b −1 + ... z− mb − m
−3
−1
1001,1012 = 2 + 2 + 2 + 2
= 0,125 + 0,5 + 1 + 8
= 9,62510
0
3
Verschiedene Darstellungen von
Integer-Zahlen
Am Beispiel: 4 bit
Integer-Zahlen (ohne Vorzeichen)
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 (Binary Offset)
Der kleinst mögliche Wert
wird mit 0000… und der
größt mögliche Wert wird
mit 1111… dargestellt.
Wertebereich:
−2
n −1
≤Z ≤2
n −1
−1
Integer-Zahlen (1er-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 und
anschließend ausgewertet
Wertebereich:
−2
n −1
+1 ≤ Z ≤ 2
n −1
−1
Beispiel 1er Komplement
-3 soll binär als 1er Komplement dargestellt werden
binäre Darstellung des Betrags
(3)10 = (0011)2
Setzen des Vorzeichens und Komplement der Bits
(-3)10 = (1100)2-1k
Beispiel 1er Komplement
a=(1001,0011)2-1k
MSB =1
negative Zahl
Komplement aller Ziffern muss gebildet werden
|a| = (0110,1100)2
|a| = (6,75)10
Vorzeichen hinzufügen
a = (-6,75)10
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.
Addition/Subtraktion
1+0, bzw. 0+1
Ergebnis: 1, kein Übertrag (Carry)
1+1
Ergebnis: 0, Übertrag 1
1-0
Ergebnis: 1, kein Übertrag
0-1
Ergebnis: 1, Übertrag 1
1-1
Ergebnis: 0, kein Übertrag
Übertrag (Carry, C, CY)
Ein Übertrag entsteht, wenn bei Operationen mit nur
positiven Zahlen der Wertebereich überschritten wird.
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
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
4F 00
FF FF
A1 FF
Interpretation als
signed 2 Byte Integer
Herunterladen