Skript Technische Informatik I - Kapitel 6
Übersicht
- 6.1 Negative Zahlen, Zweierkomplement
- 6.2 Gleitkommazahlen
- 6.3 Multiplikation
6.1 Negative Zahlen, Zweierkomplement
In der Zweierkomplementdarstellung durchläuft man zunächst die positiven Zahlen, dann die
negativen Zahlen in umgekehrter Reihenfolge
0000 = 0
1000 = - 8
0001 = 1 1001
= - 7
0010 = 2
1010 = - 6
0011 = 3
1011 = - 5
0100 = 4
1100 = - 4
0101 = 5
1101 = - 3
0110 = 6
1110 = - 2
0111 = 7
1111 = - 1
Auch in der Zweierkomplementdarstellung gibt die erste Ziffer das Vorzeichen an.
Wert einer positiven Zahl
W = ∑ i=0,n-1 (bi* 2(n-1-i))
Beispiel
eine ganze Zahl sei als 8 bit lange Zahl zur Basis 2 dargestellt
W(000011012 ) =
0*27 +..+ 0*24 + 1*23 + 1*22 + 0*21 +
1*20 = 8 + 4 + 1 = 1310
Wert einer negativen Zahl
W = - (2n - ∑i=0,n-1 (bi* 2(n-1-i)))
Differenzbildung von zwei ganzen Zahlen
17
00010001
+(-14) 11110010
= 3
00000011
Zweierkomplement am Zahlenkreis
Zweierkomplement (Definition)
Die Bitfolge
z
n z
n-1
z
n-2 . . . z
1 z
0
repräsentiert die Binärzahl
- z
n * 2
n + z
n-1 * 2
(n-1) + z
n-2 * 2
(n-2)
+ . . . + z
1 * 2
1 + z
0
Zweierkomplement für n=3
Für n = 3 ergibt sich:
1000 = - 8 1100 = - 4 0000 = 0 0100
= 4
1001 = - 7 1101 = - 3 0001 = 1 0101
= 5
1010 = - 6 1110 = - 2 0010 = 2 0110
= 6
1011 = - 5 1111 = - 1 0011 = 3 0111
= 7
Negation in Zweierkomplementdarstellung
Addiert man zu einer Zahl ihre Komplementärzahl, so erhält man
die Zahl 111 ... 1111
111 .... 1111 = - 2
n + 2
(n-1)
+ ... + 2
1 + 1
= - 2
n + ( 2
n - 1) =
- 1
Eine Zahl plus ihr Komplement ergibt also die Darstellung von -1
Daher negiert man eine Zahl, indem man zu ihrer Komplementärzahl
1 addiert.
Grundrechenarten bei Zweierkomplementzahlen
Addition: Verwendung der gleichen Hardware wie bei vorzeichenlosen
Zahlen
S=A+B; Ci=Carry-In
= 0
-5 + 6 = 1
in Zweierkomplementdarstellung :
1011 + 0110 = 0001 (Vorsicht bei Bereichsüberschreitung)
Negation
5 in Zweierkomplementdarstellung : 0101
-5 in Zweierkomplementdarstellung : 1011
Komplementiere alle Bits,dann addiere 1
Subtraktion: Addition mit vorheriger Bitinversion des Subtrahenden
und
Carry-In am LSB D=A-B, Ci=Carry-In=1
negiere zweiten Operanden, dann addiere
Zweierkomplement-Addition/Subtraktion und Überlauf
Überlauf = Überschreitung des darstellbaren Zahlenbereichs
Überlauf bei Addition von 2-er Komplement-Zahlen:
Beispiele:
-3 + (-6) = -9
1101 + 1010 =
1 0111 = +7
5 + 6 = 11
0101 + 0110 = 1011 = -5
Sicheres Kennzeichen für Überlauf:
Summanden gleiches Vorzeichen ≠ Vorzeichen der Summe
=> Carry-In in Vorzeichen-Stelle ≠ Carry-Out aus Vorzeichen-Stelle
Überlauf bei Subtraktion von 2-er Komplement-Zahlen:
Beispiel:
-3 - (+6) = -9
=>1101 - 0110 => 1101 + 1001 + 0001 =
1 0111 = +7
Sicheres Kennzeichen für Überlauf:
Minuend & komplem.Subtrahend gleiches VZ ≠ VZ der Differenz
=> Carry-In in Vorzeichen-Stelle ≠ Carry-Out aus Vorzeichen-Stelle
zurück
6.2 Gleitkommazahlen
Rationale Zahlen als Festkommazahlen
In einem allgemeinen Ziffernsystem mit einer Basiszahl b kann man auch rationale
Zahlen definieren:
Mit den Ziffern X
n, X
n-1, ...,
X
1, X
0 und Y
1, Y
2, ..., Y
m-1
mit X
i , Y
j C {0, 1, ..., b-1}
kann man die gebrochene Zahl
X =
(X
n X
n-1 ... X
1 X
0 . Y
1
Y
2 ... Y
m-1 )
b
mit dem Zahlenwert
X = X
n*b^n +...+ X
1*b^1
+ X
0 + Y
1*b^(-1) + Y
2*b^(-2) + ... + Y
m*b^(-m)
bilden.
Beispiele:
gebrochene Binärzahlen
0 . 1, 0 .01, 0 .11, 1 .11, 111 .111, 11011101011
.100111011
gebrochene Dezimalzahlen
0 . 5, 0 . 25, 0 . 75, 1 . 75, 7 . 875, 1771
. 6162109375
Gleitkommazahlen
Analog zu der Schreibweise 4711 = 0.4711 * 10
4
werden binäre Gleitkommazahlen gebildet.
Gleitkommazahlen (engl.: floating point numbers) bestehen aus:
- dem Vorzeichen V
- dem Exponenten E
- der Mantisse M
V, E und M repräsentieren dann die Zahl (-1)
V * M * 2
E
Vorzeichen, Exponent und Mantisse
Die
Mantisse besteht aus Binärziffern m
1
... m
n und wird als
m
1 x 2
(-1) + m
2 x 2
(-2) +
... + m
n x 2
(-n) interpretiert.
Das
Vorzeichenbit gibt an, ob die Zahl positiv oder negativ ist.
Der
Exponent ist eine Binärzahl, z. B. im Bereich -128 bis +127.
Normierte Gleitkommazahlen
Durch Verschieben des Kommas und gleichzeitiger Anpassung des Exponenten
kann man erreichen, daß die erste Stelle der Mantisse 1 ist.
Diese Darstellung heißt
normierte Gleitkommadarstellung.
0.01010111 * 2
14 = 0.1010111 * 2
13 = 1.010111 * 2
12 (normiert)
Normierte Gleitkommazahlen haben den Vorteil, daß die Mantissenbits
optimal ausgenutzt werden, da keine überflüssigen Nullen gespeichert
werden müssen.
Die führende 1 braucht auch nicht gespeichert zu werden.
IEEE-754 Norm für Gleitkommazahlen:
Exponent ganzzahlig, 1 ≤ Betrag der Mantisse < 2
Kein Zweierkomplement, sondern Betrag/Vorzeichendarstellung für Mantisse
Einfache Genauigkeit (single precision): 23 Bit Mant., 8 Bit Exp, 1 Bit Vorzeichen
Doppelte Genauigkeit (double precision): 52 Bit Mant., 11 Bit Exp., 1 Bit
Vorzeichen
1 ≤ Betrag der Mantisse < 2 => binär zwischen 1,000...
und 1,111..
=>
1 vor Komma überflüssig (hidden one)
Umwandlung von Gleitkommazahlen ins binäre IEEE-754 Format
Gegeben: ± M 2
E, 1 ≤ M < 2 , -126 ≤ M ≤ 127
IEEE -754: V=Vorzeichenbit (0 = positiv, 1 = negativ)
Mantisse = vorzeichenlose
Darstellung von (M-1) = 0, m
1...m
23
Exponent = vorzeichenlose
Darstellung von (E+127) = e
7 e
6...
e
0
=> abgespeichert
wird ein 32 Bit Datenwort
Beispiel:
Umwandlung von 1234567,89
10 ins IEEE -754 Format
1234567,89 = 2
20,23557474 = 2
0,23557474 * 2
20 = 1,177375686 * 2
20
= 1,00101101011010000111111000110010
2 * 2
20
=> V =
0
Exponent =
20 + 127 = 10010011
2
Mantisse = ,00101101011010000111111
zurück
6.3 Multiplikation
Multiplikation von Binärzahlen
Die Multiplikation von Binärzahlen lässt sich auf die Addition und
Verschiebeoperationen zurückführen.
Die Binärdarstellung von X wird jeweils um eine Stelle nach links
geschoben. Falls die entsprechende Stelle von Y gerade 0 war, wird sie
annuliert, ansonsten addiert.
Um diese Multiplikation mit einem Rechner zu realisieren, gibt es
das sogenannte < a name="barrel-shifter"Barrel-Shifter-Multiplikationswerk. Es besteht im wesentlichen
aus AND-Gliedern und 1-Bit-Volladdierern. Die bitweise Multiplikation
entspricht gerade der logischen AND-Operation.
Sind X und Y die Input-Register mit den Bit-Stellen X(n-1),....,X(0)
bzw. Y(n-1),....,Y(0) , stellt man ein Gitter her, in dem jede Überkreuzungsstelle
X(i) mit Y(i) durch ein AND-Glied verbunden wird. Mit Volladdierern
summiert man dann die Spalten auf. Das Carry-Bit wird zeilenweise nach
links durchgegeben. Ein Überlauf in einer Zeile wird zur nächsten Spalte
addiert.
Für das Ergebnis einer Multiplikation sollte man logischerweise ein
Register vorsehen, dass doppelt so breit ist wie die Inputregister.
Die 1-Bit ALU
Zur Konstruktion einer Mehrbit-ALU genügt es, mehrere
1-Bit-ALUs nebeneinanderzuschalten.
Für die arithmetischen Operationen ist auch ein Übertrag
von einer zur nächsten Bitposition zu berücksichtigen, so dass jede
1-Bit-ALU einen zusätzlichen Eingang Carry-In und einen zusätzlichen
Ausgang Carry-Out erhalten sollte.
Angenommen, man möchte 8 verschiedene Operationen Implementieren,
so wird eine 1-Bit-ALU als Boolsche Schaltung mit 6 Eingängen realisiert
werden müssen: 3 Eingänge M,S0 und S1, um eine der 2 hoch 3 Operationen
einzustellen, ein Carry-Eingang Ci , sowie die Eingänge für die Eingabewerte
Xi und Yi. Man benötigt dagegen nur 2 Ausgänge: Si für das Ergebnis
der Operation und C(i+1) für den neuen Übertrag. Als logisches Schaltbild
erhält man:
zurück