Logarithmen & Gleitkommazahlen


Inhalt dieser Seite

  1. Vorbemerkungen
  2. Logarithmen
    2.1   Dekadische Logrithmen
    1. Grundlagen
    2. Logarithmentafeln
    2.2   Rechenschieber
    1. Beschreibung der Skalen
    2. Multiplikation und Division
    3. Quadrate, Kuben, Logarithmen
      und Winkelfunktionen
  3. Gleitkommazahlen
    3.1   Bezeichnungen und deren Wildwuchs
    1. Gleitkommazahl oder was sonst?
    2. Significand oder Mantisse?
    3. Normiert oder normalisiert?
  1. Gleitkommazahlen (Fortsetzung)
    3.2   Dezimalsystem
    3.3   Rechenverfahren
    1. Arithmetische Operationen
    2. Genauigeitsbetrachtungen
    3. Besondere Zahlenwerte
    3.4   Binärsystem
    1. Die Z3 von Konrad Zuse
    2. Der IEEE Standard 754
    3. Die NPX von Intel
  2. Schlussbetrachtungen
  3. Quellen
    Weitere Navigation

1. Vorbemerkungen

Vor der Erfindung des Taschenrechners waren die tabellierten dekadischen Logarithmen (zur Basis 10) sowie der Rechenschieber für mehr als 100 Jahre anerkannte und allgemein verbreitete Rechenhilfsmittel. Beides gehörte zum Lehrstoff der Realschule und des Gymnasiums (10. Klasse bzw. Untersekunda) und war beim Studium und späteren Beruf in technischen Fächern unverzichtbar, solange die Genauigkeit von 3 bzw. 4 Dezimalstellen ausreichte. Da der Mikroprozessor und Taschenrechner erst erfunden wurden, als ich bereits Ingenieur war, habe ich in meinen Klausuren und Abschlussarbeiten einschließlich der Dissertation bis Mitte 1974 noch alle Zahlenwerte mit dem Rechenschieber ermittelt.

Nur bei umfangreichen Berechnungen oder wenn eine höhere Genauigkeit erforderlich war, konnten wir das Rechenzentrum der Hochschule im Offline-Betrieb nutzen, sofern diese 'teure' Rechenzeit aus einem Projekt finanziert wurde. Außerdem war dieser Betriebsmodus äußerst zeitaufwendig, denn man gab seinen Karteikasten mit dem in Lochkarten gestanzten Programm im Rechenzentrum ab und konnte ihn nach dem Probelauf mit den Fehlermeldungen wieder abholen. So ein Änderungsdurchgang dauerte üblicherweise einen Tag, wenn ansonsten alles gutging. Online-Betrieb, bei dem man vor einem Terminal sitzt und eine Art Experimental-Software nach einem Trial-and-Error-Verfahren im Dialog erstellt, war seinerzeit den normalen Sterblichen kaum zugänglich, und den Studenten schon gar nicht.

Obwohl heute Taschenrechner und PCs die Rechenarbeit geradezu revolutioniert haben, sind dadurch einige Kenntnisse und Fertigkeiten auf der Strecke geblieben. So lieferte der Rechenschieber nur die Ziffernfolge des Ergebnisses, und dessen Benutzer war gezwungen, sich durch den sog. Stellenüberschlag im Kopf oder durch Nebenrechnung Rechenschaft über Kommastellung bzw. Größenordnung (Zehnerpotenz) abzulegen, bevor er ein gültiges Ergebnis bekam. Beim Rechnen mit Logarithmen, das etwa eine Dezimalstelle genauer war, wurde die Zehnerpotenz als Kennziffer der Logarithmen mitgeführt. Dadurch stimmte zwar die Größenordnung des Ergebnisses, aber beim Interpolieren in den Logarithmentafeln war einiges an Kopfrechnerei erforderlich, wodurch dieses Verfahren bei aufkommender Hektik durchaus fehleranfällig wurde. Deshalb sehne ich mich keineswegs nach diesen Zeiten zurück, aber es schadet auch nichts, wenn man nicht alles vergisst, was man einmal gelernt hat, weil man es damals brauchte und auch aus dem Effeff konnte.   [^ Inhalt]

 
2. Logarithmen

Wie bereits erwähnt, waren die tabellierten dekadischen Logarithmen (zur Basis 10) vor der Erfindung der Taschenrechner und PCs ein anerkanntes und verbreitetes Rechenhilfsmittel. Diese Eigenschaft ergibt sich aus den für Potenzen und Logarithmen gültigen Beziehungen, mit denen man seinerzeit Rechenverfahren entscheidend vereinfachen konnte. Sofern die damit mögliche Genauigkeit ausreicht, lassen sich mit Logarithmen folgende Rechenschritte einfacher und, bei entsprechender Übung, auch schneller ausführen als mit schriftlicher Rechnung:

  1. Multiplikation durch Addition von Logarithmen
  2. Division durch Subtraktion von Logarithmen
  3. Potenzbildung durch Multiplikation: Logarithmus der Basis × Exponent
  4. Wurzelziehen durch Division: Logarithmus des Radikanden / Wurzelexponent

Selbstverständlich mussten vor der Rechnung die Logarithmen der Operanden ermittelt und nach der Rechnung der Logarithmus des Ergebnisses in den gewünschten Zahlenwert (Numerus) zurückgewandelt werden. Das erfolgte üblicherweise mit den im folgenden Kapitel beschriebenen Logarithmentafeln.

Die beiden Grundrechenarten Addition und Multiplikation haben nur je eine Umkehrung (Subtraktion bzw. Division), weil die beiden Summanden bzw. die beiden Faktoren miteinander vertauschbar sind. Das ist bei der Potenzrechnung nicht der Fall, weil in der Potenz

c = b a

die Basis b mit dem Exponenten a nicht vertauscht werden kann. Deshalb hat die Potenzrechnung zwei Umkehrungen, je nachdem, ob die Basis b oder der Exponent a gesucht wird, wenn die beiden anderen Größen bekannt sind. Dann erhält man die Basis b durch Radizieren (Wurzelziehen) und den Exponenten a durch Logarithmieren:

b = a-te Wurzel(c) bzw. a = logb(c)

Da das Umrechnen von einem Zahlenwert (Numerus) c in den zugehörigen Logarithmus a und zurück vor der Ära der heutigen Taschenrechner aufwendig war, wurde das mit sog. Logarithmentafeln durchgeführt, in denen die Logarithmen für eine bestimmte Basis b tabelliert waren. Für exponentielle Ausgleichsvorgänge in der Natur hat die Eulersche Zahl e = 2,71828182846 als Basis gemeinsam mit den natürlichen Logarithmen eine besondere Bedeutung, zum Rechnen im Dezimalsystem sind die dekadischen Logarithmen mit der Basis 10 besonders geeignet, und in der Informationstheorie wird der binäre Logarithmus mit der Basis 2 verwendet. Deshalb gelten für diese drei Logaritmen die folgenden abgekürzten Funktionsnamen

loge c  = ln c (Logarithmus naturalis, natürlicher Logarithmus),
log10 c = lg c (dekadischer Logarithmus), auf Taschenrechnern häufig auch log, und
log2 c  = ld c (Logarithmus dualis, binärer Logarithmus),

um die komplizierte Schreibweise mit der tiefgestellten Basis zu vereinfachen. In der Mathematik wird die Funktion 'log' jedoch meistens verwendet, wenn die angegebenen Gleichungen für eine beliebige (jedoch konstante) Basis gelten. An den folgenden Gleichungen der Potenzrechnung sieht man, weshalb die o.a. vier Regeln gelten.

  1. c · d = b log c · b log d = b log c + log d   (Multiplikation)
  2. c / d = b log c / b log d = b log c – log d   (Division)
  3. c d = (b log c ) d = b (log c) · d              (Potenzbildung)
  4. dc = (b log c ) 1/d = b (log c) / d          (Wurzelziehen)

Es bleibt nur nachzutragen, wie man den Logarithmus zu einer Basis herausbekommt, für die keine Tabelle vorliegt bzw. die nicht auf dem Taschenrechner vorgegeben ist. Das kann z.B. die Basis 2 sein, bei der schon etliche Studenten in der Klausur schier verzweifelt sind. Für die beiden Basiswerte 10 und 2 mit den zugehörigen Logarithmen gilt

c = 10 lg c = 2 ld c = 10 lg 2 · ld c   ––›   lg c = lg 2 · ld c   ––›   ld c = lg c / lg 2

Allgemein kann der Logarithmus a einer Zahl c zu einer bestimmten Basis b berechnet werden, indem man die Logarithmen von c und b zu derselben beliebigen Basis durcheinander dividiert.

logb c = log c / log b

[^ Inhalt]

 
2.1 Dekadische Logarithmen

a) Grundlagen

Wie bereits dargelegt, haben dekadische Logarithmen die Basis b = 10. Damit ist

c = b a = 10 a   bzw.   a = logbc = lg c     ––›     N = 10 L   bzw.   L = lg N

Dabei ist c der Numerus N und a der Logarithmus L. Die Vor- und Nachkommastellen des Logarithmus werden getrennt voneinander betrachtet. Die Vorkommastelle von L heißt Kennziffer und die Nachkommastellen heißen Mantisse (für N ≥ 1), z.B.

lg 38 = 1,5798   mit   1 = Kennziffer,   5798 = Mantisse

Da das Dezimalsystems und die dekadischen Logarithmen die gemeinsame Basis B = 10 haben, unterscheiden sich Zahlen N mit derselben Ziffernfolge (z.B. 315; 31,5; 3,15; 0,315) nur durch die Kennziffer K (2; 1; 0; –1), haben jedoch dieselbe Mantisse M (4983). Die Kennziffern lassen sich leicht bestimmen, so daß in einer Logarithmentafel nur die Mantissen tabelliert werden müssen. Die Kennziffer von L entspricht jeweils der nächsten Zehnerpotenz (ZP) unterhalb von N, z.B.

    Numerus     Ziffern & ZP     Kennziffer     Mantisse     Logarithmus  
3 ,15   = 3,15 · 100 0 4983 0,4983    
31 ,5   = 3,15 · 101 1 4983 1,4983    
  315   = 3,15 · 102 2 4983 2,4983    
usw.
 
0 ,315   = 3,15 · 10–1 –1   4983 0,4983–1
0 ,0315   = 3,15 · 10–2 –2   4983 0,4983–2
0 ,00315     = 3,15 · 10–3 –3   4983 0,4983–3
usw.

Nach diesen Beispielen entspricht die Kennziffer dem Zehnerexponenten, wenn der Numerus auf eine Vorkommastelle mit der passenden Zehnerpotenz umgeformt wird. Ohne diese Umformung ergibt sich die Kennziffer nach der Regel:

Wie aus den angegebenen Beispielen ersichtlich ist, werden negative Kennziffern hinter die Mantisse geschrieben (lg 0,315 = 0,4983 – 1), d.h. ein negativer Logarithmus wird keinesfalls in Betrag mit Vorzeichen umgerechnet (also niemals: lg 0,315 = – 0,5017). Das wäre zwar mathematisch richtig, aber die zu der Ziffenfolge des Numerus gehörende Mantisse wäre dann nicht mehr als solche erkennbar! Das würde unnötige Umrechnungen oder eine zweite Tabelle für negative Logarithmen erfordern. Deshalb ist die Mantisse in jedem Fall der nicht-negative Bruchteil eines dekadischen Logarithmus!   [^ Inhalt]

 
b) Logarithmentafeln

Im Schulunterricht waren bis weit in die zweite Hälfte des 20. Jahrhunderts vierstellige Logarithmentafeln wie [1] gebräuchlich, die in einem DIN-A5-Heft auf zwei Seiten paßten. Gemeinsam mit Tabellen der Winkelfunktionen und ihrer Logarithmen, verschiedenen anderen Tabellen und einem Anhang mit mathematischen Formeln umfasste ein solches Büchlein als ständiger Begleiter im Mathematikunterricht etwa 25 bis 45 Seiten. Auf den o.a. beiden Seiten waren für dreistellige Numeri von 100 bis 999 die 900 zugehörigen vierstelligen Mantissen tabelliert. Die ersten beiden Ziffern des Numerus bezeichnen die Reihe und die letzte Ziffer des Numerus bezeichnet die Spalte einer solchen Logarithmentafel, wie in folgendem Schema beispielhaft angegeben.

      N  |   0     1     2     3     4  |   5     6     7     8     9  | D.
     10  | 0000  0043  0086  0128  0170 | 0212  0253  0294  0334  0374 | 40
     11  | 0414  0453  ...
     12  | 0792  ...
      :  :    :                         :                      :     : :  :
     17  |                              |             ...   2504  2529 | 24
      :  :    :                         :                      :     : :  :
     99  | 9956  9961  9965  9969  9974 | 9978  9983  9987  9991  9996 |  4

Darin kann die Mantisse eines dreistelligen Numerus direkt abgelesen werden, z.B. für N = 178 ist M = 2504. Für einen Numerus mit drei Vorkommastellen ist die Kennziffer K = 3 – 1 = 2 und damit der Logarithmus L = 2.2504. Entsprechend der in [1] empfohlenen Regel wird die Rechnung mit Logarihmen übersichtlicher, wenn die Dezimalstellen im Numerus durch ein Dezimalkomma und im Logarithmus durch einen Dezimalpunkt abgetrennt werden. Dadurch kann man ohne weitere Bezeichnung sofort erkennen, ob es sich bei einem Zahlenwert um einen Numerus oder einen Logarithmus handelt.

Ist der Numerus vierstellig, muß zwischen zwei benachbarten Mantissen linear interpoliert werden. Umgekehrt muß die vierte Stelle des Numerus durch Interpolation ermittelt werden, wenn die Mantisse, die sich bei einer Rechnung ergeben hat, nicht in der Tabelle steht. Das kann zwar mit Hilfe einer Proportionaltafel geschehen, die aus dem Heft mit den Logarithmentafeln herausgeklappt werden kann, aber mit einer Übung geht das durch Kopfrechnen nach den folgenden Gleichungen merklich schneller.

d = (D/10)*n bzw. n = d:(D/10)
D = Tafeldifferenz zwischen zwei aufeinanderfolgenden Mantissen
d  = Differenz der interpolierten Mantisse zum unteren Wert
n  = nächste Dezimalstelle des Numerus

Zur Vereinfachung ist in der rechten Spalte D der Logarithmentafeln die Differenz von Spalte 9 der betreffenden Reihe zur Spalte 0 der nächsten Reihe angegeben. Bei der Interpolation läßt man die führenden Nullen weg und rechnet so, als wären die Mantissen vierstellige ganze Zahlen. Für das Zahlenbeispiel N = 178,1 sind die beiden relevanten Mantissen in den obigen Auszug einer Logarithmentafel eingetragen. Aus

D = 2529 – 2504 = 25   folgt aufgerundet mit
d  = (25 / 10) × 1 = 2.5 ≈ 3   die Mantisse
M = 2504 + 3 = 2507   und aus den drei Vorkommastellen von N die Kennziffer 2. Damit ist der Logarithmus
lg 178,1 = 2.2507

Wäre 2.2507 das Ergebnis einer logarithmischen Rechnung, dann gehören zur nächstkleineren Mantisse 2504 in der Tafel die ersten drei Ziffern 178 des Numerus. Die interpolierte vierte Stelle n ist mit

D = 2529 – 2504 = 25   und
d  = 2507 – 2504 =   3
n = 3 : (25/10) = 3 : 2,5 ≈ 1.   Damit ist die Ziffenfolge des Numerus 1781   und
aus der Kennziffer 2 ergibt sich das Komma nach der dritten Stelle: N = 178,1

Da die Numeri äquidistant mit einer Schrittweite von 1 tabelliert sind, verringert sich die Differenz der Mantissen innerhalb einer Dekade um den Faktor 10 : 1 von etwa 40 am Anfang auf (gerundet) 4 am Ende. Bei Addition und Subraktion von zwei gerundeten Zahlen ist eine Unsicherheit von einer Einheit in der letzten Stelle nicht zu vermeiden, z.B. 10,3 + 20,4 = 30,7. Rundet man vor der Addition, ergibt sich 10 + 20 = 30, und rundet man nach der Addition ergibt sich 31. Deshalb ist beim Rechnen mit vierstelligen Logarithmen die vierte Stelle schon um ± 1, bei längeren Rechnungen auch um ± 2 Einheiten der letzten Stelle unsicher. Für genauere Rechnungen braucht man demzufolge Tafeln mit fünf- oder noch mehrstelligen Logarithmen. Dabei sollte einem klar sein, daß jede weitere Stelle im Numerus die Logarithmentafel um den Faktor 10 vergrößert, d.h. von von 2 auf 20 Seiten für fünstellige Mantissen mit 9000 statt 900 Numeri. So hat die Sammlung fünfstelliger Tafeln [2] einen Umfang von etwa 200 Seiten gegenüber 45 Seiten des üblichen Unterrichtsheftes [1]. Aus dem folgenden Auszug fünfstelliger Logarithmen [2] lässt sich ein fünfstelliger Numerus, z.B. N = 178,12 in gleicher Weise durch Interpolation nach den oben angegeben Gleichungen bestimmen.

      N   |   0      1      2     3    ...
      :   :   :
     178  | 25042  25066  25091  ...
      :   :   :
