Zahlendarstellung in den Rechnern Z1 und Z3 Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, 05.08.02 (korrigiert: 05.11.03)

Download Report

Transcript Zahlendarstellung in den Rechnern Z1 und Z3 Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, 05.08.02 (korrigiert: 05.11.03)

Zahlendarstellung in den Rechnern Z1 und Z3

Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, 05.08.02 (korrigiert: 05.11.03)

Übersicht

Zahlendarstellung (22 Bits) Decodierung Codierung Exponent (Zweierkomplement) Lesen einer Gleitpunktzahl von der Tastatur

Zahlendarstellung (22 Bits)

Jede Zahl wird als 22-Bit-Wort dargestellt.

Reihenfolge: Vorzeichen, Exponent, Mantisse.

Die Mantisse ist 15-stellig. Die führende Eins wird nicht mit abgespeichert.

Der Exponent wird im Zweierkomplement dargestellt.

Das Schema: v a 6 a 5 ... a 1 a 0 b -1 b -2 ... b -13 b -14

Decodierung

v a 6 a 5 ... a 1 a 0 b -1 b -2 ... b -13 b -14  (-1) v (1.

b -1 b -2 ... b -13 b -14 ) 2 ·2 ( a 6 a 5 ... a 1 a 0 ) 2 a 6 ·2 7 Beispiel: Die Decodierung des Bitmusters 0 1111101 11100010101101 liefert die Dezimalzahl 0.235694885253906

Das Beispiel wird nun Schritt für Schritt ausgeführt.

Decodierung

- Beispiel v a 6 a 5 ... a 1 a 0 b -1 b -2 ... b -13 b -14  (-1) v (1.

b -1 b -2 ... b -13 b -14 ) 2 ·2 ( a 6 a 5 ... a 1 a 0 ) 2 a 6 ·2 7 0 1111101 11100010101101  + (1.

11100010101101 ) 2 · 2 ( 1111101 ) 2 1 ·2 7 Nebenrechnung: ( 1111101 ) 2 1 ·2 7 = 2 6 + 2 5 + 2 4 + 2 3 + 2 2 + 2 0 2 7 = 125 - 128 = - 3 Das Ergebnis wird hier eingefügt

Decodierung

- Beispiel v a 6 a 5 ... a 1 a 0 b -1 b -2 ... b -13 b -14  (-1) v (1.

b -1 b -2 ... b -13 b -14 ) 2 ·2 ( a 6 a 5 ... a 1 a 0 ) 2 a 6 ·2 7 0 1111101 11100010101101  + (1.

11100010101101 ) 2 ·2 -3 = (0.00111100010101101) 2 = 2 -3 + 2 -4 + 2 -5 + 2 -6 + 2 -10 + 2 -12 + 2 -14 + 2 -15 + 2 -17 = 0.235694885253906 (Das Ergebnis)

Codierung des Exponenten

Zweierkomplement Der Wertebereich des Exponenten geht von -64 bis 63.

Der Bereich der positiven Zahlen geht von 0000000  0 bis 0111111  63.

Der Bereich der negativen Zahlen geht von 1000000  64 - 2 7 = 64 - 128 = -64 bis 1111111  127 - 2 7 = 127 - 128 = -1.

Codierung des Exponenten

Zweierkomplement Positive Zahlen werden unmittelbar in die Dualzahl darstellung codiert.

Zu negativen Zahlen wird erst der Wert 128 addiert. Das Ergebnis wird in die Dualzahldarstellung über tragen.

Jede Zahl mit dem Exponenten -64 wird als Null interpretiert. Und jede Zahl mit dem Exponenten 63 gilt als Unendlich.

Codierung

Lesen einer Gleitpunktzahl von der Tastatur Eingegeben wird die Zahl 2998 ·10 Arbeitsschritte: -1 (Lichtge schwindigkeit in Meter pro Mikrosekunde). Die 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

-1 Schritt 2   10 Nebenrechnung: R mit (0010) 2 multiplizieren R mit (1000) 2 multiplizieren Werte addieren Register R

x xxxxxxx 00000000000010 x xxxxxxx 00000000000100 x xxxxxxx 00000000010000 x xxxxxxx 00000000010100

Das Ergebnis wird nun hier eingefügt

Eingabe der Zahl 2998 ·10

-1 Schritt 2   10 + 9  10 + 9  10 + 8 Register R

x xxxxxxx 00000000000010 x xxxxxxx 00000000010100 x xxxxxxx 00000000011101 x xxxxxxx 00000100100010 x xxxxxxx 00000100101011 x xxxxxxx 00101110101110 x xxxxxxx 00101110110110

Normalisierung: = (1011) 2 : Führende 1 „nach links herausschieben“ und dann den Dezimalpunkt um 14 Stellen nach links verrücken liefert die interne Darstellung von 2998 mit dem Exponenten 14-3 = 11

0 0001011 01110110110000

Eingabe der Zahl 2998 ·10

-1 Schritt 2   10 + 9  10 + 9  10 + 8 Normalisieren Jetzt steht die Zahl 2998 im Register.

Register R

x xxxxxxx 00000000000010 x xxxxxxx 00000000010100 x xxxxxxx 00000000011101 x xxxxxxx 00000100100010 x xxxxxxx 00000100101011 x xxxxxxx 00101110101110 x xxxxxxx 00101110110110 0 0001011 01110110110000

Eingabe der Zahl 2998 ·10

-1 Schritt 2998   10 -1 Register R

0 0001011 01110110110000

Nebenrechnung Für die Multiplikation mit 10 -1 wird folgende Beziehung genutzt: 10 -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.

Eingabe der Zahl 2998 ·10

-1 Schritt 2998   10 -1 Register R

0 0001011 01110110110000

Dieses Programm wird nun ausgeführt  2 -4

0 0000111 01110110110000

 (1+2 -1 ) Mantisse  Mantisse  1 2 -1 Mantisse  (1+2 -1 ) Mantisse normalisieren

2 1

(

·

( ( (

1.01110110110000

0.10111011011000

10.00110010001000

1.00011001000100

) ) ) ) 2 2 2 2

Ergebnis in die Zahlendarstellung übernehmen

Eingabe der Zahl 2998 ·10

-1 Schritt 2998   10 -1 Register R

0 0001011 01110110110000

Dieses Programm wird nun ausgeführt  2 -4

0 0000111 01110110110000

   (1+2 (1+2 (1+2 -1 -4 -8 ) ) )

0 0 0 0001000 0001000 0001000 00011001000100 00101010101000 00101011110011

Das Ergebnis wird hier eingefügt

Eingabe der Zahl 2998 ·10

-1 Schritt 2998   10 -1 Register R

0 0001011 01110110110000 0 0001000 00101011110011

Jetzt steht die Zahl

299.796875

gewünschte Resultat.

im Register R. Das ist - zumindest näherungsweise - das

Zahlendarstellung in den Rechnern Z1 und Z3 Ende der Demonstration