Zahlendarstellung in den Zahlendarstellung in den
Rechnern Z1 und Z3 Rechnern Z1 und Z3
Timm Grams Timm Grams
Fachhochschule Fulda Fachhochschule Fulda
Fachbereich Elektrotechnik und Fachbereich Elektrotechnik und
Informationstechnik Informationstechnik
© Timm Grams, Fulda, 05.08.02 (korrigiert:
© Timm Grams, Fulda, 05.08.02 (korrigiert: 05.11.03)05.11.03)
Übersicht Übersicht
Zahlendarstellung (22 Bits) Zahlendarstellung (22 Bits)
Decodierung Decodierung
Codierung Codierung
Exponent (Zweierkomplement) Exponent (Zweierkomplement)
Lesen einer Gleitpunktzahl von der Tastatur Lesen einer Gleitpunktzahl von der Tastatur
v v a
6a
5... a
1a
0b
-1b
-2... b
-13b
-14Zahlendarstellung (22 Bits) Zahlendarstellung (22 Bits)
Jede Zahl wird als 22-Bit-Wort dargestellt.
Jede Zahl wird als 22-Bit-Wort dargestellt.
Reihenfolge: Vorzeichen, Exponent, Mantisse.
Reihenfolge: Vorzeichen, Exponent, Mantisse.
Die Mantisse ist 15-stellig. Die führende Eins wird Die Mantisse ist 15-stellig. Die führende Eins wird nicht mit abgespeichert.
nicht mit abgespeichert.
Der Exponent wird im Zweierkomplement Der Exponent wird im Zweierkomplement dargestellt.
dargestellt.
Das Schema:
Das Schema:
Decodierung Decodierung
(-1) (-1)
vv(1. (1. b b
-1-1b b
-2-2... ... b b
-13-13b b
-14-14) )
2 2·2 ·2
((aa66aa55 ... ... aa11aa00))2 2 - - aa6 6·2·277v v a
6a
5... a
1a
0b
-1b
-2... b
-13b
-14Beispiel:
Beispiel:
Die Decodierung des Bitmusters Die Decodierung des Bitmusters 0 0 1111101 1111101 11100010101101 11100010101101
liefert die Dezimalzahl liefert die Dezimalzahl
0.235694885253906 0.235694885253906
Das Beispiel wird nun Schritt für Schritt ausgeführt.
Das Beispiel wird nun Schritt für Schritt ausgeführt.
Decodierung
Decodierung - Beispiel - Beispiel
(-1) (-1)
vv(1. (1. b b
-1-1b b
-2-2... ... b b
-13-13b b
-14-14) )
2 2·2 ·2
((aa66aa55 ... ... aa11aa00))2 2 - - aa6 6·2·277v v a
6a
5... a
1a
0b
-1b
-2... b
-13b
-14Nebenrechnung:
(1111101(1111101))2 - 1- 1 ·2·277
= 2 26 6 + + 225 5 + + 224 4 + + 223 3 + + 222 2 + + 220 0 - - 2277
= 125 - 128= 125 - 128
= - 3= - 3
0 0 1111101 1111101 11100010101101 11100010101101
+ + (1.11100010101101 (1. 11100010101101 ) )
22· 2 2
((11111011111101))2 2 - - 11·2·277Das Ergebnis wird Das Ergebnis wird
hier eingefügt hier eingefügt
Decodierung
Decodierung - Beispiel - Beispiel
(-1) (-1)
vv(1. (1. b b
-1-1b b
-2-2... ... b b
-13-13b b
-14-14) )
2 2·2 ·2
((aa66aa55 ... ... aa11aa00))2 2 - - aa6 6·2·277v v a
6a
5... a
1a
0b
-1b
-2... b
-13b
-140 0 1111101 1111101 11100010101101 11100010101101
+ + (1.11100010101101 (1. 11100010101101 ) )
22· 2 2
-3-3= (0.00111100010101101)
= (0.00111100010101101)
22= 2 = 2
-3-3+ 2 2
-4-4+ 2 2
-5-5+ 2 2
-6-6+ 2 2
-10-10+ 2 2
-12-12+ 2 2
-14-14+ 2 2
-15-15+ 2 2
-17-17= = 0.235694885253906 0.235694885253906 (Das Ergebnis) (Das Ergebnis)
Codierung des Exponenten Codierung des Exponenten
Zweierkomplement Zweierkomplement
Der Wertebereich des Exponenten geht von -64 Der Wertebereich des Exponenten geht von -64 bis 63.
bis 63.
Der Bereich der positiven Zahlen geht von Der Bereich der positiven Zahlen geht von
0000000
0000000 0 bis
0111111
0111111 63.
Der Bereich der negativen Zahlen geht von 1000000
1000000 64 - 27 = 64 - 128 = -64 bisbis
1111111
1111111 127 - 27 = 127 - 128 = -1.
Positive Zahlen werden unmittelbar in die Dualzahl- Positive Zahlen werden unmittelbar in die Dualzahl-
darstellung codiert.
darstellung codiert.
Zu negativen Zahlen wird erst der Wert 128 addiert.
Zu negativen Zahlen wird erst der Wert 128 addiert.
Das Ergebnis wird in die Dualzahldarstellung über- Das Ergebnis wird in die Dualzahldarstellung über-
tragen.
tragen.
Jede Zahl mit dem Exponenten -64 wird als Null Jede Zahl mit dem Exponenten -64 wird als Null
interpretiert. Und jede Zahl mit dem Exponenten 63 interpretiert. Und jede Zahl mit dem Exponenten 63
gilt als Unendlich.
gilt als Unendlich.
Codierung des Exponenten Codierung des Exponenten
Zweierkomplement
Zweierkomplement
Codierung Codierung
Lesen einer Gleitpunktzahl von der Tastatur Lesen einer Gleitpunktzahl von der Tastatur Eingegeben wird die Zahl 2998 ·
Eingegeben wird die Zahl 2998 ·10
-1(Lichtge- schwindigkeit in Meter pro Mikrosekunde). Die Arbeitsschritte:
Nacheinander werden die Ziffern der Zahl 2998 übernommen.
Gespeichert wird die Ganzzahl in einem der 22-Bit-Register (R1 oder R2). Es wird im Folgenden R genannt.
Die Ganzzahl wird in die normalisierte Darstellung überführt.
Der Exponent wird berücksichtigt.
(Hier geht es um‘s Prinzip. Absolute Detailtreue - insbesondere was die Registerbelegung angeht - ist nicht angestrebt.)
Eingabe der Zahl 2998 ·10 Eingabe der Zahl 2998 ·10 -1 -1
Schritt
Schritt Register R Register R
2 2 xxxxxxxxxxxxxxxx0000000000001000000000000010
1010
Nebenrechnung:
Nebenrechnung:
R mit (0010)
R mit (0010)2 2 multiplizieren xxxxxxxxxxxxxxxx0000000000010000000000000100 R mit (1000)
R mit (1000)2 2 multiplizieren xxxxxxxxxxxxxxxx0000000001000000000000010000 Werte addieren
Werte addieren xxxxxxxxxxxxxxxx0000000001010000000000010100 Das Ergebnis wird
Das Ergebnis wird nun hier eingefügt nun hier eingefügt
Eingabe der Zahl 2998 ·10 Eingabe der Zahl 2998 ·10 -1 -1
+ 9+ 9 xxxxxxxxxxxxxxxx0000000001110100000000011101
1010 xxxxxxxxxxxxxxxx0000010010001000000100100010 + 9+ 9 xxxxxxxxxxxxxxxx0000010010101100000100101011
10 10 xxxxxxxxxxxxxxxx0010111010111000101110101110 + 8+ 8 xxxxxxxxxxxxxxxx0010111011011000101110110110 Normalisierung:
Normalisierung: Führende 1 „nach links herausschieben“ und Führende 1 „nach links herausschieben“ und dann den Dezimalpunkt um 14 Stellen nach links verrücken dann den Dezimalpunkt um 14 Stellen nach links verrücken
liefert die interne Darstellung von 2998 mit dem Exponenten 14- liefert die interne Darstellung von 2998 mit dem Exponenten 14- 3 = 11 = (1011)
3 = 11 = (1011)22:: 00001011000010110111011011000001110110110000
Schritt
Schritt Register R Register R
2 2 xxxxxxxxxxxxxxxx0000000000001000000000000010
1010 xxxxxxxxxxxxxxxx0000000001010000000000010100
Eingabe der Zahl 2998 ·10 Eingabe der Zahl 2998 ·10 -1 -1
+ 9+ 9 xxxxxxxxxxxxxxxx0000000001110100000000011101
1010 xxxxxxxxxxxxxxxx0000010010001000000100100010 + 9+ 9 xxxxxxxxxxxxxxxx0000010010101100000100101011
1010 xxxxxxxxxxxxxxxx0010111010111000101110101110 + 8+ 8 xxxxxxxxxxxxxxxx0010111011011000101110110110 Normalisieren
Normalisieren 00001011000010110111011011000001110110110000 Jetzt steht die Zahl 2998 im Register.
Jetzt steht die Zahl 2998 im Register.
Schritt
Schritt Register R Register R
2 2 xxxxxxxxxxxxxxxx0000000000001000000000000010
1010 xxxxxxxxxxxxxxxx0000000001010000000000010100
Eingabe der Zahl 2998 ·10 Eingabe der Zahl 2998 ·10 -1 -1
Nebenrechnung Nebenrechnung
Für die Multiplikation mit
Für die Multiplikation mit 10-1 wird folgende Beziehung genutzt: wird folgende Beziehung genutzt:
1010-1-1 = (0.000110011001100110011...)2
(0.00011001100110011)2
= 2-4·(1.1)2·(1.0001)2·(1.00000001)2
= 2-4 ·(1+2-1) ·(1+2-4) ·(1+2-8)
Die Multiplikation mit 10-1 läuft also darauf hinaus, den Registerin- halt nacheinander mit 2-4, 1+2-1, 1+2-4 und 1+2-8 zu multiplizieren.
Schritt
Schritt Register R Register R
2998
2998 00001011000010110111011011000001110110110000
1010-1-1
Eingabe der Zahl 2998 ·10 Eingabe der Zahl 2998 ·10 -1 -1
Dieses Programm wird nun ausgeführt Dieses Programm wird nun ausgeführt
2-4 00000111000001110111011011000001110110110000
(1+2-1)
Mantisse
Mantisse 1 (1.011101101100001.01110110110000))22 Mantisse
Mantisse 2-1 ( 0.101110110110000.10111011011000))22 Mantisse
Mantisse (1+2-1) ( 10.0011001000100010.00110010001000))22 Mantisse normalisieren
Mantisse normalisieren 2211··(1.000110010001001.00011001000100))22
Schritt
Schritt Register R Register R
2998
2998 00001011000010110111011011000001110110110000
1010-1-1
Ergebnis in die Zahlendarstellung Ergebnis in die Zahlendarstellung
übernehmen übernehmen
Dieses Programm wird nun ausgeführt Dieses Programm wird nun ausgeführt
2-4 00000111000001110111011011000001110110110000
(1+2-1) 00001000000010000001100100010000011001000100
Eingabe der Zahl 2998 ·10 Eingabe der Zahl 2998 ·10 -1 -1
Schritt
Schritt Register R Register R
2998
2998 00001011000010110111011011000001110110110000
1010-1-1
(1+2-4) 00001000000010000010101010100000101010101000
(1+2-8) 00001000000010000010101111001100101011110011 Das Ergebnis wird Das Ergebnis wird
hier eingefügt hier eingefügt
Eingabe der Zahl 2998 ·10 Eingabe der Zahl 2998 ·10 -1 -1
Schritt
Schritt Register R Register R
2998
2998 00001011000010110111011011000001110110110000
1010-1-1 00001000000010000010101111001100101011110011