D = 25091 – 25066 = 25   folgt (ohne Rundung) mit
d  = (25 / 10) × 2 = 5   die Mantisse
M = 25066 + 5 = 25071   und aus den drei Vorkommastellen von N die Kennziffer 2. Damit ist der Logarithmus
lg 178,12 = 2.25071

Wäre 2.25071 das Ergebnis einer logarithmischen Rechnung, dann gehören zur nächstkleineren Mantisse 25066 in der Tafel die ersten vier Ziffern 1781 des Numerus. Die interpolierte fünfte Stelle n ist mit

D = 25091 – 25066 = 25   und
d  = 25071 – 25066 =   5
n = 5 : (25/10) = 5 : 2,5 = 2.   Damit ist die Ziffenfolge des Numerus 17812   und
aus der Kennziffer 2 ergibt sich das Komma nach der dritten Stelle: N = 178,12

Die vier Rechenregeln für Multiplikation, Division, Potenzbildung und Wurzelziehen gelten für die Logarithmen zu jeder Basis b und sind bereits in dem einleitenden Absätzen von Kapitel 2 angegeben und durch die entsprechenden Gleichungen beschrieben worden. In diesem Abschnitt 2.1 b wird daher nur das Bestimmen eines dekadischen Logarithmus aus dem Numerus mit Hilfe einer Logarithmentafel erläutert sowie das Umwandeln des Rechenergebnisses vom Logarithmus in den zugehörigen Numerus. Auf detaillierte Anleitungen, wie man durch schriftliche Rechnung zwei (oder mehrere) Logarithmen addiert bzw. subtrahiert oder mit einem Exponenten multipliziert bzw. durch einen Wurzelexponenten dividiert, wird hier ganz bewusst verzichtet.   [^ Inhalt]

 
2.2 Rechenschieber (Rechenstab)

Nach der Entwicklung der Logarithmen gehen Anfänge des Rechenschiebers auf das Jahr 1622 zurück, als William Oughtred erstmals zwei kongruente logarithmische Skalen gegeneinander verschiebbar angeordnet hat. Nach etlichen Ergänzungen und Verbesserungen durch verschiedene Entwickler setzte der Franzose Victor Amédée Mannheim 1850 eine universell geeignete Skalenanordnung durch, die sich als Schulrechenschieber bewährte. In Deutschland fertigte Dennert 1872 (Firma Dennert & Pape, später Aristo) den ersten Rechenschieber. Aristo boomte nach dem Zweiten Weltkrieg als einer der größten deutschen Hersteller mit dem Bedarf an Rechenschiebern als Massenprodukt. Trotz der Entwicklung eigener Taschenrechner hat die Firma Aristo den Übergang auf diese neuen digitalen Rechner nicht geschafft und ist seit 1978 vom Markt verschwunden.

 
a) Beschreibung der Skalen

Das folgende Bild 2.2-1 zeigt als typisches Exemplar einen Aristo Scholar LL, der mich während der letzten Schuljahre und der ersten Studiensemester begleitet hat. Rechtzeitig vor den ersten Klausuren des Vorexamens habe ich ihn durch einen Aristo Studio ersetzt, mit dem durch weitere Skalen etliche Rechnungen vereinfacht und zusätzliche Berechnungen ermöglicht wurden. Um das Prinzip zu erklären, reicht jedoch der abgebildete Rechenstab völlig aus. Um Einzelheiten der Skalen besser zu erkennen, können durch Anklicken der beiden Verweise in der Bildunterschrift (› Bild mittelgroß bzw. › Bild groß) neue Popup-Fenster geöffnet werden, in denen das Bild in einem entsprechend größeren Maßstab zu sehen ist und wegen seiner Überbreite horizontal gescrollt werden kann.

Rechenstab (kleines Bild)

Bild 2.2-1 (klein): Rechenstab Aristo Scholar LL     › Bild mittelgroß     › Bild groß

Ein üblicher Rechenstab besteht aus dem Körper, der verschiebbaren Zunge und dem Läufer. Der obere und untere Teil des Körpers sind bei älteren Konstruktionen aus Holz mit Zelluloidskalen hinter der Zunge miteinander verbunden oder, wie bei den neueren Aristo-Produkten aus Kunststoff (Bild 2.2-1) an jedem Ende durch eine schmale Traverse auf der Vorderseite. Zum genauen Einstellen ist es wichtig, dass sich die Zunge einerseits ruckfrei schieben läßt, aber andererseits beim Hantieren am Läufer nicht unabsichtlich verstellt wird. Deshalb hält man den Körper beim Schieben der Zunge mit einer Hand an einer Ecke der Traverse, während man mit der anderen Hand die Zunge greift. Was man mit welcher Hand macht, hängt davon ab, nach welcher Seite die Zunge für die gewünschte Einstellung aus dem Körper herausgezogen werden muß. Nach dem Einstellen der Zunge faßt man den Körper zur Sicherheit innerhalb der Traversen an den beiden Längsseiten. Dadurch wird er leicht zusammengedrückt und die Zunge wirksam gebremst. Sofern sich die Zunge nicht (mehr) ruckfrei schieben läßt, wirkt es (wie bei den älteren Rechenschiebern aus Holz) wahre Wunder, wenn man die Gleiflächen leicht mit trockener Seife einreibt.

Von oben nach unten trägt der Rechenstab von Bild 2.2-1 folgende Skalen:

  1. Oberer Teil des Körpers
    1. L: lg x,  (Logarithmen-) Mantissenskala von 0.0 bis 1.0 linear geteilt in Schritten von 0.002
    2. K: x³,    Kubikskala logarithmisch geteilt von 1 bis 1000
      1. von 1 bis   2 in Schritten von 0,02; von 10 bis   20 in Schritten von 0,2; von 100 bis   200 in Schritten von   2
      2. von 2 bis   5 in Schritten von 0,05; von 20 bis   50 in Schritten von 0,5; von 200 bis   500 in Schritten von   5
      3. von 5 bis 10 in Schritten von 0,1;   von 50 bis 100 in Schritten von 1;    von 500 bis 1000 in Schritten von 10
    3. A: x²,    Quadratskala logarithmisch geteilt von 1 bis 100
      1. von 1 bis   2 in Schritten von 0,02; von 10 bis   20 in Schritten von 0,2
      2. von 2 bis   5 in Schritten von 0,05; von 20 bis   50 in Schritten von 0,5
      3. von 5 bis 10 in Schritten von 0,1;   von 50 bis 100 in Schritten von 1
  2. Verschiebbare Zunge
    1. B: x²,    Quadratskala logarithmisch geteilt von 1 bis 100 entsprechend Quadratskala A
    2. CI: 1/x, Reziprokskala invers logarithmisch geteilt von 10 bis 1 entsprechend inverser Grundskala D
    3. C: x,     Grundskala logarithmisch geteilt von 1 bis 10 entsprechend Grundskala D
  3. Unterer Teil des Körpers
    1. D: x,     Grundskala logarithmisch geteilt von 1 bis 10
      1. von 1 bis   2 in Schritten von 0,01
      2. von 2 bis   4 in Schritten von 0,02
      3. von 4 bis 10 in Schritten von 0,05
    2. S: sin,    Sinusskala für Winkel von 5,5° bis 90°
    3. ST: arc, Bogenskala für kleine Winkel von 0,55° bis 6°
    4. T: tan,   Tangensskala für Winkel von 5,5° bis 45°
  4. Rückseite der Zunge (durch Umdrehen der Zunge zu benutzen, im Bild nicht sichtbar)
    1. S: sin,       zweite Sinusskala für Winkel von 5,5° bis 90°
    2. LL2: e0.1x, Exponentialskala von 1,1 bis 3
    3. LL3: ex,    Exponentialskala von 2,5 bis 50000

Bei einem üblichen Rechenschieber sind die Skalen 25 cm lang, aber es gibt auch Taschenausführungen, deren Skalen mit 12,5 cm nur halb so lang sind und damit auch nur die halbe Rechengenauigkeit haben. Werte zwischen den Teilstrichen der jeweiligen Skalen werden geschätzt. Das erscheint anfangs schwierig, aber mit etwas Übung schafft man es, eine weitere Dezimalstelle zwischen etwa 1 mm voneinander entfernten Teilstrichen abzuschätzen. Das ist im unteren Bereich der Grundskalen (C, D, CI) die vierte und im oberen Bereich die dritte Dezimalstelle, denn wegen der logaritmischen Teilung (Mantissenskala linear) ist die relative Einstell- und Ablesegenauigkeit bei jedem Zahlenwert auf den Hauptskalen unverändert. Da die Quadratskalen (A, B) zwei Dekaden und die Kubikskala (K) drei Dekaden mit weniger Teilstrichen auf derselben Skalenlänge aufweisen, ist deren Genauigkeit entsprechend geringer. Deshalb sollte man möglichst die Grundskalen (C und D) benutzen, obwohl viele Aufgaben auch auf den Quadratskalen (A und B) gerechnet werden können. Der Läufer des Rechenschiebers dient hauptsächlich als Einstell- und Ablesehilfe, so dass man immer nur die Ziffernfolge auf einer Skala im Blick haben muß. Der Läufer hat zwar vier Striche, aber zunächst soll nur der lange Strich in der Läufermitte betrachtet werden, der quer über alle Skalen reicht. Im Bild ist dieser Läuferstrich auf Skalenmitte eingestellt. Das ist auf der Logarithmenskala (L) lg x = 0,5; auf der Grundskala (D) x = √10 ≈ 3,16; auf der Quadratskala (A) x² = 10 und auf der Kubikskala (K) x³ = √10³ = 103/2 ≈ 31,6. Auf die drei kurzen Läuferstriche und die übrigen Skalen wird am Schluß dieses Kapitels noch eingegangen.   [^ Inhalt]

 
b) Multiplikation und Division

Beim Rechnen mit Logarithmen bestimmt die Mantisse die Ziffernfolge des Numerus und die Kennziffer den Exponenten der Zehnerpotenz, d.h. die Kommastellung im Numerus. Daher reicht beim Rechenschieber auf den Grundskalen (C und D) eine Dekade von 1 bis 10 entsprechend dem Logarithmus (L) von 0.0 bis 1.0 aus. Statt wie bei Logarithmen mit Kennziffern zu rechnen, macht man beim Rechenschieber einen sog. Stellenüberschlag (im Kopf oder ggf. als Nebenrechnung auf einem Schmierzettel), um die Größenordnung des Ergebnisses, d.h. die Kommastellung, zu ermitteln. Mit den folgenden Beispielen werden zunächst die Multiplikation und Division dargelegt.

  1. Multiplikation = Addition von Logarithmen I
    Erstes Zahlenbeispiel: 17,8 × 5,25 = 9,35
  2. Läuferstrich auf Skala D = 178 einstellen.
  3. Zunge mit Skala C = 1 unter den Läuferstrich schieben.
  4. Läuferstrich auf Skala C = 525 einstellen.
  5. Ziffernfolge 935 auf Skala D unter dem Läuferstrich ablesen.
  6. Stellenüberschlag 20 × 5 = 100 ––› Ergebnis 93,5

Falls der zweite Faktor auf Skala C außerhalb des Bereichs von Skala D liegt, muß die Zunge nach links herausgezogen und die 10 statt der 1 unter den Läuferstrich des ersten Faktors geschoben werden.

  1. Multiplikation = Addition von Logarithmen II
    Zweites Zahlenbeispiel: 17,8 × 6,35 = 113,0
  2. Läuferstrich auf Skala D = 178 einstellen.
  3. Zunge mit Skala C = 10 unter den Läuferstrich schieben (siehe oben).
  4. Läuferstrich auf Skala C = 635 einstellen.
  5. Ziffernfolge 1130 auf Skala D unter dem Läuferstrich ablesen.
  6. Stellenüberschlag 20 × 6 = 120 ––› Ergebnis 113,0

Bei der Division muß man nicht probieren, nach welcher Seite die Zunge herausgezogen werden muß. Die Ziffernfolgen von Dividend und Divisor lassen sich auf den Skalen D bzw. C immer übereinander einstellen. Damit ist die Ziffernfolge des Quotienten je nach Zungenstellung unter der 1 oder der 10 von Skala C abzulesen.

  1. Division = Subtraktion von Logarithmen I
    Erstes Zahlenbeispiel: 55,5 : 3,20 = 17,34
  2. Läuferstrich auf Skala D = 555 einstellen.
  3. Zunge mit Skala C = 320 unter den Läuferstrich schieben.
  4. Läuferstrich auf Skala C = 1 einstellen.
  5. Ziffernfolge 1734 auf Skala D unter dem Läuferstrich ablesen.
  6. Stellenüberschlag 51 : 3 = 17 ––› Ergebnis 17,34
  1. Division = Subtraktion von Logarithmen II
    Zweites Zahlenbeispiel: 24,5 : 3,20 = 7,66
  2. Läuferstrich auf Skala D = 245 einstellen.
  3. Zunge mit Skala C = 320 unter den Läuferstrich schieben.
  4. Läuferstrich auf Skala C = 10 einstellen (siehe oben).
  5. Ziffernfolge 766 auf Skala D unter dem Läuferstrich ablesen.
  6. Stellenüberschlag 24 : 3 = 8 ––› Ergebnis 7,66

Seine Stärke zeigt der Rechenschieber bei Kettenrechnungen von abwechselnder Division und Multiplikation sowie bei Proportions- und Tabellenrechnungen. Bei Kettenrechnungen braucht man die Zwischenwerte nicht abzulesen, sondern nur mit dem Läufer zu markieren, und bei Proportions- und Tabellenrechnungen braucht man oftmals nach einem einzigen Stellenüberschlag und der richtigen Zungenstellung nur noch den Läufer zu verschieben, um ganze Wertereihen nacheinander abzulesen. Die Feinheiten dieser Technik haben heute wohl nur noch historische Bedeutung und sollen daher an dieser Stelle nicht im Detail erläutert werden. Auf einigen Rechenschiebern, z.B. beim Aristo Studio (kein Bild), gibt es außer den Grundskalen x (C und D) noch ein zweites Grundskalenpaar π x (CF und DF), bei denen das π über der 1 und der 10 von x liegt. Auf diesen verschobenen Grundskalen liegt die 1 etwa in der Mitte, und man kann das beim Multiplizieren oftmals lästige Durchschieben der Zuge weitgehend vermeiden, indem man die beiden Skalenpaare C D und CF DF auf geschickte Weise abwechselnd benutzt. Außerdem kann mit diesen Zusatzskalen nur durch Verschieben des Läufers mit π multipliziert oder duch π dividiert werden, was bei Kreisberechnungen und in der Elektrotechnik oftmals erforderlich ist. Aber auch diese Eigenschaft sei hier nur ohne ausführliche Erklärungen erwähnt.

Beim Verwenden der Reziprokskala CI (1/x) werden Multiplikation und Division vertauscht. bekanntlich kann man schreiben:

y : x  = y × 1/x     bzw.
y × x = y : (1/x)

Damit lassen sich die Multiplikations- und Divisionsbeispiele I auch auf folgende Weise rechnen:

  1. Multiplikation = Subtraktion von Logarithmen des Kehrwertes III
    Erstes Zahlenbeispiel: 17,8 × 5,25 = 17,8 : (1/5,25) = 9,35
  2. Läuferstrich auf Skala D = 178 einstellen.
  3. Zunge mit Skala CI = 525 unter den Läuferstrich schieben.
  4. Läuferstrich auf Skala CI = 1 einstellen.
  5. Ziffernfolge 935 auf Skala D unter dem Läuferstrich ablesen.
  6. Stellenüberschlag 20 × 5 = 100 ––› Ergebnis 93,5
  1. Division = Addition von Logarithmen des Kehrwertes III
    Erstes Zahlenbeispiel: 55,5 : 3,20 = 155,5 × 1/3,20 = 7,34
  2. Läuferstrich auf Skala D = 555 einstellen.
  3. Zunge mit Skala CI = 1 unter den Läuferstrich schieben.
  4. Läuferstrich auf Skala CI = 320 einstellen.
  5. Ziffernfolge 1734 auf Skala D unter dem Läuferstrich ablesen.
  6. Stellenüberschlag 51 : 3 = 17 ––› Ergebnis 17,34

