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 b-1b-2 ... b-13b-14 a6a5 ... a1a0
Decodierung v b-1b-2 ... b-13b-14 a6a5 ... a1a0 (-1)v (1.b-1b-2 ... b-13b-14)2 ·2(a6a5 ... a1a0)2 - a6 ·27 Beispiel: Die Decodierung des Bitmusters 0111110111100010101101 liefert die Dezimalzahl 0.235694885253906 Das Beispiel wird nun Schritt für Schritt ausgeführt.
Decodierung - Beispiel v b-1b-2 ... b-13b-14 a6a5 ... a1a0 (-1)v (1.b-1b-2 ... b-13b-14)2 ·2(a6a5 ... a1a0)2 - a6 ·27 0111110111100010101101 + (1.11100010101101)2 ·2(1111101)2 - 1 ·27 Nebenrechnung: (1111101)2 - 1 ·27 = 26 + 25 + 24 + 23 + 22 + 20 - 27 = 125 - 128 = - 3 Das Ergebnis wird hier eingefügt
Decodierung - Beispiel v b-1b-2 ... b-13b-14 a6a5 ... a1a0 (-1)v (1.b-1b-2 ... b-13b-14)2 ·2(a6a5 ... a1a0)2 - a6 ·27 0111110111100010101101 + (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 - 27 = 64 - 128 = -64 1111111 127 - 27 = 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-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.)
Das Ergebnis wird nun hier eingefügt Eingabe der Zahl 2998 ·10-1 Schritt Register R 2 xxxxxxxx00000000000010 10 Nebenrechnung: R mit (0010)2 multiplizieren xxxxxxxx00000000000100 R mit (1000)2 multiplizieren xxxxxxxx00000000010000 Werte addieren xxxxxxxx00000000010100 Das Ergebnis wird nun hier eingefügt
Eingabe der Zahl 2998 ·10-1 Schritt Register R 2 xxxxxxxx00000000000010 10 xxxxxxxx00000000010100 + 9 xxxxxxxx00000000011101 10 xxxxxxxx00000100100010 + 9 xxxxxxxx00000100101011 10 xxxxxxxx00101110101110 + 8 xxxxxxxx00101110110110 Normalisierung: 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 = (1011)2: 0000101101110110110000
Eingabe der Zahl 2998 ·10-1 Schritt Register R 2 xxxxxxxx00000000000010 10 xxxxxxxx00000000010100 + 9 xxxxxxxx00000000011101 10 xxxxxxxx00000100100010 + 9 xxxxxxxx00000100101011 10 xxxxxxxx00101110101110 + 8 xxxxxxxx00101110110110 Normalisieren 0000101101110110110000 Jetzt steht die Zahl 2998 im Register.
Eingabe der Zahl 2998 ·10-1 Schritt Register R 2998 0000101101110110110000 10-1 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 Register R 2998 0000101101110110110000 10-1 Dieses Programm wird nun ausgeführt 2-4 0000011101110110110000 (1+2-1) Mantisse 1 (1.01110110110000)2 Mantisse 2-1 ( 0.10111011011000)2 Mantisse (1+2-1) ( 10.00110010001000)2 Mantisse normalisieren 21·(1.00011001000100)2 Ergebnis in die Zahlendarstellung übernehmen
Das Ergebnis wird hier eingefügt Eingabe der Zahl 2998 ·10-1 Schritt Register R 2998 0000101101110110110000 10-1 Dieses Programm wird nun ausgeführt 2-4 0000011101110110110000 (1+2-1) 0000100000011001000100 (1+2-4) 0000100000101010101000 (1+2-8) 0000100000101011110011 Das Ergebnis wird hier eingefügt
Eingabe der Zahl 2998 ·10-1 Schritt Register R 2998 0000101101110110110000 10-1 0000100000101011110011 Jetzt steht die Zahl 299.796875 im Register R. Das ist - zumindest näherungsweise - das gewünschte Resultat.
Zahlendarstellung in den Rechnern Z1 und Z3 Ende der Demonstration