„Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ___________________________________________________________________________________________________________ 2.0 Zahlendarstellung, Konvertierungsalgorithmen und arithmetische Algorithmen Ziele dieses Kapitels ☺Kennenlernen wesentlicher Zahlensysteme und die Konvertierung von Zahlen zwischen unterschiedlichen Zahlensystemen ☺Repräsentation von positiven und negativen Zahlen in einem Computer ☺Addition und Subtraktion im dualen ( binären ) Zahlensystem ☺Erfassen von rationalen Zahlen mit der Festkomma- und Gleitkommadarstellung ☺Kennenlernen der IEEE-754-Gleitkommaformate und des Extendedprecision-Formats von Intel Seite 2 - 0 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ 2.1 Zahlensysteme und Konvertierungsalgorithmen Informationen können in unterschiedlicher Art vorliegen. In unserer natürlichen Umgebung liegen Informationen häufig als analoge Werte, als analoge Signale bezeichnet, vor, z. B. die Temperatur in Abhängigkeit von der Zeit. Hierbei sind sowohl der Temperaturwert als auch der Zeitwert kontinuierlich, wie in Abbildung 2.1 dargestellt ist. Digitale Rechner, und das sind heutzutage nahezu alle Rechner, arbeiten dagegen mit digitalen Signalen. Diese Signale sind sowohl im Wert als auch in der Zeit diskret, wie ebenfalls in Abbildung 2.1 dargestellt ist. Damit Informationen aus analogen Signalen mit digitalen Rechnern verarbeitet werden können, müssen diese also zuerst digitalisiert werden. Dies erfolgt technisch in einem Analog- zu Digital-Konverter ( ADC ). Das Ergebnis einer solchen Konvertierung ist in Abbildung 2.1 dargestellt. Mit einem digitalen Rechner können diese Daten dann digital verarbeitet, z. B. gefiltert werden. Eventuell ist dann auch noch eine Rückwandlung vom digitalen Signal in ein analoges Signal, in einem Digital- zu Analog-Konverter, wie ebenfalls in Abbildung 2.1 gezeigt, möglich. Ein anderes Beispiel, wo zunächst analoge Informationen vorliegen, ist ein Foto auf Fotopapier. Wenn dieses dann eingescannt wird, liegen die Bildinformationen digital vor. Das analoge Foto wurde digitalisiert d. h. es liegt dann ein digitales Bild vor. Auch eine digitale Kamera wandelt analoge Bilder unserer Umgebung in digitale Bilder um, und speichert diese. Damit also Informationen in einem digitalen Rechner verarbeitet werden können, müssen sie in eine Form gebracht werden, die der Rechner verarbeiten kann, d.h. sie müssen binär, mit 0 und 1, codiert werden. Ein üblicher digitaler Rechner arbeitet nämlich mit Spannungspegeln, die 0 entspricht dabei einem niedrigen Spannungspegel L ( Low ), und die 1 entspricht dabei einem hohen Spannungspegel H ( High ). Da Zahlen bei der Erfassung von Informationen eine wichtige Rolle spielen, sind diese entsprechend zu kodieren. Zahlensysteme bei denen nur zwei verschiedene Ziffern, hier z. B. 0 und 1 benutzt werden, heißen Dualsystem ( vom lateinischen dualis = zwei enthaltend ) manchmal auch Zweier- oder Binärsystem genannt. Das gebräuchlichste Zahlensystem im Alltag ist das Dezimalsystem. Seite 2 - 1 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Abbildung 2.1: Darstellung verschiedener Signaltypen anhand eines zeitlichen Temperaturverlaufes Seite 2 - 2 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Hier werden zehn unterschiedliche Ziffern, 0 bis 9 ( dezi = zehn ) verwendet um Zahlen darzustellen. In der Technik sind auch noch das Oktal- ( acht ) und Hexadezimal- ( sechszehn ) System im Gebrauch, weil sie eine besonders einfache Konvertierung ins Dualsystem erlauben. Bei all diesen Zahlensystemen spielt für die Wertermittlung einer Zahl nicht nur die verwendete Ziffer sondern auch deren absolute Position eine Rolle. Daher handelt es sich bei diesen Zahlensystemen um Stellenwertsysteme, kurz auch Stellensysteme genannt. Der Wert einer Dezimalzahl mit den Ziffern an-1,….a0 mit 0 ≤ a i < b = 10 wird z. B. auf folgende Art berechnet. Beim Dezimalsystem handelt es sich um ein spezielles Stellenwertsystem zur Basis b = 10. Diese Basis lässt sich durch eine beliebige natürliche Zahl b ersetzen, so dass sich Stellenwertsysteme zu unterschiedlichen Basen ergeben. Allgemein lässt sich für eine Zahl zur Basis b schreiben mit 0 ≤ ai < b. Diese Darstellung wird auch als b-adische Darstellung von Zahlen bezeichnet. Neben dem uns vertrauten Dezimalsystem sind für die Technische Informatik folgende drei Zahlensysteme noch von Bedeutung: Binär- oder Dualsystem Im Binärsystem werden die beiden Ziffern 0 und 1 für die Zahlendarstellung verwendet. Daher handelt es sich um ein Stellenwertsystem zur Basis b = 2. Intern arbeiten moderne Rechner nahezu ausnahmslos mit dem Binärsystem, so dass dieses für die Technische Informatik am wichtigsten ist. Seite 2 - 3 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Oktalsystem Dem Oktalsystem liegt die Basis b = 8 zu Grunde. Zur Darstellung werden die Ziffern 0 bis 7 verwendet. Da sich die Basis b = 8 als eine Zweierpotenz b = 23 darstellen lässt, kann eine einzige Oktalziffer exakt mit drei Bits der Binärdarstellung dargestellt werden. Beispiel: Hexadezimalsystem Im Hexadezimalsystem werden alle Zahlen zur Basis b = 16 dargestellt. Zur Darstellung werden die Ziffern 0 bis 9 und die Buchstaben A bis F verwendet. Da die Basis b = 16 = 24 ist, repräsentiert jede Hexadezimalziffer exakt 4 Bits in der Binärdarstellung: Beispiel: Zur Angabe der Basis einer Ziffernfolge wird die Suffix-Notation verwendet, d. h. die Basis des zu Grunde liegenden Zahlensystems wird der Ziffernfolge als Ergänzung angehängt. Beispiele: Die b-adische Zahlendarstellung lässt sich auch auf Rationale Zahlen, d.h. auf Zahlen mit Nachkommaanteil anwenden. Dabei werden die Stellen der Ziffern nach dem Komma mit negativem Exponenten versehen. Die Ziffernfolge ( an-1,…a0, a-1,….a-m )b repräsentiert dann die folgende Zahl: Seite 2 - 4 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Konvertierung zwischen Zahlensystemen Es sei z eine beliebige positive Kommazahl und b sei eine beliebige Basis. Um z bezüglich b aus zu drücken müssen wir diese Zahl in die Form bringen. Diese Gleichung separieren wir zunächst in einen Vorkommaund einen Nachkommanteil. Für beide Formelanteile sind nun die Koeffizienten a0 , ….an-1 bzw. a-m, …a-1 zu ermitteln. Zur Ermittlung der Koeffizienten a0 , ….an-1 teilen wir den Vorkommateil zV durch die Basis b. Als Rest ergibt sich der gesuchte Koeffizient a0. Mit Rest ist dabei der Anteil der ursprünglichen Zahl zV gemeint, der sich nicht mehr ganzzahlig durch b teilen lässt. Bei der Division ergibt sich nämlich als Quotient a0/b. Da aber generell ai < b ist, folgt dass dieser Quotient kleiner als 1, also keine ganze Zahl mehr ist, und a0 somit als ein ganzzahliger Rest auf zu fassen ist. Der erhaltene Algorithmus zur Konvertierung des Vorkommaanteils und ein Beispiel ist nachfolgend graphisch dargestellt. Seite 2 - 5 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Zur Ermittlung der Koeffizienten a-1,…a-m des Nachkommaanteils ist dieser mit der Basis b zu multiplizieren. a-1 ist also die Differenz zwischen dem Produkt zn •b und der Summe des Summenausdrucks auf der rechten Seite der Gleichung. Diese Summe ist kleiner als 1, d.h. a-1 gibt den Vorkommaanteil des erhaltenen Produktes an. Zum Erhalt der weiteren Koeffizienten wird das Verfahren mit der erhaltenen Summe fortgesetzt bis die Summe null wird. Der erhaltene Algorithmus zur Konvertierung des Nachkommaanteils einer Zahl und ein Beispiel dazu ist nachfolgend graphisch dargestellt. Bei der Konvertierung von einem Zahlensystem in ein anderes ist Vorsicht geboten, denn nicht alle Zahlen lassen sich in allen Zahlensystemen mit einer endlichen Ziffernfolge darstellen. Beispiel: Umwandlung der Dezimalzahl 0,1 ins Binärsystem Ergebnis: ( 0,1 )10 = ( 0,0001100110011…)2 d. h. für die Dezimalzahl 0,1 ergibt sich im Binärsystem eine unendlich periodische Darstellung. In der Praxis führt dies zu Rundungsfehlern, die unter Umständen gravierende Auswirkungen haben können. Seite 2 - 6 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ 2.2 Rechnerinterne Zahlenformate und Addier- und Subtrahieralgorithmen Nahezu alle heute eingesetzten Computer arbeiten intern mit dem binären Zahlensystem. Positive Zahlen können einfach dadurch repräsentiert und gespeichert werden, indem jede Ziffer 0 oder 1 rechnerintern durch ein sogenanntes Bit dargestellt wird. Dabei werden 8 Bit zu einem Byte zusammengefasst. Aus der Anzahl der Bytes, in der Regel eine Zweierpotenz 2n ( n = positive ganze Zahl ), ergibt sich dann der Zahlenbereich, den ein Computer darstellen kann. In der nachfolgenden Graphik sind einige Bitbreiten und der dazugehörige Wertebereich, den sie abdecken, dargestellt. Seite 2 - 7 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Die Speicherordnung innerhalb von Computern legt fest in welcher Reihenfolge die Bytes einer Zahl abgespeichert werden. Danach lassen sich moderne Mikroprozessoren in zwei Klassen einteilen. Erfolgt die Speicherung derart, dass mit dem niederwertigsten Byte begonnen wird, dann spricht man von einer Little- Endian-Architektur. Wird dagegen bei der Speicherung mit dem höherwertigsten Byte begonnen, so spricht man von einer Big-Endian-Architektur. Abbildung 2.2: Vergleich der Byte-Anordnung bei der Little- Endian und BigEndian Architektur von Mikroprozessoren Während sich die Repräsentation und Speicherung von ganzen, positiven Zahlen einfach gestaltet, ist die rechnerinterne Repräsentation von negativen Zahlen komplizierter. Dazu werden häufig drei unterschiedliche Zahlenformate, nämlich 1.) die Vorzeichenbitdarstellung 2.) die Einerkomplementdarstellung 3.) die Zweierkomplementdarstellung verwendet. Diese drei Zahlenformate sind hinsichtlich dreier Gesichtspunkte zu untersuchen, die für einen Computer sehr wichtig sind. Seite 2 - 8 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ 1.) Das Verhalten bei arithmetischen Operationen Die Durchführung von arithmetischen Operationen gehört zu den Hauptaktivitäten eines Computers. Daher sollten Zahlenformate gewählt werden, die hinsichtlich arithmetischer Operationen am wenigsten Rechenaufwand haben. 2.) Die Eineindeutigkeit Ein Zahlenformat ist eineindeutig, wenn jede Zahl genau einem Bitmuster und umgekehrt jedes Bitmuster einer Zahl entspricht. Bei eineindeutigen Zahlenformaten sind Gleichheitstests einfach durch zu führen. Zudem nutzen diese Zahlenformate die Anzahl der möglichen Bitmuster optimal aus, da sie nicht redundant sind, d. h. eine Zahl weißt keine zwei unterschiedlichen Darstellungen auf. 3.) Die Symmetrie der Zahlenformate Zahlenformate heißen symmetrisch, wenn mit der Zahl z stets auch die Zahl –z dargestellt werden kann. Vorzeichenbitdarstellung von negativen Zahlen Negative Zahlen lassen sich einfach darstellen, wenn ein zusätzliches Vorzeichenbit eingeführt wird, das der eigentlichen Zahl vorangestellt wird. Ist dieses Bit 0 so handelt es sich um eine positive Zahl, ist dieses Bit 1 dann liegt eine negative Zahl vor. Zahlendarstellungen lassen sich graphisch am sogenannten Zahlenstrahl darstellen. Auf der horizontalen Achse wird dabei das binäre Bitmuster nach aufsteigendem Wert geordnet aufgetragen. Auf der vertikalen Achse wird der Wert der dazugehörigen Zahl aufgetragen. Der Zahlenstrahl für Bitcodierungen mit 4 Bit einschließlich Vorzeichenbit ist in Abbildung 2.3 dargestellt. Aus der Darstellung des Zahlenstrahls ist zu entnehmen, dass die Zahlendarstellung symmetrisch ist. Jedoch ist sie nicht eineindeutig, da die Null zwei Codierungswerte besitzt. +0 = 000…000 ; -0 = 100…000 Leider erhält man mit dieser Zahlendarstellung bei arithmetischen Operationen falsche Ergebnisse, wenn das Vorzeichenbit wie ein normales Bit behandelt wird. Die binäre Addition wird im Prinzip genau so durchgeführt wie im dezimalen Zahlensystem. Da nur zwei unterschiedliche Ziffern vorliegen ist sie sogar noch einfacher. Seite 2 - 9 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Abbildung 2.3: Darstellung des Zahlenstrahls für 4 Bitzahlen mit Vorzeichencodierung Die binäre Addition zweier Zahlen erfolgt so wie in nachfolgender Tabelle mit Beispiel dargestellt. Die Addition startet mit der niederwertigsten Stelle, also hier rechts. Ergibt sich bei dieser Stelle ein Übertrag, so ist dieser bei der nächsthöherwertigen Stelle dazu zu zählen. Dieses Verfahren ist fort zu führen bis alle Stellen aufaddiert sind. Wendet man diese Vorgehensweise an um Zahlen mit Vorzeichenbits zu addieren, und behandelt die Vorzeichenbits wie normale Bits, so erhält man falsche Ergebnisse wie nachfolgende Beispiele zeigen. Seite 2 - 10 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Um richtige Ergebnisse zu erhalten, muss das Vorzeichenbit explizit interpretiert werden, und dann muss ein negativer Zahlenwert, nach den Subtraktionsregeln, subtrahiert werden, wie in nachfolgendem Beispiel dargestellt. Im Prinzip ist dabei genau so vor zu gehen wie im dezimalen Zahlensystem. Ergibt sich an einer Stelle ein negativer Wert, so ist an dieser Stelle der Bitwert der nächsthöheren Stelle zu „leihen“. Bei der Subtraktion an der nächsten Stelle ist dieser Wert dann ab zu ziehen, da er ja bereits an der niederwertigen Bitposition verrechnet wurde. Einerkomplementdarstellung von negativen Zahlen Eine andere Möglichkeit negative Zahlen dar zu stellen, besteht darin eine Zahl z zu negieren indem das Bitmuster der Zahl vollständig invertiert wird. Seite 2 - 11 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Nachfolgend ist der entsprechende Zahlenstrahl für einen Zahlenbereich von 4 Bit dargestellt. Abbildung 2.4: Darstellung des Zahlenstrahls für 4 Bit Zahlen in der Einerkomplimentdarstellung Das erhaltene Zahlenformat ist symmetrisch. Aber auch bei dieser Darstellung existiert das Problem der Doppelbelegung der Null. +0 = 000…000 ; -0 = 111…111 Jedoch gestaltet sich die Addition von positiven und negativen Zahlen wie üblich, wenn man zusätzlich die Übertragsadditionsregel anwendet. Im einzelnen ist bei der Addition in drei Schritten vor zu gehen. 1.) Ausführen der gewöhnlichen Binäraddition 2.) Aufaddieren des Übertrags ( Übertragsadditionsregel ) 3.) Streichen verbleibender Überträge Seite 2 - 12 © R. Latz „Technische Grundlagen der Informatik (TGI)“ ____________________________________________________________________________ Prof. Dr. R. Latz __________________________ Die Übertragsadditionsregel ist dabei deshalb notwendig, weil die Zahl Null eine Doppeldarstellung besitzt. Wie der nachfolgenden Zahlenstrahldarstellung zu entnehmen ist, besitzt der Zahlenstrahl, wenn man ihn periodisch erweitert, beim Übergang von den negativen zu den positiven Zahlen, wegen der Doppeldarstellung der Null, einen Versatz. Wird nun zu einer negativen Zahl eine positive Zahl dazugezählt so ergibt sich, bei einem positiven Ergebnis, eine Zahl, die um eins zu niedrig ist. Daher muss dann eine 1 dazugezählt werden. Zweierkomplementdarstellung Die Zweierkomplementdarstellung ergibt sich aus der Einerkomplementdarstellung dadurch, dass zunächst das Einerkomplement gebildet wird, und dann noch eine 1 dazugezählt wird. Eine andere formal einfache Möglichkeit das Zweierkomplement zu bilden besteht darin, das Bitmuster vom niederwertigen Ende aus bis zur ersten 1 bei zu behalten und die restlichen Bits zu invertieren. Wie sich aus der nachfolgenden Zahlenstrahldarstellung ergibt, ist dieses Zahlenformat eineindeutig. Die Null besitzt nur noch eine Darstellung. Dadurch entfällt auch die Übertragsadditionsregel der Einerkomplementdarstellung. Der Zahlenstrahldarstellung ist auch zu entnehmen, dass dieses Zahlenformat nicht mehr symmetrisch ist. Die Codierung der „negativen“ Null bei der Einerkomplementdarstellung wird dazu verwendet um -1 zu codieren. Im negativen Bereich gibt es daher eine Zahl mehr als im positiven Bereich. Seite 2 - 13 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Abbildung 2.5: Darstellung des Zahlenstrahls für 4 Bit Zahlen in der Zweierkomplementdarstellung Der Zahlenbereich einer n Bit breiten Dualzahl liegt damit zwischen – 2n-1 bis + 2n-1 - 1. In der Zweierkomplementdarstellung können vorzeichenbehaftete Zahlen, wie der nachfolgenden Darstellung des erweiterten Zahlenstrahls zu entnehmen ist, nach den üblichen Regeln der Binärarithmetik addiert werden. Die Subtraktion lässt sich dabei auf die Addition negativer Zahlen zurückführen. Kommt es bei der Addition zu einem Übertrag, der aus dem Zahlenbereich hinausführt, so wird dieser ersatzlos gestrichen. Da der Zahlenstrahl beim Übergang vom negativen in den positiven Bereich „durchgängig“ ist muss keine 1 addiert werden. Seite 2 - 14 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Beispiele zur Addition im Zweierkomplement: Nachfolgend soll nochmals plausibel gemacht werden, wieso das Zweierkompliment zur Darstellung negativer Zahlen geeignet ist. Addiert man zu einer Dualzahl A ihr Zweierkompliment, so ergibt ich ohne Übertrag: Diese Erkenntnis kann dazu genutzt werden um die Subtraktion bei Dualzahlen auf die Addition zurückzuführen. Allgemein gilt somit für die Addition zweier Dualzahlen bei Verwendung der Zweierkomplimentdarstellung der negativen Zahlen, hier n = 4: Seite 2 - 15 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Bei arithmetischen Operationen kann das Ergebnis den darstellbaren Wertebereich überschreiten. Das Ergebnis ist dann eine nicht korrekte Zahl, die außerhalb der Bereichsgrenzen liegt, es entsteht ein sogenannter Überlauf oder Overflow, der von der ausführenden Hardware angezeigt werden muss. Je nach dem Wert der Überträge Ü4 und Ü3 bzw. Ün und Ün-1 ergibt sich eine Bereichsüberschreitung. Es sind zwei Fälle zu unterscheiden: 1.) Bei vorzeichenlosen Zahlen liegt eine Bereichsüberschreitung vor, wenn Ün = 1 ist. 2.) Bei vorzeichenbehafteten Zahlen liegt eine Bereichsüberschreitung vor, wenn entweder Ün oder Ün-1 den Wert 1 annehmen, also: Bereichsüberschreitung = ( Ün xor Ün-1 ). Bereichsüberschreitungen lassen sich, neben dem Zahlenstrahl auch gut im Zahlenkreis verdeutlichen, wie in nachfolgender Abbildung 2.6 dargestellt ist. Abbildung 2.6: Darstellung der Bereichsgrenzen im Zahlenkreis für 4-stellige Dualzahlen bei Verwendung der Zweierkomplimentdarstellung für die negativen Zahlen Seite 2 - 16 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz __________________________________________________________________________________________________________ Festkommazahlen Mit der Festkommadarstellung können rationale Zahlen einfach erfasst werden. Genau wie bei der Vorzeichenbitdarstellung wird ein Vorzeichenbit Vz eingeführt um zu beschreiben, ob eine Zahl negativ, Vz = 1, oder positiv, Vz = 0, ist. Die restlichen Bits, Mantisse M, genannt, werden dazu verwendet, um die Nachkommastellen der darzustellenden Zahl zu codieren. Also besitzt das Festkommaformat für eine n = 16 Bit breite Zahl folgende Form: Der Wert einer n Bit breiten Festkommazahl lässt sich dann wie folgt berechnen: Dieses Format erlaubt die Repräsentation von Zahlen aus dem offenen Intervall ] -1, + 1 [ . Liegt ein größerer Zahlenbereich vor, so ist dieser entsprechend auf dieses Intervall ab zu bilden indem alle Zahlen durch die größte vorliegende Zahl dividiert werden. Das Zahlenintervall ] -1, + 1 [ besitzt die Eigenschaft bezüglich der Multiplikation abgeschlossen zu sein, d. h. eine Multiplikation zweier Zahlen führt nicht aus dem Zahlenbereich. Für die größte und kleinste Zahl, die mit einer n Bit breiten Festkommazahl dargestellt werden kann gilt: zmax = 0111…111 = 1- 2-(n-1) zmin = 1111…111 = -1 + 2-(n-1) Der darstellbare Zahlenbereich ist symmetrisch, so dass zmin = - zmax gilt. Für den Abstand zweier benachbarter Zahlen z1 und z2 gilt: z2 – z1 = 2-(n-1) . Dieser Abstand ist im gesamten Zahlenbereich konstant. Das Festkommaformat gehört daher in die Klasse der äquidistanten Zahlenformate. Dieses Zahlenformat kommt daher bei Berechnungen zum Einsatz, wo im gesamten Zahlenbereich eine gleichbleibende Genauigkeit Seite 2 - 17 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz __________________________________________________________________________________________________________ notwendig ist. Dies ist z. B. bei vielen digitalen Signalprozessoren (DSP´s) der Fall. Die meisten anderen Prozessoren verwenden die Gleitkommaarithmetik, dessen Zahlenformat im folgenden behandelt wird. Gleitkommazahlen Bei der Gleitkommadarstellung wird die Festkommadarstellung um einen Exponenten E erweitert. Beträgt die Bitbreite der Mantisse m, so berechnet sich der Wert einer Gleitkommazahl folgendermaßen: Mit Hilfe des Exponenten kann man das Komma der dargestellten Zahl „gleiten“ lassen, d.h. es kann verschoben werden. Daher resultiert der Name dieses Formates. Im Allgemeinen ergibt sich bei der Multiplikation mit dem Term 2E eine Verschiebung des Kommas um E Stellen, wenn E> 0 nach rechts, und wenn E < 0 nach links. Bei Dualzahlen bewirkt die Verschiebung des Kommas um eine Stelle nach rechts eine Multiplikation mit dem Faktor 2. Gleitkommazahlen werden in Anlehnung an die englische Bezeichnung „floating point numbers“ im Deutschen auch Gleitkommazahlen oder Fließkommazahlen genannt. Während die Mantisse die Auflösungsgenauigkeit des Zahlenformats festlegt, beeinflusst der Exponent vor Allem die Intervallgrenzen und bestimmt damit hauptsächlich die kleinste und größte darstellbare Zahl. Für Gleitkommaformate hat sich die Abkürzung sXeY durchgesetzt, s steht dabei für das Vorzeichenbit, X für die Bitbreite der Mantisse m, und Y für die Bitbreite des Exponenten e. Im nachfolgenden ist das Format s10e5 dargestellt. Seite 2 - 18 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz __________________________________________________________________________________________________________ Um der Vorzeichenproblematik beim Exponenten zu entgehen wird nicht der Exponent direkt binär codiert, sondern es wird die sogenannte Charakteristik C Codiert und gespeichert. Um die Charakteristik C zu erhalten, wird der Wertebereich des Exponenten durch die Addition einer Konstanten k in den positiven Wertebereich verschoben, wie in nachfolgender Abbildung graphisch dargestellt ist. Das Bitmuster der Charakteristik ist damit eine vorzeichenlose Dualzahl und der wahre Wert des Exponenten kann jederzeit durch Subtraktion der Konstanten k zurückerhalten werden. Im Beispielformat s10e5 können mit 5 Bit des Exponenten 32 verschiedene Werte des Exponenten dargestellt werden. Wählt man [ -15 ; 16 ] als Wertebereich für den Exponenten, so berechnet sich die Charakteristik als C = E + 15, mit k = 15. Nachfolgend sind Beispiele für die Zahl 0,001101 aufgeführt. Seite 2 - 19 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz __________________________________________________________________________________________________________ Wie man diesen Beispielen entnehmen kann, ist dieses Zahlenformat nicht eineindeutig. Die Zahlen können trotz unterschiedlicher Bitmuster gleich sein. Um dies zu vermeiden wird die Position des Kommas mit Hilfe einer entsprechenden Normalisierungsregel eindeutig festgelegt. Die folgenden beiden Normalisierungsregel kommen zum Einsatz: 1.) Nachkommanormalisierung Die erste Nachkommastelle enthält die höchste Ziffer ungleich null, im Dualsystem also die 1. 2.) Vorkommanormalisierung Die erste Vorkommastelle enthält die höchste Ziffer ungleich null, also im Dualsystem 1. Im Falle der Vorkommanormalisierung ist das erste Bit Mm-1 der Mantisse eine Vorkommastelle, so dass sich nun die dargestellte Zahl wie folgt berechnet: Da das erste Bit der Mantisse bei einer Normalisierung stets 1 ist, können wir auf die Speicherung dieses Bits verzichten und haben daher Platz für ein zusätzliches Wertebit, das die Auflösungsgenauigkeit des Zahlenformats erhöht. Bei solchen Zahlenformaten spricht man von gepackten oder impliziten Darstellungen. Damit ergeben sich insgesamt vier normalisierte Darstellungen für Gleitkommazahlen für die in Abbildung 2.7 jeweils ein Beispiel für die Zahl 0,001101 dargestellt ist. Gepackte Zahlenformate haben jedoch trotz der mit ihnen erreichbaren höheren Auflösungsgenauigkeit einen Nachteil. Durch die implizite 1 an der ersten Vor- oder Nachkommastelle kann die Null nicht mehr direkt dargestellt werden. Da jedoch die Zahl Null bei Berechnungen unerlässlich ist, muss ein besonderes Bitmuster für die Null reserviert werden. Dies ist z. B. bei den IEEE-754-Gleitkommaformaten der Fall, die 1985 vom Institute of Electrical and Electronics Engineers ( IEEE) standardisiert wurden. Seite 2 - 20 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz __________________________________________________________________________________________________________ Abbildung 2.7: Darstellung der vier Gleitkommaformate, die sich aus der gepackten und ungepackten Mantissendarstellung und den beiden Normierungsarten ergeben. Die IEEE-754-Gleitkommaformate Die Darstellung von Gleitkommazahlen in den IEEE-754Gleitkommaformaten wird nahezu in allen gängigen Mikroprozessoren und auch in der Programmiersprache Java verwendet. In der nachfolgenden Abbildung 2.8 sind die Definitionen der Gleitkommaformate für einfache und doppelte Genauigkeit der IEEE-Norm 754 dargestellt. Diese Formate wenden meist die Vorkommanormalisierung an, d. h. das erste 1-Bit befindet sich stets vor dem Komma. Die Mantisse wird gepackt abgelegt, so dass das erste gespeicherte Mantissen-Bit nicht der Vorkomma-Eins, sondern der ersten Nachkommastelle entspricht. Eine denormalisierte Darstellung ist jedoch auch möglich. In diesen Formaten liegen reservierte Bitmuster vor, wenn entweder alle Charakteristik-Bits gleich 0 oder gleich 1 sind. Beide Fälle werden nachfolgend diskutiert. Seite 2 - 21 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ____________________________________________________________________________________________________________ Abbildung 2.8: Darstellung der Definition der IEEE-754-Gleitkommaformate für einfache ( single-precision) und doppelte ( double-precision ) Genauigkeit. Die Spezialfälle dieser Zahlenformate werden nachfolgend diskutiert. 1.) Alle Bits der Charakteristik sind 0 In diesem Fall wird das Bitmuster der Mantisse als eine spezielle Gleitkommazahl interpretiert. Das Zahlenformat ist dann weder normalisiert noch gepackt. Die Null lässt sich dann darstellen indem alle Bits der Mantisse auf 0 gesetzt werden. 2.) Alle Bits der Charakteristik sind 1 Sind gleichzeitig alle Bits der Mantisse 0, so wird abhängig vom Vorzeichen + Unendlich bzw. –Unendlich dargestellt. Dieses Bit muster entsteht z. B. wenn durch null dividiert wird oder zwei Zahlen addiert werden deren Summe außerhalb des gültigen Wertebereiches liegt. Nicht definierte und unbekannte Werte werden dargestellt indem zusätzlich in der Mantisse wenigstens 1 Bit ungleich 0 ist. Dies ist z. B. bei algebraisch undefinierten Operationen wie 0/0, 0•∞, √-1 usw. der Fall. Je ein Beispiel für eine normalisierte und eine denormalisierte Darstellung einer Gleitkommazahl nach der IEEE-754-Norm ist für einfache Genauigkeit in der Abbildung 2.9 dargestellt. Im Normalfall sind sowohl in der Charakteristik als auch der Mantisse Einsen und Nullen enthalten, so dass eine normalisierte Darstellung vorliegt. Seite 2 - 22 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz __________________________________________________________________________________________________________ Abbildung 2.9: Darstellung von je einem Beispiel für eine normalisierte und eine denormalisierte Gleitkommazahldarstellung. Bei der denormalisierten Darstellung ist die Charakteristik gleich null. Darstellung von Gleitkommazahlen im Intel-Format Intel Prozessoren unterstützen nach Außen das IEEE-754-Format. Intern arbeiten sie jedoch nach dem Intel-Format mit einer wesentlich höheren Genauigkeit. Dieses Format ist in Abbildung 2.10 dargestellt. Abbildung 2.10: Darstellung des Extended-precision-Formats von Intel Seite 2 - 23 © R. Latz „Technische Grundlagen der Informatik (TGI)“ Prof. Dr. R. Latz ___________________________________________________________________________________________________________ Bei dem Intel-Format ist die Bitbreite auf 80 Bit erweitert. Das Format für den Normalfall ist ungepackt und vorkommanormalisiert, d.h. das M63 –Bit der 64 Bit breiten Mantisse ist 1. Wird ein Operand in eine Gleitkommaeinheit geladen, z. B. einen Multiplizierer, so werden die IEEE-754-Bitmuster in das Intel-Format umgesetzt. Sämtliche arithmetische Operationen werden in diesem erweiterten Format durchgeführt. Ein Ergebnis wird dann in das IEEE-Format zurückkonvertiert. Bei dieser Vorgehensweise werden Rundungsfehler vernachlässigbar klein gehalten. Seite 2 - 24 © R. Latz