Stellt man zur Multiplikation den zweiten Faktor auf der Reziprokskala CI ein, ist die Ziffernfolge des Produkts je nach Zungenstellung unter der 1 oder der 10 von Skala CI abzulesen. Dafür muß man bei der Division mit CI ausprobieren, nach welcher Seite die Zunge herauszuziehen ist, damit der Divisor noch innerhalb des Bereichs von Skala D liegt. Gut geeignet ist die Reziprokskala CI, um Kettenmultiplikationen oder -divisionen in abwechselnde Additionen und Subtraktionen von logarithmischen Strecken umzuwandeln, weil das auf einem Rechenschieber besonders einfach ist. Aber auch das soll hier nur erwähnt und nicht weiter vertieft werden.   [^ Inhalt]

 
c) Quadrate, Kuben, Logarithmen und Winkelfunktionen

Wie bereits oben erwähnt, kann man Quadrat- (A, B) und Kubikskalen (K) allein mit Hilfe des langen Läuferstrichs benutzen. Zum Quadrieren oder Berechnen der dritten Potenz stellt man den Läuferstrich auf einen Wert x der Grundskala D und kann auf Skala A x² bzw. auf Skala K x³ unmittelbar ablesen. Wegen 10² = 100 und 10³ = 1000 muß das Dezimalkomma für Werte außerhalb der Skalenbereiche auf der A-Skala um jeweils zwei Stellen bzw auf der K-Skala um jeweils drei Stellen verschoben werden für jede Stelle, die es auf der D-Skala versetzt ist. Eine zweite bzw. dritte Wurzel kann berechnet werden, indem man den Läuferstrich über dem Radikanden auf Skala A bzw. K einstellt und die Wurzel auf Skala D abliest. Für Werte außerhalb der Skalenbereiche muß man vom Radikanden für die Quadratwurzel Zweiergruppen und für die Kubikwurzel Dreiergruppen von Zehnerpotenzen abspalten, damit man den Läuferstrich in der der richtigen Hälfte von Skala A bzw. im richtigen Drittel von Skala K einstellen kann. Das Komma ist dann in der Ziffernfolge der Wurzel x gemäß dem angegebenen Stellenüberschlag anzubringen. In entsprechender Weise kann durch Benutzen der Quadrat- und Kubikskala (A und K) x3/2 = √x³ bzw. x2/3 = ³√x² durch direktes Einstellen und Ablesen unter dem Läuferstrich bestimmt werden.

Zum Numerus x auf Skala D im Bereich zwischen 1 und 10 kann die Mantisse lg x auf der Logarithmenskala L auf drei Stellen genau direkt abgelesen werden, z.B. lg 2 = 0.301. Liegt der Numerus außerhalb dieses Wertebereichs, ist die Kennziffer des Logarithmus nach den Regeln zu bestimmen, die im Abschnitt 2.1 detailliert beschrieben worden sind. Für trigonometrische Berechnungen gibt es am unteren Rand des Körpers drei Winkelskalen, bei denen einige Besonderheiten zu beachten sind.

  1. S: sin,    Sinusskala für Winkel von 5,5° bis 90°
  2. ST: arc, Bogenskala für kleine Winkel von 0,55° bis 6°
  3. T: tan,   Tangensskala für Winkel von 5,5° bis 45°

Stellt man auf der Sinusskala S einen Winkel α zwischen 5,74° und 90° ein, dann liegt x = sin α zwischen 0,1 und 1 und kann mit dieser Kommastellung direkt auf Skala D abgelesen werden. Die Sinusskala ist auch für die Bestimmung von Cosinuswerten geeignet, für die das Argument zuvor entsprechend der Gleichung

cos α = sin (90° – α)

umgewandelt werden muß. Das heißt für z.B. cos 30° ist der Winkel 90° – 30° = 60° auf der Sinusskala einzustellen. Stellt man auf der Tangensskala einen Winkel α zwischen 5,71° und 45° ein, dann liegt x = tan α zwischen 0,1 und 1 und kann mit dieser Kommastellung direkt auf Skala D abgelesen werden. Entsprechend den beiden Gleichungen

tan α = 1 / tan (90° – α)     und
cot α = 1 / tan α

können Tangenswerte von Winkeln über 45° bis 84,29° und Cotangenswerte bestimmt werden. So wird zum Ablesen von z.B. tan 60° der Winkel 90° – 60° = 30° auf der Tangensskala T eingestellt und der zugehörige Tangenswert von 1,73 auf der Reziprokskala CI abgelesen, wobei die Zunge in ihrer Nullstellung (C genau über D) stehen muß. Auf weitere Einstellbeispiele für diese Winkelfunktionen wird hier bewußt verzichtet. – Bei kleineren Winkeln im Bereich α zwischen 0,571° und 5,74° entsprechen Sinus- und Tangensfunktion in guter Näherung dem Bogenmaß und können auf der Skala ST eingestellt werden. Beide Funktionen liegen in diesem Winkelbereich zwischen 0,01 und 0,1 und können mit dieser Kommastellung direkt auf Skala D abgelesen werden. Zur Umrechnung vom Gradmaß in das Bogenmaß (180° = π) oder umgekehrt können Bogenskala ST (arc) und Grundskala D mit beliebiger Kommastellung verwendet werden. für den Stellenüberschlag gilt dann 180° = π bzw. 57,3° ≈ 1.

Damit bleibt nur noch die Bedeutung der drei kurzen Striche auf dem sog. Vierstrichläufer (Bild 2.2-1) nachzutragen. In der Technik wurde am meisten die Umrechnung Kilowatt (kW) in Pferdestärken (PS) benutzt, die vor 1970 (mit einer Übergangsfrist bis 1978) noch als gesetzliche Einheit der Leistung zugelassen war. Stellt man mit dem langen Läuferstrich auf der A-Skala einen Zahlenwert in kW ein, dann kann man unter dem kurzen Strich oben rechts auf der A-Skala den entsprechenden Wert in PS ablesen. Als Gedächtnisstütze sind die beiden Striche in diesem Bereich mit kW bzw. PS beschriftet.Ihr Abstand entspricht auf der A-Skala dem Verhältnis 1 : 1,36 (1 kW = 1,36 PS).

Der kurze Strich oben links hat auf den Quadratskalen (A und B) den Abstand π/4 = 0,785 vom langen Mittelstrich, und der kurze Strich unten rechts hat denselben absoluten Abstand zur anderen Seite. Damit liegt der lange Läuferstrich auf den Grundskalen um √(π/4) = 0,886 unter dem beteffenden kurzen Strich. Zufällig hat die Dichte von Flußstahl mit ρ = 7,85 g/cm³ bzw. 7,85 kg/dm³ dieselbe Ziffernfolge wie π/4. Damit können folgende Rechnungen für Kreisflächen und Gewicht (Masse) von runden Stahlstangen auf folgende trickreiche Weise vereinfacht werden.

F = π/4 × d ²     Kreisfläche = Querschnittsfläche von Rundstangen
m = V × ρ = π/4 × d ² × L × ρ = π/4 × d ² × ρ × L     Masse = Masse pro Längeneinheit × Länge     mit
m/L = π/4 × d ² × ρ     als Masse pro Längeneinheit einer Rundstange (bei Flußstahl ρ = 7,85 kg/dm³).

Schiebt man den langen Läuferstrich auf Skala D über den Kreisdurchmesser d, kann man unter dem kurzen Strich oben links auf Skala A die Ziffernfolge der Kreisfläche F ablesen. Stellt man stattdessen auf Skala D den kurzen Strich unten rechts auf den Durchmesser d, dann ist die Kreisfläche F auf Skala A unter dem langen Läuferstrich abzulesen. Der Wert unter dem kurzen Läufertsrich oben links ist dann auf Skala A die Ziffernfolge der Masse pro Längeneinheit m/L einer Rundstange aus Flußstahl. Selbstverständlich muß durch den unverzichtbaren Stellenüberschlag die Position des Dezimalkommas und die Masseneinheit festgelegt werden.

Für Rechenaufgaben in meinem Beruf habe ich noch bis zum Abschluß meiner Dissertation Mitte 1974 ausschließlich meinen Rechenschieber benutzt. Nach meiner Doktorprüfung im Dezember 1974 habe ich zu Weihnachten den ersten wissenschaftlicher Taschenrechner angeschafft. Das war ein SR-50 von Texas Instruments zum damaligen "Schleuderpreis" von 520 DM, denn die 1½ Monatsgehälter für ein vergleichbares Gerät von Hewlett-Packard konnte ich mir seinerzeit nicht leisten. Sinnigerweise bedeutet die Typenbezeichnung SR = slide rule (= Rechenschieber), d.h. mit diesem Taschenrechner konnte man alle Rechenarten eines Rechenschiebers (und noch ein paar weitere) ausführen [4]. Die bisher unvorstellbare Rechengenauigkeit betrug 13 Dezimalstellen, von denen 10 angezeigt und die letzten 3 bei der internen Rechnung für die erforderliche Rundung mitgeführt wurden. Durch den zuvor unvorstellbaren Wertebereich von 10 – 99 bis 10 + 99 war der beim Rechenstab erforderliche Stellenüberschlag nicht mehr erforderlich.   [^ Inhalt]

 
3. Gleitkommazahlen

Die meisten heutigen Taschenrechner zeigen Zahlenwerte als Gleitkommazahlen an, wenn sie für das vorhandene Anzeigefeld zu groß oder zu klein sind, um noch mit einem festen Komma dargestellt zu werden. Dafür wird diese Zahl auf eine Vorkommastelle und die zugehörige Zehnerpotenz normiert. Dabei werden alle signifikanten Nachkommastellen (ggf. bis zur Breite des Anzeigefeldes) und der zugehörige Zehnerexponent angezeigt. Die folgenden Zahlen x und y werden z.B. auf die angegebene Weise dargestellt:

x = 178,125 = 1,78125 · 10²
x = 1,78125 E 2
y = – 2/3 = – 6,66666667 · 10–1
y = – 6,66666667 E –1

Die signifikanten Ziffern einer Gleitkommazahl werden im Deutschen bedauerlicherweise oftmals noch heute auf irreführende Weise als Mantisse und nicht als Significand bezeichnet (siehe Abschnitt 3.1b). Allgemein ausgedrückt, besteht dieser Signifikand s aus einer Vorkommastelle (dem ganzzahligen Teil g, in amerikanischen Quellen dem integer i) und mehreren Nachkommastellen (den Bruchteilstellen b, am. fraction f). Die Anzahl der Nachkommastellen wird entweder durch die eingegebenen bzw. signifikanten Stellen der Zahl bestimmt (falls darauf nur noch Nullen folgen) oder durch die verfügbare Maschinenwortbreite für die gewählte Genauigkeit (z.B. einfache bzw. doppelte Genauigkeit, am. single bzw. double precision). Der ebenfalls angegebene ggf. mehrstellige Zehnerexponent e ist meistens durch ein E vom Signifikanden getrennt, ohne hochgestellt zu werden, damit eine Zahl in einer Anzeige- bzw. Druckzeile dargestellt werden kann. Bei doppelter Genauigkeit wird in manchen Progammiersprachen durch ein D (statt E) auf die höhere Genauigkeit hingewiesen. Sowohl Signifikand als auch Exponent haben eine Vorzeichenstelle v bzw. ve, in der ein positives Vorzeichen jedoch meistens nicht dargestellt wird.   [^ Inhalt]

 
3.1 Bezeichnungen und deren Wildwuchs

Bei den Bezeichnungen von Gleitkommazahlen und ihren Bestandteilen ist, wie auch in vielen anderen Sachgebieten, ein gewisser Wildwuchs entstanden, der durch mehr oder weniger fehlendes Sprachgefühl und/oder mangelnden Sachverstand weitgehend ungetrübt zu sein scheint. Bedauerlicherweise findet man solche inkorrekten Begriffe quer durch alle (akademischen) Ränge, oftmals mit der Ausrede, man würde ja sonst nicht verstanden. Deshalb stelle ich hier folgende drei Begriffe klar:

 
a) Gleitkommazahl oder was sonst?

Sogar in Fachveröffentlichungen liest man immer wieder so abenteuerliche Begriffe wie Fließpunktzahl, Fließkommazahl oder Gleitpunktzahl, wenn tatsächlich eine Gleitkommazahl gemeint ist. Was eine Gleitkommazahl ist, habe ich bereits in der zweiten Hälfte der 1960-er Jahre in einer Vorlesung über Algol 60 gelernt [5], und daran hat sich in der deutschen Sprache bis heute nichts geändert. Die drei o.a. unzutreffenden Begiffe entstehen durch falsche bzw. sinnwidrige Übersetzungen der ersten beiden Teilwörter dieses dreiteiligen Kompositums aus dem englischen Begriff 'floating-point number' und deren virtuosen Kombinationsmöglichkeiten. Lediglich das dritte Teilwort 'number' = 'Zahl' ist in allen Fällen richtig übersetzt. To 'float' heißt auf Deutsch jedoch u.a. 'gleiten', 'schwimmen', 'treiben' und sollte keinesfalls mit to 'flow' = 'fließen' (u.a.) verwechselt werden. Das erste Teilwort 'floating' = 'Fließ' ist demzufolge einfach falsch übersetzt und muß hier 'Gleit' heißen! 'point' bedeutet zwar meistens 'Punkt', allerdings leider nicht bei der Darstellung gebrochener Zahlen, z.B. im Dezimalsystem (oder einem beliebigen anderen Stellenwertsystem). Hier entspricht die deutsche Bezeichnung 'Dezimalkomma' dem englischen Begriff 'decimal point', wie inzwischen an jedem (international gebräuchlichen) Taschenrecher und den Ländereinstellungen eines jeden Windows-PCs ersichtlich ist. Deshalb ist hier die zutreffende Übersetzung ' (decimal) point' = '(Dezimal-)Komma' bzw. (binary) point = '(Binär-)Komma' und nichts anderes! Damit sind alle Übersetzungsversuche von 'floating-point number' mehr oder weniger verunglückt, die auf Deutsch nicht 'Gleitkommazahl' heißen. Nicht einmal dann sollte man eine dieser unzutreffenden Übersetzungen verwenden, wenn man aus stilistischen Gründen das Wort 'Gleitkommazahl' nicht wiederholen möchte!   [^ Inhalt]

 
b) Signifikand oder Mantisse?

In der Mathematik und Computertechnik wird der Bergriff Mantisse für zwei verschiedene Zahlentypen verwendet, die nur wenig bzw. fast nichts miteinander zu tun haben.

  1. Nicht-negativer Bruchteil eines dekadischen Logarithmus
    [eingeführte korrekte Bezeichnung]
  2. Signifikante Ziffern einer Gleitkommazahl (entspr. ihrer Genauigkeit)
    [unzutreffende inkorrekte Bezeichnung, besser Signifikand]

Obwohl die Ziffernfolge einer Gleitkommazahl keineswegs der Bruchteil eines Zehnerlogarithmus und damit ganz bestimmt keine Mantisse ist, kann dieser Unsinn in der deutschen Fachsprache offenbar nicht ausgerottet werden. Dabei wurde uns schon 1967 im Studium beigebracht, daß die Bezeichnung Mantisse auf diesen Teil einer Gleitkommazahl keinesfalls zutrifft [5]. Außerdem wird oftmals nicht sauber unterschieden, ob mit Mantisse der gesamte Signifikand (einschließlich Vorkommastelle g) oder nur dessen Bruchteil (Nachkommateil) b gemeint ist. Dadurch geraten angegebene Gleichungen für mathematische Operationen unter Umständen zum reinen Glückspiel. Im Amerikanischen hat sich dafür der Begriff Significand (auf Deutsch Signifikand), der dort von führenden Mathematikern (z.B. Kahan und Knuth) propagiert wird [6], schon seit Jahren weitgehend durchgesetzt [9]. In [6] wird unter dem Stichwort "Significand" im Abschitt "Use of mantissa" Folgendes ausgeführt, dessen Kernaussagen des ersten Absatzes ich hier übersetzt zitiere: "Das Originalwort, das in amerikanischem Englisch benutzt wurde, um den Koeffizienten von Gleitkommazahlen in Computer-Hardware zu beschreiben, und der später Signifikand genannt wurde, scheint Mantisse (mantissa) gewesen zu sein (siehe Burks et.al.), und auch 2005 ist sein Gebrauch bei Rechen- und Computer-Wissenschaftlern immer noch verbreitet. Von diesem Gebrauch des Begriffs 'Mantisse' wird jedoch durch das 'IEEE floating-point standard committee' (IEEE-Komitee für Gleitkomma-Standards) und durch einige Fachleute wie William Kahan und und Donald Knuth abgeraten (discouraged), weil er mit dem bereits eingeführten (pre-existing) Begriff Mantisse für den Bruchteil eines Logarithmus kollidiert (conflicts)." Dem ist kaum noch etwas hinzuzufügen, außer daß die Firma Intel in ihrem Programmer's Reference Manual für den Mathematischen Ko-Prozessor 80387 [9], nach dem ich das Kapitel über Gleitkommazahlen für meine Vorlesung aktualisiert habe, bereits um 1990 konsequent den Begriff 'significand' verwendet hat. Das habe ich in meine Vorlesung "Grundzüge der Datentechnik" (1991 – 2002) übernommen und werde es hier ebenfalls tun.   [^ Inhalt]

 
c) Normiert oder normalisiert?

In zahlreichen deutschen Beschreibungen über Gleitkommazahlen wird die Umrechnung des Signifikanden in eine Vorkommastelle und einen dazu passenden Exponenten als 'normalisieren' und dieses Ergebnis als 'normalisierte' Zahl bezeichnet. Dieser Begriff geht ohne Zweifel auf die wörtliche Übersetzung aus dem amerikanischen 'to normalize' bzw. 'normalized' zurück, offenbar ohne daß sich die Übersetzter und ihre Nachahmer Rechenschaft über den unterschiedlichen Bedeutungsbereich (coverage) dieser Begriffe in beiden Sprachen abgelegt haben. Zu allem Überfluß werden Gleitkommazahlen in der beschriebenen Darstellung mit einer Vorkommastelle im Amerikanischen nicht nur als 'normalized numbers', sondern auch kurz als 'normals' bezeichnet. In der Umgebung von 0 (null) gibt es nämlich aus gutem Grund auch noch sog. 'denormals', deren Signifikand mit einer Null vor dem Komma und ggf. weiteren führenden Nullen nach dem Komma beginnt. Aber davon mehr in Abschnitt 3.4. Im aktuellen Rechtschreibduden findet man zu den Wortstämmen 'norm' und 'normal' neben vielen zusammengesetzten Substantiven und einigen Adjektiven folgende drei Verben:

  1. normalisieren (wieder normal gestalten); sich normalisieren (wieder normal werden)
    normal (der Norm entsprechend, vorschriftsmäßig; gewöhnlich, üblich, durchschnittlich)
    Normal, das; -s, -e (besonders genauer Maßstab; meist ohne Artikel, nur Sing.: kurz für Normalbenzin)
  2. normen (einheitlich festsetzen, gestalten; [Größen] regeln)
    Norm, die; -, -en <griech.-lat.> (Richtschnur, Regel; sittliches Gebot oder Verbot als Grundlage der Rechtsordnung; Größenanweisung in der Technik; Druckerspr. Bogensignatur)
    Normung (das Normen)
  3. normieren (normgerecht gestalten)
    Normierung
    © Duden - Die deutsche Rechtschreibung, 24. Aufl. Mannheim 2006 [CD-ROM]

Nach (1) bedeutet 'normalisieren' etwas wieder normal gestalten, d.h. sinngemäß in Ordnung bringen, was offenbar vorübergehend in Unordnung geraten ist, oder sich als Mensch wieder zu normalisieren, d.h. sich nach einem Ausnahmezustand (Erregung oder Verwirrtsein) wieder normal zu verhalten. Beides hat wenig mit dem Umrechnen einer Zahl von einer Darstellung in eine andere zu tun. 'Normalisieren' leitet sich von 'normal' ab, dessen Bedeutung in der o.a. Liste nachgelesen werden kann. Das Substantiv Normal hat dagegen eine von zwei ganz anderen Bedeutungen. Der 'genaue Maßstab' würde im Amerikanischen 'standard' heißen und die Benzinsorte 'regular'. Das Normal wird dort ggf. als 'comparison standard' oder 'measurement standard' (Vergleichs- oder Meßnormal) genauer bezeichnet.

Die in (2) aufgelisteten Begriffe 'normen', 'Norm' und 'Normung' sind ganz bestimmt nicht gemeint, denn sie heißen im Amerikanischen 'to standardize', 'standard' bzw. 'standardization', wobei eine gewisse Überlappung mit dem deutschen Substantiv 'Normal' auffällt. So würde auch der deutsche Begriff 'Normzahl' für das amerikanische 'normal' völlig in die Irre führen, denn Normzahlen sind in DIN 323 festgelegte geometrische Zahlenfolgen, die in der Technik vorzugsweise verwendet werden sollten. Dabei wird eine Dekade (von grob bis fein) in 5, 10, 20 oder 40 Intervalle in einem konstanten Verhältnis unterteilt. In der Reihe R 10 beträgt das Verhältnis zweier aufeinanderfolgender Normzahlen z.B. 10√10 ≈ 1,26. Das ergibt die Normzahlen 1,0 / 1,25 / 1,6 / 2,0 / 2,5 / 3,15 / 4,0 / 5,0 / 6,3, / 8,0 / 10,0, die auf eine bzw. in Sonderfällen auf zwei Nachkommastellen gerundet sind und nichts mit Gleitkommazahlen zu tun haben.

Im Deutschen trifft lediglich das unter (3) angegebene Verb 'normieren' (normgerecht gestalten) bzw. dessen als Eigenschaftswort gebrauchtes Partizip Perfekt 'normiert' auf den Sachverhalt von Gleitkommazahlen zu. Deshalb werde ich hier ausschließlich diese beiden Begriffe verwenden, die mir außerdem aus Studium und Beruf geläufig sind, und nicht eine 'vermeintlich fortschrittliche Übersetzung', nur weil sie so schön kompliziert klingt, dafür aber nicht wirklich zutrifft. – Die o.a. 'normals' sind dementsprechend 'normierte Zahlen', und die 'denormals' sind 'unnormierte Zahlen', soweit sie in den folgenden Ausführungen vorkommen. Die Begriffe 'normalisiert' und 'unnormalisiert' erinnern mich außerdem stark daran, mit welcher Inbrunst seinerzeit gelehrt wurde, wie logische Schaltfunktionen 'minimisiert' werden, bis ein paar sprachbegabte Kollegen schließlich bemerkten, daß die deutsche Übersetzung von 'to minimize' korrekt 'minimieren' heißen muß und eben nicht 'minimisieren'.   [^ Inhalt]

 
3.2 Dezimalsystem

Im einleitenden Abschnitt zum Kapitel Gleitkommazahlen sind bereits zwei Beipiele x und y im Dezimalsystem angegeben und ihre Bestandteile, bestehend aus Vorzeichen v, Significand s (mit ganzzahligem Teil g und Bruchteil b) sowie Zehnerexponent e und dessen Vorzeichen ve erläutert worden. In der folgenden Tabelle sich diese Begriffe (Reihe 1 der Tabelle) und Kurzzeichen (Reihe 2 der Tabelle) gemeinsam mit den Bestandteilen der Zahl x zusammengestellt.:

1. Begriff Vorzeichen
der Zahl
Signifikand
s
Trenn-
zeichen
Vorzeichen
d. Exponenten
Exponent
2. Kurzzeichen v g, bbbbbbbb E ve e
3. Beispiel int. + 1, 78125000   + 02
4. Anz./Ausdr.   1, 78125 E     2

Dabei ist angenommen, für den Signifikanden stünden 9 Dezimalstellen zur Verfügung, und zwar eine Vorkommastelle g = g0 und acht Nachkommastellen bbbbbbbb = b–1 bis b–8, und der Exponent e mit Vorzeichen ve habe einen Wertebereich von – 30 bis + 30. In der internen Darstellung dieses fiktiven Dezimalrechners (Reihe 3 der Tabelle) sind selbstverständlich die Vorzeichen enthalten, der Bruchteil wird durch nachfolgende Nullen und der einstellige Exponent durch eine führende Null aufgefüllt. Dafür muß jedoch das Trennzeichen E nicht mit jeder Zahl gespeichert werden, weil die einzelnen Stellen feste Positionen innerhalb des Zahlencodes haben. In der Anzeige bzw. einem Ausdruck (Reihe 4 der Tabelle) ist es natürlich vorhanden, wobei dort üblicherweise die positiven Vorzeichen sowie die nachfolgenden Nullen des Signifikanden und eine führende Null des Exponenten weggelassen werden.

Diese Darstellung von Gleitkommazahlen ist heute in vielen Taschenrechnern und auch von einigen Progarammiersprachen wie in etlichen BASIC-Varianten von Microsoft üblich. Ältere Programmiersprachen für numerische Rechnungen wie Algol 60 [5] und Ada, C, Fortran und Modula-2 [6] normieren Gleitkommazahlen mit einer führenden 0 (Null) vor dem Komma und der höchtwertigen Ziffer in der ersten Nachkommastelle. Das Zahlenbeispiel x wird dann zu:

x = 178,125 = 0,178125 · 103     (statt   1,78125 · 102),     in Algol früher auch 0.178126103 [5],

d.h. mit Dezimalpunkt und einer tiefgestellten 10, um den folgenden Exponenten zu kennzeichnen. – Bei dieser Normierung braucht die Null als ganzzahligerTeil g mit dem folgenden Dezimalkomma (~punkt) grundsätzlich nicht gespeichert zu werden, weil sie bei allen normierten Zahlen implizit vorhanden ist. Bei unveränderter Genauigkeit ist dafür allerdings der Bruchteil um eine Stelle länger. Dadurch konnte ein einheitlicher Bruchteil verarbeitet werden, bei dem nicht zusätzlich auch noch eine führende ganzzahlige Stelle berücksichtigt werden muß. Außerdem ergeben sich bei dieser Darstellung die in Abschnitt 3.3d beschriebenen unnormierten Zahlen einschließlich der Null von selbst, wenn bei dem kleinsten Exponenten weitere führende Nullen nach dem Dezimalkomma zugelassen werden, bis (für die Null) alle Stellen des Signifikanden = 0 sind. Da die damaligen Programmierer und Anwender dieser Programmiersprachen ohnehin so dachten, gab es keinen Grund, Gleitkommazahlen für die Ausgabe anders zu formatieren.

Obwohl die vorstehenden Beispiele und auch die im nächsten Abschnitt folgenden Rechenverfahren für Gleitkommazahlen am Beispiel des Dezimalsystems beschrieben werden, gibt es heute praktisch keine Rechner mehr, die intern dezimal rechnen, sondern fast ausschließlich binär. Trotz einiger Anfangsschwierigkeiten mit Rundungsproblemen (viele endliche Dezimalbrüche sind unendlich periodische Binärbrüche) überwiegen die Vorteile, wenn intern rein binär gerechnet und gespeichert wird. Lediglich für die Ein- und Ausgabe (Anzeige bzw. Ausdruck) bleibt es natürlich beim Dezimalsystem, um dem Benutzer das Leben nicht unnötig zu erschweren, indem man ihn mit Binärzahlen verwirrt.   [^ Inhalt]

 
3.3 Rechenverfahren

Die Rechenverfahren mit Gleitkommazahlen werden zunächst an Zahlenbeispielen im Dezimalsystem vorgestellt und anschließend verallgemeinert. Alle Erfahrung lehrt, daß sich die meisten Leute auf diese Weise am leichtesten in die Thematik hineinfinden. Obwohl praktisch alle Computer heutzutage im Binärsystem rechnen, ist dieses Vorgehen keine Einschränkung, denn die Rechenregeln und die Behandlung von Sonderfällen sind für alle polyadischen Zahlensysteme, d.h. für Stellenwertsysteme mit einer Basis B, identisch. Für die folgenden Zahlenbeispiele wird derselbe fiktive Dezimalrechner aus dem vorigen Abschnitt 3.2 beibehalten, dessen Darstellung von Gleitkommazahlen dort beschrieben und in einer Tabelle dargestellt worden ist. Danach habe der Signifikand 9 Dezimalstellen, d.h. 1 Vorkomma- und 8 Nachkommastellen) und der Exponent einen Wertebereich von ± 30. Als Zahlenbeispiele für die zu erläuternden Operationen dienen die beiden bereits mehrmals verwendeten Werte

x = 1,78125 E 2     und     y = – 6,66666667 E –1

[^ Inhalt]

 
a) Arithmetische Operationen

Zu den arithmetischen Operationen gehören nicht nur die vier Grundrechenarten (3 – 6 der folgenden Liste), sondern meistens auch noch die Berechnung der Quadratwurzel (7) und einige Formatierungsvorgänge (1 und 2). Für die Behandlung von Ausnahmefällen (8) folgt ein eigener Abschnitt (3.2 c). In der folgenden Liste sind diese erforderlichen Operationen für Gleitkommazahlen zusammengestellt:

  1. eine Zahl normieren
  2. den Exponenten einer Zahl an einen vorgegebenen Wert anpassen
  3. zwei Zahlen einschließlich Vorzeichen addieren
  4. zwei Zahlen einschließlich Vorzeichen subtrahieren
  5. zwei Zahlen einschließlich Vorzeichen multiplizieren
  6. zwei Zahlen einschließlich Vorzeichen dividieren
  7. aus einer Zahl die Wurzel ziehen
  8. rechnen mit 0 und ∞ sowie behandeln der auftretenden Ausnahmen
    (übernächster Abschnitt 3.3 c)

 
a1) Addition und Subtraktion (einschließlich Vorzeichen)

Zum Addieren und Subtrahieren von zwei Gleitkommazahlen müssen die Signifikanden stellenrichtig addiert bzw. subtrahiert werden, wobei ihre Vorzeichen zu berücksichtigen sind. Damit das gemacht werden kann, ist zuvor der kleinere Exponent an den größeren anzupassen, d.h. die Zahl mit dem kleineren Betrag (hier y) muß durch Rechtsschieben des Signifikanden an den Exponenten der Zahl mit dem größeren Betrag (hier x) angepaßt werden. Erst dann können beide Signifikanden einschließlich Vorzeichen (hier y < 0) addiert bzw. subtrahiert werden (s = x + y bzw. d = xy), wobei der Exponent beibehalten wird. Falls dabei der ganzzahlige Teil g > 9 oder g < 1 wird, muß das Ergebnis anschließend noch normiert werden. In dem folgenden Zahlenbeispiel tritt das jedoch nicht auf, d.h. Summe s und Differenz d ergeben sich bereits als normierte Zahlen. Fragen der Genauigkeit werden für alle Rechenoperationen gemeinsam in Abschnitt 3.3 b betrachtet.

         v  0 12345678   E V 10     (Stellenbezeichnungen, V = ve)
     --------------------------
     x =    1,78125000   E    2
     y = -  0,00666667   E    2     Exponent angepaßt
     --------------------------
     s =    1,77458333   E    2     s = x + y (bereits normiert)

     d =    1,78791667   E    2     d = x - y (bereits normiert)

 
a2) Multiplikation und Division (einschließlich Vorzeichen)

Zur Multiplikation und Division von zwei normierten Gleitkommazahlen kann einfach drauflosgerechnet werden, p = x × y bzw. q = x : y. Bei der Multiplikation werden die Signifikanden von x und y miteinander multipliziert und deren Exponenten addiert. Bei der Division werden die Signifikanden von x und y durcheinander dividiert und deren Exponenten subtrahiert. Dabei gelten die üblichen Vorzeichenregeln, wie in den folgenden Beipielen dargestellt.

         v  0 12345678   E V 10     (Stellenbezeichnungen)
     --------------------------
     x =    1,78125000   E    2
     y = -  6,66666667   E -  1
     --------------------------
     p = - 11,87500001   E    1     sp = sx × sy ; Ep = Ex + Ey
       = -  1,18750000   E    2     normiert

     q = -  0,2671874998 E    3     sp = sx : sy ; Ep = Ex - Ey
       = -  2,67187500   E    2     normiert
        (-  2,67157500   E    2     Ergebnis mit y = - 2/3)

Es zeigt sich, daß beim Produkt p der ganzzahlige Teil des Signifikanden zweistellig wird, und das Ergebnis daher noch normiert werden muß. Beim Quotienten q wird der ganzzahlige Teil g < 1, so daß auch dieses Ergebnis normiert werden muß. Hier sind zunächst noch zwei weitere interne Ergebnisstellen der Rechnung angegeben, um zu zeigen, wie das gerundete Ergebnis nach dem Normieren zustande kommt. Zur Anschauung ist anschließend auch noch der Quotient angegeben, der mit dem nicht gerundeten exakten Divisor y = – 2/3 berechnet worden ist.

 
a3) Berechnen der Quadratwurzel

Zum Berechnen der Quadratwurzel aus einer normierten Gleitkommazahl, muß der Exponent des Radikanden ggf. auf die nächstkleinere gerade Zahl gebracht werden. Dann kann die Wurzel aus dem Signifikanden gezogen und der Exponent halbiert werden, um die Wurzel zu bestimmen. Für diese Betrachtung ist es nicht wesentlich, wie der Wurzelalgorithmus im Rechenwerk im Detail funktioniert. Die Wurzel aus einem Signifikanden zwischen 1 und < 100 hat jedenfalls einen einstelligen ganzzahligen Teil, so daß sie sich direkt als normierte Gleitkommazahl ergibt. Die sei am Beispiel der Zahl x = 1,78125 E 2 gezeigt, deren Exponent bereits eine gerade Zahl ist.

         v  0 12345678   E V 10     (Stellenbezeichnungen)
     --------------------------
     x =    1,78125000   E    2     (Exponent geradzahlig)
     --------------------------
     w =    1,33463478   E    1     sw = √sx ; Ew = Ex/2

  [^ Inhalt]

 
b) Genauigkeitsbetrachtungen

Beim Rechnen mit Gleitkommazahlen sollte man folgende Eigenschaften nicht außer Acht lassen, damit man von einigen Besonderheiten nicht überrascht wird. Mit den Werten unseres fiktiven Modellrechners in Klammern haben dessen dezimale Gleitkommazahlen:

  1. einen großen Wertebereich (61 Größenordnungen, Zehnerexponent von – 30 bis + 30)
  2. Begrenzte Genauigkeit        (  9 Dezimalstellen, normiert: 1 Vor- und 8 Nachkommastellen)
  3. Null (und unendlich) können nicht als normierte Zahlen dargestellt werden (Abschnitt 3.3 c)

Die ersten beiden Punkte sind für Aufgaben in Wissenschaft und Technik wünschenswert und gut geeignet. Der große Wertebereich von 61 Größenordnungen deckt die meisten vorkommenden Zahlenwerte und Zwischenergebnisse in fast allen Sparten ab, und die Genauigkeit von 9 Dezimalstellen ist gegenüber Berechnungen mit Rechenschieber oder Logarithmentafeln mit 3 bis 5 Dezimalstellen mehr als ausreichend. Bei kaufmännischen Rechnungen kann man mit 9 Stellen bis knapp 10 Mio. € bzw. DM (bis 9.999.999,99) auf den Cent bzw. auf den Pfennig genau rechnen, oder wenn man der letzten Stelle nicht mehr traut, zumindest bis knapp 1 Mio. (d.h. bis 999.999,99). Das ist mit Rechenschieber oder Logarithmen nicht möglich. Deshalb hatten die in kaufmännischen Bereichen verbreiteten mechanischen Rechenmaschienen (siehe auch Brunsviga 20) in den verschiedenen Werken noch mehr Dezimalstellen, z.B. um 12 im Einstellwerk, um 11 im Zählwerk oder sogar 13 bis 20 im Resultatwerk, wo die Ergebnisse saldiert wurden. Doch nach dieser allgemeinen Einführung nun zu den im vorigen Abschnitt angegebenen Zahlenbeispielen und den Betrachtungen zu deren Genauigkeit.

 
b1) Addition und Subtraktion (einschließlich Vorzeichen)

Zur stellenrichtigen Addition bzw. Subtraktion müssen die Exponenten der beiden Operanden (Summanden bzw. Minuend und Subtrahend) angepaßt werden. Dafür wird der Signifikand des dem Betrage nach kleineren Operanden (im obigen Beispiel y) so weit nach links geschoben, bis sein Exponent dem des betragsmäßig größeren Operanden (im Beispiel x) entspricht. Wenn sich die beiden Exponenten um die Stellenzahl der Signifikanden oder sogar noch mehr unterscheiden (für unseren fiktiven Rechner ≥ 9), trägt die dem Betrage nach kleinere Zahl nicht mehr zum Ergebnis bei, weil deren Signifikand dann vollständig nach rechts herausgeschoben wird. In diesem Fall entspricht das Ergebnis der größeren Zahl, ggf. mit umgekehrtem Vorzeichen, wenn sie bei einer Subtraktion abgezogen werden soll. In einem solchen Fall kann die ganze Schieberei und Rechnerei vermieden werden, wenn vor der Operation die Differenz der Exponenten (auf ≥ 9) abgefragt und ggf. der betragsmäßig größere Operand dem Ergebnis zugewiesen wird.

Das trifft aber in den o.a. Zahlenbeispielen nicht zu, in denen der Exponent von y nur um 3 kleiner ist als der von x. Dadurch entsteht nicht einmal ein Übertrag, so daß sich sowohl die Summe als auch die Differenz noch als normierte Zahlen ergeben. – Bei der Addition von zwei Summanden mit gleichem Vorzeichen oder bei der Subtraktion von zwei Werten mit verschiedenem Vorzeichen werden die Beträge addiert. Dabei kann es im Ergebnis einen Übertrag in die zweite Vorkommastelle geben. Diese 1 darf natürlich nicht verloren gehen, sondern rutscht beim anschließend erforderlichen Normieren unmittelbar vor das Dezimalkomma. Bei einer solchen Addition der Beträge sind keine weiteren Besonderheiten zu erwarten

Bei der Subtraktion von zwei Operanden mit gleichem Vorzeichen oder bei der Addition von Summanden mit verschiedenem Vorzeichen werden die Beträge subtrahiert. Dabei kann das Ergebnis eventuell mehrere führende Nullen (auch nach dem Komma) bekommen und ggf. sogar zu null werden, wenn die Beträge der beiden Operanden gleich sind. Definitionsgemäß kann eine Null nicht mit einer signifikanten Ziffer (≥ 1) vor dem Komma normiert werden. Deshalb wird die Darstellung der Null und anderer Sonderwerte im nächsten Abschnitt 3.3 c behandelt. Ergeben sich bei einer solchen Subtraktion nach führenden Nullen noch von null verschiedene Ziffern, dann kann zwar normiert werden, aber nur mit geringerer Genauigkeit, wie man an folgendem Zahlenbeispiel d = xz sieht.

         v  0 12345678   E V 10     (Stellenbezeichnungen)
     --------------------------
     x =    1,78125000   E    2
     z =    1,78124988   E    2     Exponent paßt schon
     --------------------------
     d =    0,00000012   E    2     d = x - z
            1,20000000   E -  5     normiert
     d =    1,2          E -  5     tatsächliche Genauigkeit

Die beim Normieren von rechts nachgeschobenen Nullen sind jedoch in diesem Fall nicht genau. Die Differenz d ist aus den auf nur 9 Stellen genauen Operanden x und z berechnet worden. Dabei wird vorausgesetzt, daß x = 178,125 als endlicher Dezimalbruch eingegeben wurde und damit seine nachfolgenden Nullen für die Rechnung als zutreffend angesehen werden können. Sofern auch z auf alle 9 Stellen genau ist (ggf. durch Rundung), ist bei diesen Zahlenwerten d nur noch auf 2 Stellen genau, weil es rechts der hingeschriebenen Signifikandenziffern nichts mehr gibt. Die beim Normieren nachgeschobenen Nullen sind also nur Platzhalter, und sie wirklich als null anzunehmen, ist reine Spekulation. Mit anderen Worten: Wenn man mit dieser Differenz weiterrechenet und dabei auf eine 9-stellige Genauigkeit vertraut, kann es zu unerwarteten falschen Ergebnissen kommen. Ärgerlicherweise merkt man das nur, wenn das Ergebnis nicht mehr plausibel ist, z.B. eine berechnete hohe Wahrscheinlichkeit statt dicht unter 1 plötzlich größer als 1 wird. Diese abnehmende Genauigkeit bei der Subtraktion nahezu gleich großer Werte ist ein bekanntes Problem beim Rechnen mit Gleitkommazahlen und auch durch das interne Mitführen weiterer Stellen nur graduall zu verbessern. Wenn es hart auf hart kommt, hilft es nur, den Rechenweg zu überdenken und zu ändern, um solche Effekte durch die Subtraktion nahezu gleich großer Zahlen zu vermeiden.

 
b2) Multiplikation und Division (einschließlich Vorzeichen)

Bei der Multiplikation und Division ist das Ergebnis positiv, wenn die Vorzeichen der beiden Operanden gleich sind, und negativ, wenn die Vorzeichen der beiden Operanden verschieden sind. Nachdem diese Vorzeichenregel berücksichtigt worden ist, brauchen wir im Folgenden nur noch die Beträge der beiden Signifikanden zu betrachten.

Das Produkt aus zwei einstelligen Zahlen zwischen 1 und <10 liegt zwischen 1 und <100, d.h. ist maximal zweistellig. Das gilt auch für die ganzzahligen Teile der Signifikanden, wie man an dem obigen Zahlenbeispiel sieht. Sofern sich das Produkt nicht bereits in normierter Form ergibt, reicht es aus, die zweite Vorkommastelle im Rechenwerk zwischenzuspeichern, um sie beim Normieren zu verwenden. Beim Multiplizieren von zwei 9-stelligen Zahlen hat das Produkt zwar insgesamt 18 Stellen, aber wenn die 9. Stellen der Faktoren bereits gerundet sind und darauf nicht wirklich Nullen folgen, sind nur die ersten 9 Stellen im Rahmen der Rundung genau. Je nach Zahlenwert könnte aus der 10. Stelle des Produkts bereits ein Rundungsfehler in die 9. Stelle eingeschleppt werden. Bei dem obigen Beispiel tritt das erst in der 10. Stelle auf, die beim Normieren wieder herausfällt.

Der Quotient aus zwei einstelligen Zahlen zwischen 1 und <10 liegt zwischen <10 und >0,1 entsprechend den Werten von Dividend und Divisor. Das gilt auch für die ganzzahligen Teile der Signifikanden, wie man an dem obigen Zahlenbeispiel sieht. Sofern sich der Quotient nicht bereits in normierter Form ergibt, reicht es aus, eine bereits gerundete neunte Nachkommastelle bzw. die noch nicht gerundete neunte und zehnte Nachkommastelle im Rechenwerk zwischenzuspeichern, um die damit gerundete neunte Nachkommastelle beim Normieren zu verwenden, die dabei an den Platz der achten Nachkommastelle rückt. Man sieht, daß der gerundete Quotient mit dem exakten Wert übereinstimmt, der mit y = – 2/3 berechnet worden ist.

 
b3) Berechnen der Quadratwurzel

Die Wurzel aus einem zweistelligen Radikanden zwischen 1 und <100 liegt zwischen 1 und <10, d.h. ist maximal einstellig. Das gilt auch für den ganzzahligen Teil des Signifikanden, wie man an dem obigen Zahlenbeispiel sieht. Damit ergibt sich die Wurzel bereits in normierter Form, selbst wenn der Exponent des normierten Radikanden ggf. vor dem Berechnen der Wurzel auf den nächstniedrigeren geraden Wert gebracht wird und dessen Signifikand dadurch zwei Vorkommastellen bekommt. Der Exponent des Radikanden muß vor dem Wurzelziehen eine gerade Zahl sein, damit er eine ganze Zahl bleibt, wenn er durch 2 geteilt wird. Sofern die Wurzelaritmetik richtig rechnet, gibt es keine Probleme mit der Genauigkeit, und die normierte Wurzel aus einem 9-stelligen Radikanden wird ebenfalls auf 9 Stellen genau sein.

 
b4) Rundungen

Dezimalbrüche können viele Zahlen nicht genau, sondern nur näherungsweise darstellen. Nach der Theorie lassen sich rationale Zahlen als Bruch aus zwei ganzen Zahlen schreiben und liefern nach einigen signifikanten Ziffern unendliche periodische Dezimalbrüche. Damit diese schöne Theorie stimmt, gehören dazu auch Perioden von Nullen. Solche Dezimalbrüche nennt man gemeinhin "endliche Dezimalbrüche" wie 1/2 = 0,5; 1/4 = 0,25; 3/4 = 0,75; 1/5 = 0,2; 2/5 = 0,4 usw.; 1/8 = 0,125 usw.; 1/10 = 0,1 usw.; sowie alle anderen Brüche mit Nennern, die eine ganze Zahl ergeben, wenn man 10, 100, 1000 oder eine noch höhere Zehnerpotenz durch sie teilt. Periodische Brüche (mit von null verschiedener Periode) ergeben sich für Nenner, die als Faktor mindestens eine der Primzahlen 3, 7, 11, 13 usw. enthalten, die von allen Zehnerpotenzen teilerfremd sind, z.B. 1/3 = 0,3333...; 2/3 = 0,6666...; 1/7 = 0,142857142857...; 1/9 = 0,1111...; 1/11 = 0,090909...; 1/12 = 0,08333...; 1/13 = 0,076923076923...; 1/15 = 0,06666... usw., wobei die Periode durch einen Unterstrich markiert ist. Darüber hinaus gibt es auch noch irrationale und transzendente Zahlen, deren Dezimalbrüche ebenfalls unendlich, aber nicht periodisch sind. Zu den irrationalen Zahlen gehören z.B. Wurzeln von ganzen Zahlen, die selbst nicht ganzzahlig sind, und transzendent sind z.B. die Kreiszahl π ≈ 3,14159265359... und die Eulersche Zahl e ≈ 2,71828182846... als Basis der natürlichen Logarithmen. Alle diese unendlichen Dezimalbrüche lassen sich mit endlicher Stellenzahl nur näherungsweise darstellen und sind entweder etwas zu klein oder zu groß, je nachdem, ob ihre letzte Stelle ab- oder aufgerundet worden ist.

Diese Eigenschaft haben natürlich auch alle Gleitkommazahlen, die neben ihrer durch die Stellenzahl des Signifikanden begrenzten Genauigkeit auf Grund des Exponenten einen Wertebereich von vielen Größenordnungen überdecken. Das gilt sowohl für unseren angenommenen Modellrechner für das Dezimalsystem mit 9 Dezimalstellen und einem Wertebereich von 2 × 30 + 1 = 61 Zehnerpotenzen als auch für jeden tatsächlichen Rechner, der das Binärsystem verwendet. Im täglichen Leben sind wir an das Dezimalsystem und dessen übliche Ab- und Aufrundungen gewöhnt, z.B. im kaufmännischen Bereich. Ärgerlicherweise ergeben jedoch endliche Dezimalbrüche oftmals unendliche (periodische) Binärbrüche und damit andere Rundungsfehler als erwartet. Endliche Binärbrüche liefern zwar auch endliche Dezimalbrüche, aber oft mit erstaunlich hoher Stellenzahl, so daß es auch hier zu unerwarteten Rundungsfehlern kommen kann. Das war in der Anfangszeit der Binärrechner ein häufiges Ärgernis, so daß immer mal wieder intern dezimal arbeitende Rechner entwickelt worden sind, die sich aber auf die lange Sicht doch nicht durchsetzen konnten. Bei der sog. kaufmännischen Rundung im Dezimalsystem wird grundsätzlich abgerundet, d.h. die letzte Stelle einer gerunderten Zahl bleibt unverändert, wenn in der nächsten nicht mehr mitzuführenden Stelle eine 1 bis 4 wegfällt. Dagegen wird grundsätzlich aufgerundet, d.h. die letzte Stelle einer gerundeten Zahl um 1 erhöht, wenn danach eine 5 bis 9 wegfällt. Bei einer 0 in der nächsten Stelle muß nicht gerundet werden. Bei einer 5 führt das jedoch (bei unbekannten weiteren Stellen oder weiter folgenden Nullen) zu folgendem systematischen Fehler, wenn man z.B. einen ungeraden Betrag halbiert und dann die Teilbeträge wieder addiert:

85,43 € : 2 = 42,715 € gerundet ≈ 42,72 €.   Daraus folgt 2 × 42,72 € = 85,44 €,

also ergibt sich durch diese Rundungsungenauigkeit 1 Cent zu viel. Im kaufmännischen Bereich ist man das gewohnt, und bei einer individuellen Aufgabe ist das kaum zu vermeiden, es sei denn, man führt die nächste Stelle durch die Rechnung mit und verwendet die gerundeten Werte nur zum Anzeigen bzw. Ausdrucken. Dann ist der Rechengang auf dem Papier aber nicht mehr bis auf die letzte Stelle genau nachzuvollziehen. Bei Kettenrechnungen ergibt sich durch regelmäßiges Aufrunden von 0,5 auf 1 eine Drift, die bei vielen Additionen zu große Werte liefert, wie an obigem Beispiel leicht zu sehen ist. Da 0,5 genau in der Mitte zwischen 0 und 1 liegt, dürfte die zu rundende Stelle nur in der Hälfte aller Fälle aufgerundet und müßte in der anderen Hälfte aller Fälle abgerundet werden, damit sich dieser Fehler im statistischen Mittel heraushebt. Das wird durch folgende Rundungsregel erreicht:

  1. Wenn möglich, wird zur nächsten darstellbaren Zahl gerundet. Sind also die nicht mehr darstellbaren Ziffern einer Zahl
    bezogen auf die zu rundende Stelle > 0,0 bis < 0,5 wird abgerundet, und sind sie > 0,5 bis < 1,0 wird aufgerundet.
  2. Ist die nächstgelegene Zahl nicht eindeutig definiert, weil die nicht mehr darstellbaren Ziffern = 0,5 sind,
    d.h. genau in der Mitte liegen, wird zur nächsten geraden Zahl gerundet, z.B. …2,5 nach …2 und …3,5 nach …4.

Mit diesem in modernen Rechnern allgemein verwendeten Rundungsverfahren wird die statistische Drift in längeren Rechnungen vermieden, weil sich jetzt alle Auf- und Abrundungen im Mittel herausheben, bei gleichverteilten geraden und ungeraden Zahlen einschließlich der 0,5. Außerdem ist die Hardware inzwischen so billig, daß bei sog. doppelter Genauigkeit Signifikanden von 53 Bit entprechend knapp 16 Dezimalstellen gespeichert werden und in den mathematischen Prozessoren generell mit Signifikanden von 64 Bit entsprechend gut 19 Dezimalstellen gerechnet wird. Dadurch gehören die meisten derartigen Probleme bei gewöhnlichen Kettenrechnungen der Vergangenheit an. Lediglich bei besonderen Aufgaben sollte man immer noch bedenken, was man von seinem Rechner verlangt.   [^ Inhalt]

 
c) Besondere Zahlenwerte

c1) Null, unendlich und unbestimmte Ausdrücke

Selbstverständlich gehört zu einem vollständigen Zahlenbereich auch die Null, um z.B. die Differenz aus zwei gleich großen Zahlen darstellen zu können. Das ist allerdings mit einer normierten Gleitkommazahl nicht möglich, weil deren Signifikand per Definition immer eine von null verschiedene Vorkommastelle g ≥ 1 enthält. Für eine Null müßten jedoch alle Stellen des Signifikanden = 0 sein, was im festgelegten Wertebereich des Exponenten nicht zulässig ist. Bei unserem fiktiven Modellrechner mit dekadischen Gleitkommazahlen soll der Exponent zwischen – 30 und + 30 liegen und der Betrag des Signifikanden zwischen 1 und <10. Für die folgende Betrachtung reicht es aus, nur die positiven Zahlen (einschließlich der Null) zu betrachten.

Durch den Exponenten e (einschließlich Vorzeichen) werden auf dem Zahlenstrahl von Null nach rechts fortlaufende Potenzen von 10 markiert. In der Umgebung von e = 0 gilt folgende Zuordnung:

     Exponent:      -2     -1      0      1       2      ...  = Logarithmus (Kennziffer)
     Zehnerpotenz:   0,01   0,1    1     10     100      ...    der Zehnerpotenz

d.h. der Exponent e ist der Logarithmus (bzw. die Kennziffer) der fortlaufenden Zehnerpotenzen, die sich nach oben (bzw. rechts) bis 1030 und nach unten (bzw. links) bis 10–30 fortsetzen. Ein Intervall zwischen zwei benachbarten Zehnerpotenzen 10e und 10e+1 hat die Breite

I = 10e+1 – 10e = 10 × 10e – 1 × 10e = 9 × 10e

Jedes dieser Intervalle wird durch den Signifikanden linear, d.h. äquidistant weiter unterteilt. Bei den angenommenen dekadischen Gleitkommazahlen mit neunstelligem Signifikanden von

1,00000000 bis 9,99999999 × 10e sind das 9 × 108 Unterteilungen in gleichem Abstand von 10–8 × 10e = 10e–8.

Auch diese Unterteilungen sind in jedem nächsthöheren Intervall (e + 1) zehnmal so groß und im nächstniedrigeren Intervall (e – 1) ein Zehntel so groß wie im mittleren (mit dem Exponenten e). Oberhalb von 1030 reicht der größte Signifikand bis auf eine Unterteilung an 1031 heran, während nach unten bei 10–30 Schluß ist. Diese Gleitkommazahlen wurden in der ersten Hälfte des 20. Jahrhunderts als halblogarithmische Zahlendarstellung bezeichnet [8], d.h. unseren Altvordern war schon klar, daß nur der Exponent Teil eines Logaritmus ist, der Signifikand als Ziffernfolge des Numerus aber ganz bestimmt nicht und deshalb auch nicht 'Mantisse' genannt werden sollte (siehe auch Abschnitt Mantisse).

Um wie viele Zehnerpotenzen die Gleitkommazahlen auch immer nach unten erweitert werden, mit jeder weiteren Potenz verringert man die Lücke zur Null um 90 %, erreicht sie aber mit dieser Zahlendarstellung niemals. Die einfachste Maßnahme, die bereits Konrad Zuse in seinen ersten Computern Z1 und Z3 vor bzw. zu Beginn des Zweiten Weltkriegs (allerdings für binäre Gleitkommazahlen) verwendet hat, ist ein eigener Exponent unmittelbar unterhalb des kleinsten bisher festgelegten Wertes, um eine echte Null darstellen zu können. Für unsere dezimalen Gleitkommazahlen wäre das e = –31. Und um eine Bereichsüberschreitung zu kennzeichnen, erfindet man am besten auch gleich noch einen weiteren Sonderexponenten unmittelbar oberhalb des größten bisher festgelegten Wertes, um auch die Größe ∞ (unendlich) darstellen zu können. Für unsere dezimalen Gleitkommazahlen wäre das e = +31. Man kann es so machen wie in Zuses ersten Rechenmaschinen und bei diesen beiden Sonderexponenten die Signifikanden einfach ignorieren. Man kann aber auch mit diesen Signifikanden etwas Sinnvolles tun, wie es im nächsten Abschnitt beschrieben wird.

Mit der Darstellung von 0 und ∞ kann das Rechenwerk einige Operationen ganz normal ausführen, wobei nur solche ungültig sind, die ein unbestimmtes Ergebnis haben. Dazu gehören z.B.

+ ∞ plus + ∞ = + ∞   bzw.   – ∞ plus – ∞ = – ∞   (Subtraktion entsprechend)
+ ∞ plus – ∞   oder   – ∞ plus + ∞ = ungültige Operation
± ∞ plus ± z = ± ∞   bzw.   ± z plus ± ∞ = –/+ ∞   (+ und – vertauscht)
∞ × ∞ = ∞   bzw.   ∞ / 0 = ∞
∞ × 0 = ungültige Operation     usw.

Die Liste dieser Beispiele ist jedoch nicht vollständig, sondern soll lediglich ein paar dieser möglichen Operationen veranschaulichen.   [^ Inhalt]

 
c2) Unnormierte Zahlen (Denormals & NaNs)

Wie im letzten Abschnitt bereits erläutert, kann der Wert null mit einer normierten Gleitkommazahl nicht codiert werden. Dies ist an dem folgenden skizzierten Zahlenstrahl c2-1) dargestellt. Ordnet man der Null einen eigenen Exponenten (in unserem Fall e = –31) mit beliebigem Signifikanden zu, dann bleibt zwischen der kleinsten normierten Gleitkommazahl und der Null eine Lücke, die bei Dezimalzahlen etwas breiter ist (10/9) als der mit e = –30 darstellbare Zahlenbereich. Da zum Codieren der Null ein einzelner Signifikand (000000000) ausreicht, kann man bei e = –31 mit den übrigen Signifikanden von 000000001 bis 999999999 unnormierte Gleitkommazahlen von 0,000000001 bis 0,999999999 codieren, wie es in Skizze c2-2) dargestellt ist. Falls das Rechenwerk nur 8 Nachkommastellen verarbeitet, kann der Signifikand in diesem Bereich auch auf 8 Stellen beschränkt werden. Dieser Fall soll aber hier nicht weiter betrachtet werden.

c2-1) Zahlenstrahl ohne unnormierte Zahlen (ohne Denormals)

     Z-Strahl  #                   #-+-+-+-+-+-+-+-+-#-----------------+-----------------+-->
               0|nicht darstellbar||  wie unten     ||            wie unten

 
c2-2) Zahlenstrahl mit unnormierten Zahlen (mit Denormals)

     Z-Strahl  #-+-+-+-+-+-+-+-+-+-#-+-+-+-+-+-+-+-+-#-----------------+-----------------+-->
     Signifik. 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1                 2                 3
     Exponent  |       -31        ||       -30      ||                -29
     Werte-    | 0,000000000 bis  ||1,00000000 bis  ||          1,00000000 bis
     bereich   | 0,999999999 E-30 ||9,99999999 E-30 ||          9,99999999 E-29
     Schritt-  | 0,000000001 E-30 ||0,00000001 E-30 ||          0,00000001 E-29
     weite     |         1 x E-39 ||       1 x E-38 ||                 1 x E-37

Unter den Querstrichen (+) des zweiten Zahlenstrahls ist jeweils die erste Stelle des Signifikanden angegeben, und doppelte Querstriche (#) markieren den Wechsel des Exponenten. Dabei ist im Ansatz noch zu erkennen, daß Intervallbreite und Schrittweite bei e = –29 zehnmal so groß sind wie bei e = –30. Die Lücke zwischen der Null und der kleinsten normierten Gleitkommazahl kann bei Zwischenergebnissen in diesem Wertebereich größere Rundungsungenauigkeiten verursachen. Deshalb wird heute üblicherweise hier mit unnormierten Zahlen weitergerechnet, in den üblichen Computern jedoch mit Binär- statt mit Dezimalzahlen. Mit kleiner werdenden unnormierten Gleitkommazahlen nimmt zwar auch deren relative Genauigkeit ab, aber dieser Übergang ist längst nicht so abrupt, als wenn es keine unnormierten Zahlen gäbe. Auf die Fehlertheorie zu diesem Problem soll hier jedoch nicht eingegangen werden.

Auch für die Codierung von ∞ (unendlich) reicht bei dem zusätzlichen Exponenten e = +31 ein einiger Signifikand aus. Wie bei der Null wird auch hierfür meistens der Signifikand 000000000 verwendet. Die übrigen Signifikanden 000000001 bis 999999999 werden heute üblicherweise zum Codieren von sog. Nicht-Zahlen (NaN = Not a Number) verwendet. Als normaler Benutzer bemerkt man davon nichts, weil sie nur innerhalb des Betriebsystems zum Codieren von aufgetretenen Ausnahmezuständen bzw. -ergebnissen verwendet werden. In modernen Prozessoren werden die verfügbaren NaNs in zwei Gruppen unterteilt, signalisierende (signaling) und stille (quiet). Durch diese Hilfsinformation können Fehler ggf. signalisiert und diagnostiziert werden, um solche Ausnahmen zu behandeln. Weitere Einzelheiten von NaNs werden in Abschnitt 3.5 für binäre Gleitkommazahlen des IEEE Standard 754 angegeben.   [^ Inhalt]

 
3.4 Binärsystem

Zur Zahlendarstellung in Digitalrechnern ist das Dezimalsystem mit seinen 10 verschiedenen Ziffern (0 bis 9) nicht so gut geeignet wie das Binärsystem mit der Basis 2. Dessen beide Binärziffern 0 und 1 können technisch besonders einfach dargestellt werden, sei durch zwei Spannungs- oder Strompegel, von denen einer näherungsweise null ist, oder durch die beiden Schaltzustände eines Kontakts, (aus- bzw. eingeschaltet) oder eines Relais (abgefallen bzw. angezogen). Da der Benutzer trotz alledem mit dem Dezimalsystem vertraut ist, müssen Zahlen zwischen diesen beiden Stellenwertsystemen konvertiert werden, bei der Eingabe dezimal ––› binär und zum Anzeigen bzw. Audrucken binär ––› dezimal.

In einem polyadischen Zahlensystem (Stellenwertsystem) mit einer beliebigen Basis B hat in einer Zahl jede Ziffer einen bestimmten Stellenwert, der von rechts nach links um wachsende Potenzen der Basis B zunimmt. Bei einer n-stelligen natürlichen Zahl N (einschließlich 0) beginnt das rechts mit B 0 = 1 und endet links mit B n–1. Bei einer gebrochenen Zahl R schließen sich nach rechts m Stellen des Bruchteils an, die vom ganzzahligen Teil durch ein Komma abgetrennt werden, im englischen Sprachraum durch einen Punkt (point). Negative Zahlen haben zusätzlich ein vorangestelltes Minuszeichen, das hier zunächst nicht betrachtet werden soll. Der Wert (ggf. Betrag) einer solchen Zahl ist die Summe aus den mit ihrem jeweiligen Stellenwert multiplizierten Ziffern.

Eine ganze Zahl (Integer) mit der Ziffernfolge   an–1 an–2 ... a1 a0   hat den Wert
N = Summe(ai*B^i) von i = 0 bis n-1
 
und eine gebrochene Zahl (Real) mit der Ziffernfolge   an–1 an–2 ... a1 a0 , a–1 ... am   hat den Wert
R = Summe(ai*B^i) von i = -m bis n-1

Wie bereits eingangs erwähnt, gilt diese Berechnung eines Zahlenwertes in einem polyadischen Zahlensystem für jede beliebige Basis, d.h. gleichermaßen für das Dezimalsystem mit der Basis 10 und das Binärsystem mit der Basis 2. Das soll an folgendem Zahlenbeispiel verdeutlicht werden.

Gewöhnl. Dezimalzahl 178,125 = 1·100 + 7·10 + 8 + 1/10 + 2/100 + 5/1000
Normierte Dezimalzahl   
 
1,78125
 
· 102
 
= (1 + 7/10 + 8/100 + 1/1000 + 2/10000 + 5/100000) · 100
= 178,125
Gewöhnl. Binärzahl
 
10110010,001
 
   = 1·128 + 0·64 + 1·32 + 1·16 + 0·8 + 0·4 + 1·2 + 0 + 0/2 + 0/4 +1/8
= 178,125
Normierte Binärzahl
 
1,0110010001
 
· 2111   
 
= (1 + 0/2 + 1/4 + 1/8 + 0/16 + 0/32 + 1/64 + 0/128 + 0/256 + 0/512 + 0/1024 + 1/2096) · 128
= 1,3916015625... · 128 = 178,125

[^ Inhalt]

 
a) Die Z3 von Konrad Zuse

Trotz des zusätzlichen Konvertierungsaufwandes verwendete Konrad Zuse als angehender Bauingenieur in seiner ersten Rechenmaschine Z1 bereits 1936 sog. halblogarithmische Binärzahlen, d.h. binäre Gleitkommazahlen, während in anderen zeitgenössischen Rechnern noch Festkommazahlen benutzt wurden [8]. Wegen der detaillierten Dokumentation in [8] wird hier die Zahlendarstellung in Zuses 1941 fertiggestellter Relaisrechenmaschine Z3 als Beispiel beschrieben.

Gleitkommazahlen in der Z3 von Konrad Zuse

v a6 a5 a4 a3 a2 a1 a0 b–1 b–2 b–3 b–4 b–5 b–6 b–7 b–8 b–9 b–10 b–11 b–12 b–13 b–14
± (7 Bits) Exponent (14 Bits) Bruchteil [Signifikand = 1,Bruchteil]
Die vorstehende Tabelle zeigt die innere Struktur der 22 Bit breiten Gleitkommazahlen in der Z3:
 
  1 Bit  Vorzeichen v der Zahl (des Signifikanden)
  7 Bits Exponent a als Zweierkomplement von –64 bis +63
a = –64 zum Darstellen von 0 (null)
a = +63 zum Darstellen von ∞ (unendlich)
14 Bits Bruchteil b des Signifikanden als Binärzahl ohne Vorzeichen von b = 0 bis 1 – 2–14 in Schritten von 2–14
entsprechend einem Signifikanden als Binärzahl von s = 1 bis 2 – 2–14
Da der ganzzahlige Teil einer normierten Binärzahl immer 1 ist, braucht er nicht gespeichert zu werden, sondern gehört implizit zur Definition. Dadurch ist der Signifikand tatsächlich 15 Bit breit mit einer Genauigkeit von 2–14 ≈ 6,1 × 10–5
 
Damit ist die kleinste positive Zahl, die gespeichert werden kann,
 
1 × 2–63 ≈ 1,084 × 10–19, und die größte ist 1,9999 × 262 ≈ 9,223 × 1018.
 
Eingaben waren zwischen
 
1 × 10–8 und 9999 × 108 möglich.

Die Z3 konnte das berechnete numerische Ergebnis nicht drucken, sondern nur einzelne Dezimalziffern in einer Lampenmatrix anzeigen. Die darstellbaren Dezimalzahlen lagen zwischen 00001 und 19999 und die Exponenten zwischen –8 und +8. Die im Deutschen Museum in München ausgestellte Rekonstruktion der Z3 kann gegenüber dem nicht mehr vorhandenen Original die Exponenten im Bereich von –12 bis +12 ausgeben.

Die Anordnung "Vorzeichen | Exponent | Signifikand" in dieser Reihenfolge war seinerzeit schon richtungweisend, um die Größe von Gleitkommazahlen einfach miteinander vergleichen zu können. Da der Exponent von heute gebräuchlichen Gleitkommazahlen nicht mehr als Zweierkomplement codiert wird, soll an dieser Stelle kurz darauf eingegangen werden.

  Binärzahlen im Zweierkomplement
 
Zahlenbeispiel (n = 7) Allgemeine Anmerkungen
     dezimal  binär (7 Bits)     
       V10     6543210
     ----------------------
        63     0111111
        62     0111110
        61     0111101
        60     0111100
        :         :
         2     0000010
         1     0000001
         0     0000000
       - 1     1111111
       - 2     1111110
        :         :
       -61     1000011
       -62     1000010
       -63     1000001
       -64     1000000
 

Das Zweierkomplement ist eine gebräuchliche Darstellung von ganzen Binärzahlen mit Vorzeichen, das in vielen Programmiersprachen für ganzzzahlige Variable (Integers) mit verschiedenen Wortbreiten (n) benutzt wird, z.B. Word Integer (n = 16 Bits), Short Integer (n = 32 Bits) und Long Integer (n = 64 Bits), jeweils einschließlich des Vorzeichens. In der Spalte links ist das Zahlenbeispiel mit n = 7 für den Exponenten in der Z3 dargestellt. Entsprechend der Stellenschreibweise sind die Spalten von rechts nach links von 0 bis n–1 (hier von 0 bis 6) durchnumeriert. Die höchste Stelle (hier 6) ist die Vorzeichenstelle (0 = + / 1 = –). Mit den verbleibenden n – 2 Stellen (hier 0 bis 5) werden die positiven Zahlen normal binär codiert (hier von 0 bis +63). Die negativen Zahlen sind jedoch nicht als Vorzeichen und Betrag codiert, sondern als Ergänzung zu 2n (hier 27 = 128). Da der Code von 0 (null) als positive Zahl erscheint, reichen die negativen Zahlen um eine weiter als die positiven (hier bis –64 und bis +63). Die Stelle für 2n (hier 27 = 128) fällt nach links aus der definierten Wortbreite hinaus und entspricht damit der 0 (Null). Eine negative Zahl kann einfach gebildet werden, indem alle Binärstellen der entsprechenden positiven Zahl negiert werden, d.h. Nullen und Einsen vertauscht werden, und dann eine 1 addiert wird. Das Umrechnen einer negativen Zahl in ihren (positiven) Betrag, erfolgt nach derselben Methode.

Diese Anmerkungen zu den Eigenschaften von Binärzahlen im Zweierkomplement mögen hier ausreichen. Weitere Angaben dazu sind für das geplante einleitende Kapitel über polyadische Zahlensysteme vorgesehen. Abschließend wird die Codierung der o.a. binären Gleitkommazahl   1,0110010001 · 2111   im Z3-Format als Beispiel angegeben. Dabei ist zu bedenken, daß die Vorkommastelle (1,) bei normierten binären Gleitkommazahlen nicht gespeichert, sondern in der normierten Darstellung implizit enthalten ist.

Zahlenbeispiel   + 1,0110010001 · 2+111   im Z3-Format

0 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 0
v a6 a5 a4 a3 a2 a1 a0 b–1 b–2 b–3 b–4 b–5 b–6 b–7 b–8 b–9 b–10 b–11 b–12 b–13 b–14
± (7 Bits) Exponent = + 7 (14 Bits) Bruchteil [Signifikand = 1,Bruchteil]

[^ Inhalt]

 
b) Der IEEE Standard 754

Obwohl der Aufbau von binären Gleitkommazahlen während der weiteren Entwicklung in verschiedenen Computern bzw. Programmiersprachen recht ähnlich war, gab es durchaus gewisse Unterschiede. Das war besonders lästig, weil auch wegen der unterschiedlichen Rechenroutinen dieselbe Aufgabe auf verschiedenen Rechnern unerwartet andere Resultate ergeben konnte. Eine neue Ära begann mit der geplanten Großserienfertigung von mathematischen Koprozessoren für PCs. Für die aufwendige Entwicklung eines hochintegrierten Prozessors auf einem Siliziumchip für schnelles Rechnen mit Gleitkommazahlen, d.h. für eine sog. FPU (Floating-Point Unit), wurde die einheitliche Normung von Zahlentypen unabdingbar. Diese Arbeiten wurden vom Marktführer Intel vorangetrieben, der für seinen zu entwickelnden NPX (Numeric Processor) die bestmögliche Lösung für Zahlendarstellung und Arithmetik realisieren wollte.

Unter der Federführung des IEEE begannen 1977 Konferenzen, um FPUs, d.h. spezielle Mikroprozessoren für Gleitkommaarithmetik zu normen, an denen als führender Mathematiker auch Prof. Kahan teilnahm [10]. 1980 wurde die Anzahl der Normvorschläge auf zwei reduziert, von denen sich der K-C-S-Vorschlag von 1977 (benannt nach seinen Autoren Kahan, Coonen und Stone) gegen den Vorschlag von DEC durchsetzte. Ein bedeutender Meilenstein auf dem Weg zur Norm war die Diskussion über die Behandlung des Unterlaufs, der zuvor meistens vernachlässigt worden war. In dem Standard IEEE 754 sind zwei Gleitkommaformate für einfach und doppelt genaue Zahlen (single und double precision) in allen Details und die Mindesteigenschaften von zwei erweiterten Formaten (single extended und double extended precision) festgelegt. Sie werden, soweit von Intel verwendet, im nächsten Abschnitt 3.4c beschrieben oder können in der verwendeten Quelle [10] nachgeschaut werden. In IEEE 754 sind außerdem die bereitzustellenden Operationen für Artíthmetik, Berechnen der Quadratwurzel, Konversionen und Vergleiche festgelegt. Dazu gehören die Konversionen zwischen allen unterstützten Gleitkomma- und ganzzahligen Formaten im Binär und Dezimalsystem einschließlich des korrekten Rundens, wie es in Abscnitt 3.3 b4 dieser Abhandlung am Beispiel von dezimalen Gleitkommazahlen beschrieben worden ist.

Bereits mit der Entwicklung dieses IEEE Standards 754 verwendete Intel diese Normvorschläge in seinem ersten Gleitkomma-Koprozessor i8087, der 1980 auf den Markt kam. Dessen Architektur wurde nahezu unverändert in den 1983 fertiggestellten Nachfolgetyp i80287 übernommen. Diese ersten beiden Koprozessoren der Intel-Typenreihe (i8087 und i80287) wurden noch nach der Vorversion des IEEE-Standards 754 gebaut, dessen endgültige Form 1985 erschien und sich in ein paar Feinheiten von der Vorversion unterschied. Deshalb wurden alle späteren Intel-Typen (i387 ff. ab 1986) an den endgültigen Standard von 1885 [10] angepaßt. Diese zunächst noch recht teuren 'Rechenknechte' i8087 (1980), i80287 (1983) und i387 (1986) konnten bei Bedarf zusätzlich zu dem entsprechenden Hauptprozessor (i8086, i80286 bzw. i80386) in einen eigens dafür vorhandenen Sockel auf der Hauptplatine des PCs gesteckt werden, wenn mit diesem PC umfangreiche numerische Rechnungen schneller ausgeführt werden sollten. Ab dem i487 (1991) war der Koprozessor erstmals zusammen mit dem Hauptprozessor in einem gemeinsamen IC untergebracht.

Als ich Anfang der 1990-er Jahre die Grundlagenvorlesung "Grundzüge der Datentechnik" übernommen habe, hielt ich es für nötig, das inzwischen angestaubte und wenig detaillierte Kapitel über Gleitkommazahlen zu aktualisieren. Eine hervorragende Beschreibung in englischer Sprache fand ich seinerzeit im Intel 80387 Programmer's Reference Manual [9], das als Arbeitsunterlage von meinen Kollegen verwendet wurde, die maschinenorientierte Programme schrieben. An die Darstellung binärer Gleitkommazahlen in diesem Handbuch habe ich mich bereits in meiner Vorlesung [11] weitgehend gehalten, und ich werde sie auch hier mit den betreffenden deutschen Bezeichnungen verwenden. Bedauerlicherweise wird in der deutschen Ausgabe des zu Grunde liegenden IEEE Standard 754 [10] der Bruchteil des Signifikanden immer noch als Mantisse bezeichnet, ein Begriff der hierfür sachlich nicht zutrifft (siehe auch Signifikand oder Mantisse?). Das ist in der amerikanischen Origialausgabe nicht mehr der Fall, wo seit langem konsequent die Begiffe 'sinificand' (Signifikand) für die gesamte Ziffenfolge einer Gleitkommazahl bzw. 'fraction' (Bruchteil) für deren Nachkommastellen verwendet werden.   [^ Inhalt]

 
c) Die numerischen Prozessoren (NPX) von Intel

In den numerischen Prozessoren von Intel werden 7 binäre Zahlentypen entsprechend dem IEEE Standard 754 verwendet, davon 3 Gleitkommaformate verschiedener Genauigkeit. Eine Besonderheit ist deren standardisierter Code für den Exponenten als sog. 'Biased Exponent' E, dessen Binärwert um eine geeignete additive Konstante E0 (= Bias) erhöht wird

E = e + E0     aus dem sich der Exponent gemäß     e = EE0     ergibt.

Der in manchen deutschen Quellen verwendete Begriff 'Charakteristik' für diese Form des Exponenten ist allerdings wenig anschaulich und verwirrt eher, als daß er hilft. Ein 'Bias' ist u.a. ein Versatz oder eine Ablage im Sinne einer Nullpunktverschiebung. Je nach dem Zusammenhang kann dieser Begriff sowohl in zusammengesetzen Wörtern als auch allein vielerlei bedeuten, z.B. Vorspannung, Vormagnetisierung, Ruhewert (zur Einstellung eines Arbeitspunktes), aber auch Befangenheit, Neigung, Tendenz, Voreingenommenheit, Vorurteil, systematischer Fehler uam. Deshalb drücke ich mich ganz bewußt davor, den Begriff 'Biased Exponent' zu übersetzen, sondern behalte ihn hier unverändert bei, weil ich leider keinen prägnanten deutschen Begriff dafür kenne. Im beschreibenden Text trifft die Übersetzung 'Ruhewert' oder 'Nullpunktverschiebung' die Bedeutung von 'Bias' in diesem Zusammenhang noch am ehesten, aber bei Werteangaben und in Formeln werde ich der Eindeutigkeit wegen weiterhin 'Bias' bzw. E0  verwenden wie in der o.a. Gleichung. Bevor ich jedoch näher darauf eingehe, stelle ich in Tabelle 3.4-1 zunächst eine Liste aller sieben standardisierten Zahlentypen vor mit einer kurzen Angabe ihrer Eigenschaften und der internen Zuordnung ihrer Bits, soweit das nötig erscheint.

  1.  
    Tabelle 3.4-1: Zahlentypen entsprechend IEEE Standard 754 (ab Intel i387)
     
  2. 16 Bits: Word Integer, Wertebereich ± 215 ≈ ± 3,2·103, Zweierkomplement
  3. 32 Bits: Short Integer,  Wertebereich ± 231 ≈ ± 2,1·109, Zweierkomplement
  4. 64 Bits: Long Integer,  Wertebereich ± 263 ≈ ± 9,2·1018, Zweierkomplement
  5. 80 Bits: Packed BCD, 18 Digits (Dezimalstellen), Wertebereich ± 1018
    v = 1 Bit Vorzeichen (0 = + / 1 = –), x = 7 Bits unbenutzt
    d 17 bis d 0 = 18 × 4 Bits gepackt (2 Dezimalstellen pro Byte)
  6. 32 Bits: Single Precision (Einfache Genauigkeit, 24 Bits)
    v = 1 Bit Vorzeichen (0 = + / 1 = –), E (Biased Exponent) = 8 Bits, Bias E0 = 127 (7FH)
    Signifikand = 1 Bit ganzzahliger Teil (implizit) + 23 Bits Bruchteil
    Wertebereich 2±127 ≈ 10±38, Genauigkeit 2–23 ≈ 1,3·10–7
  7. 64 Bits: Double Precicion (Doppelte Genauigkeit, 53 Bits)
    v = 1 Bit Vorzeichen (0 = + / 1 = –), E (Biased Exponent) = 11 Bits, Bias E0 = 1023 (3FFH)
    Signifikand = 1 Bit ganzzahliger Teil (implizit) + 52 Bits Bruchteil
    Wertebereich 2±1023 ≈ 10±308, Genauigkeit 2–52 ≈ 2,2·10–16
  8. 80 Bits: Extended Precision (Erweiterte Genauigkeit, 64 Bits)
    v = 1 Bit Vorzeichen (0 = + / 1 = –), E (Biased Exponent) = 15 Bits, Bias E0 = 16383 (3FFFH)
    Signifikand = 64 Bits (1 Bit ganzzahliger Teil und 63 Bits Bruchteil)
    Wertebereich 2±16383 ≈ 10±4932, Genauigkeit 2–63 ≈ 1,1·10–19

  1. ¦-------|-------|                                                 Word Integer
     15      8       0                                                 Zweierkomplement

  2. ¦-------|-------|-------|-------|                                 Short Integer
     31     24      16       8       0                                 Zweierkomplement

  3. ¦-------|-------|-------|-------|-------|-------|-------|-------| Long Integer
     63     56      48      40      32      24      16       8       0 Zweierkomplement

  4. ¦v|--x--|d17'd16|d15'd14|d13'd12|d11'd10|d_9'd_8|d_7'd_6|d_5'd_4|d_3'd_2|d_1'd_0| Packed
     79     72      64      56      48      40      32      24      16       8       0 BCD

  5. ¦v|--E_8-||--Signifikand_1+23---|                                 Single Precision
     31      23                      0

  6. ¦v|---E_11--||-----------------Signifikand_1+52-----------------| Double Precision
     63         52                                                   0

  7. ¦v|-----E_15----|g-------------------Signifikand_64 (incl. g)------------------|
     79             6463                                                             0
                                                                       Extended Precision
     Zeichenerklärung:
       * Jedes Zeichen entspricht einem Bit
       * Die 63 in Zahlentyp 7 bezeichnet das Bit über der 6
         alle anderen Bitnummern bezeichnen das Bit über ihrer Einerstelle
     ¦ = niederwertigstes Bit (LSB) der nächsten Zahl (gehört nicht mehr zu dieser Zahl)
     | = LSB (least significat bit) eines Byte,
         ggf. oberes oder unteres Bit einer größeren Anzahl von Bits
     v = Vorzeichenbit
     x = 7 unbenutzte Bits (einschließlich |--x--|)
     d = digit = 4 Bits pro Dezimalziffer (von d17' bis d_0|)
     ' = LSB der höherwertigen Dezimalziffer von 2 gepackten Ziffern in einem Byte
     - = Füllzeichen für ein Bit
     _ = alternatives Füllzeichen, wo - mit 'minus' verwechselt werden könnte
     E = Biased Exponent = Exponent e + Bias E0
         Zahl nach E_ = dessen Anzahl von Bits (8, 11 oder 15)
     Significand (Ziffernfolge einer binären Gleitkommazahl)
         Zahl nach Signifikand_ = dessen Anzahl von Bits
         bei 1+23 und 1+52 = impliziter ganzzahliger Teil g + dargestellter Bruchteil b
         bei 64 = vollst. Signifikand zum Rechnen incl. des ganzzahligen Teils g (1 bzw. 0)

Die ersten sechs Zahlentypen (1 bis 6) werden bei entsprechender Deklaration im Arbeitsspeicher bzw. auf anderen Datenträgern abgelegt, und der interessierte Fachmann kann sie dort, z.B. zur Fehlersuche, mit einem geeigneten Monitorprogrammen untersuchen. Der Zahlentyp 7 (erweiterte Genauigkeit) ist hingegen ausschließlich zur internen Darstellung von Gleitkommazahlen in den mathematischen Koprozessoren (NPX) von Intel für die dort auszuführenden Rechenoperationen vorgesehen. Diese Koprozessoren können die ersten sechs Zahlentypen lediglich laden und speichern, wandeln sie jedoch intern generell in das Gleitkommaformat 7 mit erweiterter Genauigkeit (extended precision) um, weil ihre Rechenhardware dafür optimiert ist. Dieser Gedanke dürfte für die meisten Leute erst einmal gewöhnungsbedürftig sein, aber die mathematischen Koprozessoren sind nun einmal auf besondere Rechengeschwindigkeit für diesen Zahlentyp gezüchtet, der für die meisten Anwendungen auch bei Kettenrechnungen genügend Stellen zum korrekten Runden mitführt. Gegenüber doppelt genauen Gleitkommazahlen sind das immer noch 11 Binärstellen (64 – 53), die mehr als 3 Dezimalstellen entsprechen (≈ 19 – 16). Bevor wir uns den Besonderheiten des sog. Biased Exponent widmen, sollen zunächst die Codetabellen der drei Gleitkommaformate angegeben werden, damit wir nicht wie die Blinden vom Licht reden. Dabei sind sich die Formate 5 und 6 (einfache bzw. doppelte Genauigkeit) so ähnlich, daß sie in einer Tabelle zusammengefaßt werden können.

 
Tabelle 3.4-2: Gleitkommazahlen für einfache und doppelte Genauigkeit

Klasse VZ
v
Biased Exp.
E = e + E0
EE...EE
Signifikand
(Bruchteil)
bb...bb
Positive NaNs Still
(Quiet)
0
:
0
11...11
:
11...11
11...11
:
10...00
Signalisierend
(Signaling)
0
:
0
11...11
:
11...11
01...11
:
00...01
Unendlich ∞ 0 11...11 00...00
Zahlen Normiert
(g = 1)
0
:
0
11...10
:
00...01
11...11
:
00...00
Unnormiert
(g = 0)
0
:
0
00...00
:
00...00
11...11
:
00...01
Null 0 (g = 0) 0 00...00 00...00
Negative Zahlen Null 0 (g = 0) 1 00...00 00...00
Unnormiert
(g = 0)
1
:
1
00...00
:
00...00
00...01
:
11...11
Normiert
(g = 1)
1
:
1
00...01
:
11...10
00...00
:
11...11
Unendlich ∞ 1 11...11 00...00
NaNs Signalisierend
(Signaling)
1
:
1
11...11
:
11...11
00...01
:
01...11
     undefiniert
Still
(Quiet)
1
:
1
11...11
:
11...11
10...00
:
11...11
  einfach genau
doppelt genau
  8 Bits
11 Bits
23 Bits
52 Bits
g = ganzzahliger Teil des Signifikanden
g = 1, soweit nicht anders notiert

 
Tabelle 3.4-3: Interne Gleitkommazahlen für erweiterte Genauigkeit

Klasse VZ
v
Biased Exp.
E = e + E0
EE...EE
Signifikand
(vollständig)
g,bb...bb
Positive NaNs Still
(Quiet)
0
:
0
11...11
:
11...11
1 11...11
:
1 10...00
Signalisierend
(Signaling)
0
:
0
11...11
:
11...11
1 01...11
:
1 00...01
Unendlich ∞ 0 11...11 1 00...00
Zahlen Normiert
(Normals)
0
:
0
11...10
:
00...01
1 11...11
:
1 00...00
Pseudo-unnormiert
(Pseudodenormals)
0
:
0
00...00
:
00...00
1 11...11
:
1 00...00
Unnormiert
(Denormals)
0
:
0
00...00
:
00...00
0 11...11
:
0 00...01
Null 0 0 00...00 0 00...00
Negative Zahlen Null 0 1 00...00 0 00...00
Unnormiert
(Denormals)
1
:
1
00...00
:
00...00
0 00...01
:
0 11...11
Pseudo-unnormiert
(Pseudodenormals)
1
:
1
00...00
:
00...00
1 00...00
:
1 11...11
Normiert
(Normals)
1
:
1
00...01
:
11...10
1 00...00
:
1 11...11
Unendlich ∞ 1 11...11 1 00...00
NaNs Signalisierend
(Signaling)
1
:
1
11...11
:
11...11
1 00...01
:
1 01...11
             undefiniert
Still
(Quiet)
1
:
1
11...11
:
11...11
1 10...00
:
1 11...11
  erweitert genau 15 Bits 64 Bits
g = ganzzahliger Teil des Signifikanden

Der Wertebereich für den Exponenten e sollte weitgehend symmetrisch zu 0 (null) sein, damit auch der Kehrwert jeder Gleitkommazahl dargestellt werden kann. e könnte zwar im Zweierkomplement gespeichert werden, wie es Zuse gemacht hat (Abschnitt 3.4), aber die Urheber des o.a. Standards hielten es für zweckmäßiger, einen Code zu verwenden, der bei bestimmten Operationen (z.B. Größenvergleichen) als positive Binärzahl (ohne Vorzeichen) interpretiert werden kann. Mit einem Binärcode von n Bit können N = 2n verschiedene Kombinationen gebildet werden, die entsprechend ihrer Deklaration wahlweise

als –2n–1N ≤ 2n–1 – 1 (Zweierkomplement, vorzeichenbehaftet) oder
als        0 ≤ N ≤ 2n – 1    (Binärzahlen ohne Vorzeichen) interpretiert werden können

Beide Wertebereiche sind gleich groß und unterscheiden sich offensichtlich nur um einen Versatz von 2n–1. Aus bestimmten Gründen wird daher eine Nullpunktverschiebung (Bias) E0 gewählt, die um 1 kleiner ist als 2n–1. Damit beginnt der Binärcode von E = für alle negativen Exponenten einschließlich 0 (e ≤ 0) mit einer führenden 0 und für alle positiven Exponenten (e > 0) mit einer führenden 1, wie aus der folgenden Tabelle ersichtlich ist.

 
Tabelle 3.4-4: "Biased Exponents" E = e + E0 für alle drei Genauigkeiten

Klasse allge-
mein
5. Einfach (n = 8 Bits) 6. Doppelt (n = 11 Bits) 7. Erweitert (n = 15 Bits)
binär dezimal binär dezimal binär dezimal
E E E e E E e E E e
∞ & NaNs 2n – 1 1111 1111 255   111 1111 1111 2047   111 1111 1111 1111 32767  
normiert max. 2n – 2 1111 1110 254 +127 111 1111 1110 2046 +1023 111 1111 1111 1110 32766 +16383
: : : : : : : : : : :
e = + 1 2n–1 1000 0000 128 +1 100 0000 0000 1024 +1 100 0000 0000 0000 16384 +1
e = 0   (Bias) 2n–1 – 1 0111 1111 127 0 011 1111 1111 1023 0 011 1111 1111 1111 16383 0
e = – 1 2n–1 – 2 0111 1110 126 –1 011 1111 1110 1022 –1 011 1111 1111 1110 16382 –1
: : : : : : : : : : :
normiert min. 1 0000 0001 1 –126 000 0000 0001 1 –1022 000 0000 0000 0001 1 –16382
0 & unnorm. 0 0000 0000 0 –126 000 0000 0000 0 –1022 000 0000 0000 0000 0 –16382
Der Wert einer normierten Gleitkommazahl (für 1 ≤ E ≤ 2n – 2) der Typen 5 und 6 ist danach
 
R = (–1)v · 2EE0 · 1,bb...bb     wobei     bb...bb     der Bruchteil des Significanden ist.
 
Im unnormierten Bereich (für E = 0) ergibt sich stattdessen
 
R = (–1)v · 21 – E0 · 0,bb...bb     wobei     bb...bb     der Bruchteil des Significanden ist.
 
Da in diesem Bereich ist der ganzzahlige Teil des Signifikanden nicht mehr g = 1, sondern g = 0 ist, wird mit bb...bb = 0 auch der Wert 0 (null) dargestellt. Für den größtmöglichen Exponenten E kennzeichnet der Bruchteil bb...bb = 0 den Wert ∞ und dessen andere Kombinationen die verschiedenen NaNs, wie in Tabelle 4.4-2 und 4.4-3 angegeben.
 
Bei den NPX-internen Gleitkommazahlen in erweiterter Genauigkeit wird der gesamte Signifikand einschließlich seines ganzzahligen Teils g dargestellt. Für alle Rechenoperationen muß dieser ganzzahlige Teil nämlich als entsprechendes Bit tatsächlich vorhanden sein, weil für arithmetische Verknüpfungen dessen implizite Definition nicht ausreicht.
 
Signifikand     s = g,bb...bb     wie in Tabelle 4.4-3 angegeben.
 
Der Wert einer normierten Gleitkommazahl (für 1 ≤ E ≤ 2n – 2) des Typs 7 ist danach
 
R = (–1)v · 2EE0 · s     weil dieser vollständige Signifikand auch den ganzzahligen Teil enthält.
 
Im unnormierten Bereich (für E = 0) ergibt sich stattdessen
 
R = (–1)v · 21 – E0 · s     wobei der ganzzahlige Teil des Signifikanden 0 (null) sein sollte.
 
Da bei erweiterter Genauigkeit der ganzzahlige Teil g des Signifikanden unabhängig vom Exponenten angegeben werden kann, sind widersprüchliche Codes möglich. Deshalb ließ die Vorversion des IEEE Standards 754 einige nicht-normierte Gleitkommazahlen (unnormals) zu, die vom i8087 noch unterstützt wurden. Die meisten davon sind in der endgültigen Norm von 1985 gestrichen worden und werden daher vom i387 ab nicht mehr unterstützt. Übrig geblieben sind lediglich die sog. pseudo-unnormierten Zahlen (pseudodenormals in Tabelle 4.4-3), bei denen g = 1 im Signifikanden dem Exponenten E = 0 widerspricht. Solche Zahlen werden zwar nicht mehr erzeugt, aber richtig interpretiert, falls sie dennoch vorhanden sind. Ihr Wert R beträgt für E = 0 ebenfalls
 
R = (–1)v · 21 – E0 · s     obwohl der ganzzahlige Teil des Signifikanden g = 1 ist.
 
Der Exponent wird dabei jedoch von E = 0 (unnormiert) in den kleinsten Wert E = 1 für normierte Zahlen korrigiert, dem er entspricht, und ggf. in dieser korrekten Form zurückgeschrieben.

Wie bereits erwähnt, ist dieses interne Gleitkommaformat gegenüber doppelt genauen Gleitkommazahlen um 11 Binärstellen genauer, die mehr als 3 Dezimalstellen entsprechen, so daß für die meisten Anwendungen auch bei Kettenrechnungen genügend Stellen zum korrekten Runden mitgeführt werden. Auch der Wertebereich läßt mit 10±4932 gebenüber 10±308 bei doppelter Genauigkeit kaum Wünsche offen.   [^ Inhalt]

 
4. Schlußbetrachtungen

In der vorstehenden Abhandlung werden dekadische Logaritmen und Gleitkommazahlen in ihren wesentlichen Details einschließlich numerischer Rechenbeispiele beschrieben, so daß ihre Gemeinsamkeiten und Unterschiede deutlich zu erkennen sind. Im Kapitel über Logarithmen wird auch der Rechenschieber behandelt, dessen Skalen entsprechend dekadischen Logarithmen geteilt sind und der für etliche Generationen von Schülern, Technikern, Ingenieuren und Wissenschaftlern als mechanisches Rechenhilfsmittel unentbehrlich war, bis der Taschenrechner erfunden wurde. Für jüngere Angehörige dieser Berufsgruppen dürfte die in diesem Kapitel beschriebene Rechentechnik inzwischen weitgehend Geschichte sein.

In dem Kapitel über Gleitkommazahlen wird zunächst einmal mit dem sprachlichen Wildwuchs von ein paar Fachbegriffen aufgeräunt. Dieser Zahlentyp und die zugehörigen Rechenverfahren werden zunächst am Beispiel des gewohnten Dezimalsystems erläutert, wobei auch ihre Unterschiede und Gemeinsamkeiten gegenüber Logarithmen deutlich werden. Die anschließenden Abschnitte beschreiben binäre Gleitkommazahlen von Konrad Zuses "halblogarithmischer Zahlendarstellung" in der Z3 bis zum IEEE Standard 754 und dessen Anwendung in den numerischen Prozessoren NPX von Intel mit den Codetabellen der dort verwendeten drei Typen für einfache, doppelte und erweiterte Genauigkeit (single, double und extended precision) sowie einer Erläuterung des in dieser Norm verwendeten "Biased Exponent".

In der folgenden Tabelle 4-1 sind die Gemeinsamkeiten und Unterschiede zwischen Logarithmen und Gleitkommazahlen abschließend zusammengestellt.

Tabelle 4-1: Gemeinsamkeiten und Unterschiede

Merkmale Logartihmen Gleitkommazahlen
Anwendungszweck Rechenhilfsmittel großer Wertebereich mit begrenzter Genauigkeit
Umwandlung:
log. = logatithmiert
lin.  = linear (nicht log.)
Ziffernfolge (log.) Mantisse (lin.) Signifikand
Zehnerpotenz (log.) Kennziffer (log.) Exponent
Zahlenbeispiel 178,125 2,2507 1,78125 E 2
Rechenoperationen zweier Zahlen (Numeri) x und y Addition/Subtraktion nicht möglich Add./Sub. der Signifikanden bei gleichem Exponenten
Multiplikation/Division Add./Sub. der Logarithmen
lg x ± lg y
Mult./Div. der Signifikanden u. Add./Sub. der Exponenten
Potenzieren x y Mult. (lg x) · y Pot. (Signifikand(x)) y u.
Mult. (Exponent(x)) · y
Radizieren yx Div. (lg x) / y Rad. y√(Signifikand(x)) u.
Div. (Exponent(x)) / y

Aus der Tabelle ist deutlich zu erkennen, daß kompliziertere Rechnungen durch Logarithmen vereinfacht werden. Multiplikation und Division beliebiger Zahlen werden zu einer Addition bzw. Subtraktion von Logarithmen, die man mit Hilfe einer Logarithmentafel aus den Operanden bestimmt und mit der man auch das Ergebnis wieder in eine normale Zahl (den Numerus) zurückwandelt. Zum Potenzieren und Radizieren wird der Logarithmus der Basis mit dem Exponenten multipliziert bzw. der Logarithmus des Radikanden durch den Wurzelexponenten dividiert. Da Exponent bzw. Wurzelexponent normalerweise kleine ganze Zahlen sind, können auch diese Aufgaben leicht schriftlich gerechnet werden, sofern nicht ohnehin ein Rechenschieber dafür benutzt wird. Bei der Addition und Subtraktion von Zahlen können Logarithmen nicht helfen, d.h. Summen und Differenzen wurden damals ganz normal schriftlich ausgerechnet.

Im Gegensatz zu Logarithmen vereinfachen Gleitkommazahlen keineswegs den Rechenaufwand, sondern sie dienen dazu, Zahlen mit begrenzter Genauigkeit in einem großen Wertebereich darzustellen, ohne dafür zu viel Speicherplatz zu benötigen. Da die Ziffernfolge einer Gleitkommazahl nicht logarithmiert ist, sollte sie auch nicht 'Mantisse' genannt werden, sondern treffender 'Signifikand'. In Computern ist die komplizierte Rechnerei mit Gleitkommazahlen leicht möglich und wird durch die Einsparung an Speicherplatz bei weitem aufgewogen.   [^ Inhalt]

 
5. Quellen

[1] W. Dreetz: Schülkes Tafeln
vierstelliger Logarithmen, Funktions- und Zahlenwerte
43. Auflage, B.G. Teubner Verlagsgesellschaft, Stuttgart, 1956
[2] Karl Rottmann: Mathematische Funktionstafeln
BI-Hochschultaschenbuch 14/14a
Bibliographisches Institut AG, Mannheim, 1959
[3] Aristo: Anleitung zum Rechenstab Aristo Scholar LL
11. Auflage, Dennert & Pape, Hamburg Altona, 1957
[4] Texas Instruments: Anleitung zum
Elektronischen Rechenschieber SR-50
Texas Instruments Deutschland GmbH, Freising, 1974
[5] Georg Bayer: Programmierung digitaler Rechenautomaten I
Technische Hochschule Braunschweig
Vorlesungsmitschrift und Übungsaufgaben, WS 67/68
[6] Wikipedia: Significand
http://en.wikipedia.org/wiki/Significand*)
Ausdruck vom 01.12.2009
[7] Konrad Zuse: Der Computer – Mein Lebenswerk
Springer-Verlag, Berlin, Heidelberg, 1984 – 1993,
ISBN 3-540-56292-3
[8] Raúl Rojas: Die Rechenmaschinen von Konrad Zuse
Springer-Verlag, Berlin, Heidelberg, 1998,
ISBN 3-540-63461-4
[9] Intel: 80387 Programmer's Reference Manual
Chapter 3, Special Computational Situations,
Intel Corp., (vor 1992)
[10] Wikipedia: IEEE 754
(ANSI/IEEE Std 754-1985; IEC-60559)
http://de.wikipedia.org/wiki/IEEE_754*)
Ausdruck vom 11.01.2006
[11] H.Ch. Zeidler, M. Gärtner: Vorlesungsumdruck
Informatik für Ingenieure – Grundzüge der Datentechnik
Institut für Datenverarbeitungsanlagen, TU Braunschweig, 1992
[^ Inhalt]
Navigation: Home
Ing
Berufliches
Mathematisches
Logarithmen & Gleitkommazahlen
Toepler-Algorithmus
Sprachliches
Persönliches
*) externe Seite in neuem Fenster (Rückkehr nach hier durch Schließen des neuen Fensters)

Stand: 17.10.2012 / © MG