Thursday 16 November 2017

Normalisierte Gleitkomma Darstellung Binär Optionen


Ich bin ein wenig verwirrt, wie man die Zahlen in C. normalisiere. Ich weiß, dass wenn man so etwas wie den Gleitkomma-Binärwert 1101.101 hat, wird es als 1.101101 x 23 normalisiert, indem man den Dezimalpunkt 3 Positionen nach links verschiebt. Allerdings bin ich nicht sicher, wie dies in Code zu tun. Also wenn ich 10010000 exp 0 habe und ich möchte 01001000 exp 1 bekommen, ist das Fraktionsfeld 001 und das Endergebnis ist 010001. Wenn ich eine 8-Bit-Nummer habe und die führenden 2 Bits 00 sind, möchte ich es bis ich verschieben Finde ein 1, oder wenn ich ein führendes Stück von 01 habe, dann ist es schon normalisiert. Similary für eine führende 2 Bits von 11 Ich verschiebe es nach links. Also, wenn meine Nummer 32 Bits, 1 für das Schild, 8 für den Exponenten, 23 für die Mantisse, würde ich etwas wie machen: Und dann noch mehr, wenn Aussagen für die anderen 2 führenden Bitzahlen (00, 10) bin ich nicht Sicher, wenn mein Logikcode richtig ist. Wie du sagst, musst du das Zeichen, die Mantisse und den Exponenten extrahieren. Das Diagramm, das oben aus Wikipedia genommen wurde, zeigt, wie es für das gängigste Einzelpräzisions-Gleitkommaformat IEEE 754 ausgelegt ist. Um jedes Teil zu extrahieren, müssen wir dies in drei folgenden Schritten machen. Ich habe nicht den C-Code, aber ich werde die Schritte zeigen, die du nehmen musst. Nach dem Ausziehen der 3 Teile legen Sie sie einfach in die in der obigen Abbildung dargestellten Bitpositionen. Wenn es sich um eine nicht signierte Nummer handelt, ist dies immer 0. Wenn es das MSB signiert hat. 2. Exponent Wenn die Nummer signiert und negativ ist, musst du alle Bits umdrehen und 1 hinzufügen, um sie positiv zu machen. Wenn nicht, können Sie es so lassen, wie es ist. Um den Exponenten zu extrahieren, müssen wir wissen, wo der Binärpunkt sein soll. Lassen Sie die Position des Binärpunktes b (In Ihrem Beispiel sein 3). Lassen Sie das erste Bit aus dem MSB, das 1 ist p (In Ihrem Beispiel seine 6). Den Exponenten verlassen 3. Mantisse Dies ist gleich den Bits von der Position p-1 bis zum Bit 0.Wie, um 0.148 2 in normalisierter Gleitkomma-Arithmetik mit dem Format (0.148) (0,00100101111) darzustellen. 2 Wir verschieben es 3 Bits nach links, um zu machen Es normalisiert (1.00101111) 2 2. Exponent 1164 (75) (1001011) 2 und Mantisse (01001111) 2. Wenn wir also die denormalisierte Mantisse in ein 8-Bit-Register speichern, dann hat sie die letzten drei 1s nicht gespeichert und dann hätte die Mantisse von (0,00100101) 2 auf (1.00101000) normalisiert. Deutsch: www. tab. fzk. de/de/projekt/zusammenf...ng/ab117.htm. Englisch: www. tab. fzk. de/en/projekt/zusammenf...ng/ab117.htm ) 2 durch Einfügen von 3 0s anstelle von 1s. Die Repräsentation wäre gewesen (0100101100101000) 2 (4B28) Darstellung B Während der Normalisierung berücksichtigt der Prozessor die denormalisierten Mantissenbits über 8 Bits hinaus oder schneidet sie einfach ab, was richtig ist: A oder B Speichert es die Mantisse In Fixpunktdarstellung Wie funktioniert es alles, um zu versuchen, jemandem mit einigen Hausaufgaben zu helfen und Im immer falsche Antworten zu bekommen. Die Frage ist dies: Repräsentieren -0.10937510 in normalisierter Gleitkomma-Darstellung mit einer 5-Bit-Fraktional-Doppel-Komplement-Mantisse und einem 3-Bit-Integer-Twos-Komplement-Exponenten. Ich habe die folgenden Notizen geschrieben: Lässt die Antwort auf die Frage ausarbeiten: -0.10937510 Schritt 1: In Binär umwandeln. 0 0. 0 0 0 1 1 1 0 0 Schritt 2: Multiplizieren mit 1 (20) - (00.00011100) 2 x 20 Schritt 3: Umschalten, um Mantisse ganze Zahl zu machen Wir müssen 6 Verschiebungen nach links machen Warum Weil wir 0.000111 haben Shift 1 00.00111 Shift 2 000.0111 Shift 3 0000.111 Shift 4 00001.11 Shift 5 000011.1 Shift 6 0000111 Deshalb bekommen wir, - (1112) x 2 (-6) Schritt 4: Mantisse umwandeln. In dieser Frage wurden wir aufgefordert, in zwei Komplementen umzuwandeln (5-Bit-Bruchteil). Deshalb müssen wir 111 zu zwei Komplementen umwandeln und dieses 5-Bit-Schritt A machen: Umwandeln in ein Komplement (5 Bit) -00111 11000 Schritt B: Umwandeln in (5-Bit) 11000 00001 110012 Schritt 5: Konvertieren Exponent Top 2-Bit-Twos Komplement 2 (-6) Daher müssen wir -6 in Binär (Twos Komplement) konvertieren Schritt A: Konvertieren in Binär 1 1 0 Schritt B : Umwandlung in ein Komplement (3-Bit) 110 001 Schritt C: Umwandlung in zwei Komplement 010 Die Antwort ist dann, 11001 0102 Wie Sie sehen können, scheint 2-6 für ein 3-Bit-Doppel-Komplement falsch zu sein. Kann jemand darauf hinweisen, was ich falsch machen könnte Normalerweise ist die Bedeutung (nicht Mantisse 1) verschoben, so dass das bedeutendste ein Bit in einer bestimmten Position ist, nicht so die Bedeutung und ist eine ganze Zahl. Das IEEE 754 Format normalisiert die Bedeutung für 1. dddd. Wobei jedes d eine Ziffer in der Basis ist, die verwendet wird. Verschieben Sie Ihren Wert, um das erste Bit zu dieser Position zu bewegen, ergibt einen Exponenten von 4. Sie hätten 1.110 2 2 4. Um die Bedeutung und in zwei Komplementen darzustellen, fügen wir ein weiteres Bit auf der linken Seite hinzu und produzieren 01.110 2 2 4. und dann Die Negation anwenden, um 10.010 für die Bedeutung und 100 für den Exponenten zu erhalten. Allerdings kann es einige Abweichungen auf Details geben. Ist die Bedeutung und normiert auf 1. dddd oder .1 dddd. Ist die Bedeutung und fünf Bits vor dem Hinzufügen eines Vorzeichen-Bits oder nach Haben Sie Beispiele für Werte mit bekannten Darstellungen in diesem Format oder mehr Details über das Format 1 Significand ist der bevorzugte Begriff. Eine Bedeutung ist linear eine Mantisse ist logarithmisch. Floating Point Representation 8211 Grundlagen Es gibt Beiträge zur Darstellung des Gleitkomma-Formats. Das Ziel dieses Artikels ist es, eine kurze Einführung in das Gleitkommaformat zu geben. Die folgende Beschreibung beschreibt die Terminologie und die primären Details der IEEE 754 binären Gleitkomma-Darstellung. Die Diskussion beschränkt sich auf Einzel - und Doppelpräzisionsformate. Normalerweise wird eine reelle Zahl im Binär im folgenden Format dargestellt, wobei I m und F n entweder 0 oder 1 von Integer - und Bruchteilen sind. Eine endliche Zahl kann auch durch vier ganzzahlige Komponenten, ein Vorzeichen (s), eine Basis (b), eine Bedeutung und (m) und einen Exponenten (e) dargestellt werden. Dann wird der numerische Wert der Zahl als (-1) s x m x b e ausgewertet. Wo m lt b Abhängig von der Basis und der Anzahl der Bits, die zum Codieren verschiedener Komponenten verwendet werden, definiert der IEEE 754 Standard fünf Grundformate. Unter den fünf Formaten sind die Binär - und die Binär64-Formate einpräzige und doppelte Präzisionsformate, in denen die Basis 2 ist. Tabelle 8211 1 Präzisionsdarstellung Einzelpräzisionsformat: Wie in Tabelle 1 erwähnt, hat das Einzelpräzisionsformat 23 Bits für signifikante ( 1 repräsentiert das implizierte Bit, Details unten), 8 Bits für Exponenten und 1 Bit für Vorzeichen. Zum Beispiel kann die rationale Zahl 92 in ein einzelnes Präzisions-Float-Format wie folgt umgewandelt werden, wobei das Ergebnis normalisiert werden soll. Wenn es mit führendem 1 Bit, d. h. 1,001 (2) x 2 2 dargestellt ist. (Ähnlich, wenn die Zahl 0,000000001101 (2) x 2 3 normalisiert ist, erscheint sie als 1.101 (2) x 2 -6). Das Auslassen dieses implizierten 1 auf dem linken Extrem gibt uns die Mantisse der Schwimmerzahl. Eine normalisierte Zahl liefert mehr Genauigkeit als entsprechende de-normalisierte Zahl. Das implizites höchstwertige Bit kann verwendet werden, um noch genauere Bedeutung zu repräsentieren (23 1 24 Bits), die als subnorme Darstellung bezeichnet wird. Die Gleitkommazahlen sollen in normalisierter Form dargestellt werden. Die subnormalen Zahlen fallen in die Kategorie der de-normalisierten Zahlen. Die subnorme Darstellung verringert den Exponentenbereich leicht und kann nicht normalisiert werden, da dies zu einem Exponenten führen würde, der nicht in das Feld passt. Ungewöhnliche Zahlen sind weniger genau, d. h. sie haben weniger Platz für Nicht-Null-Bits im Bruchfeld, als normalisierte Zahlen. Tatsächlich sinkt die Genauigkeit, wenn die Größe der subnormalen Zahl abnimmt. Jedoch ist die subnorme Darstellung nützlich bei der Ablage von Lücken der Gleitkomma-Skala nahe Null. Mit anderen Worten kann das obige Ergebnis als (-1) 0 x 1,001 (2) x 2 2 geschrieben werden, was die ganzzahligen Komponenten als s 0, b 2, Bedeutung und (m) 1,001, Mantisse 001 und e 2 ergibt Einzelne Präzisions-Floating-Nummer kann in Binär dargestellt werden, wie unten gezeigt, wo das Exponent-Feld soll 2 sein, aber dennoch als 129 (1272) als voreingestellter Exponent codiert. Das Exponent-Feld ist in einem einfachen Binärformat, das auch negative Exponenten mit einer Codierung darstellt (wie Zeichengröße, 1s Kompliment, 2s Komplement, etc.). Der voreingenommene Exponent wird zur Darstellung von negativen Exponenten verwendet. Der voreingenommene Exponent hat Vorteile gegenüber anderen negativen Darstellungen bei der Durchführung eines bitweisen Vergleichs von zwei Gleitkommazahlen für Gleichheit. Eine Vorspannung von (2 n-1 8211 1), wobei n von Bits, die in Exponenten verwendet werden, wird dem Exponenten (e) hinzugefügt, um den voreingenommenen Exponenten (E) zu erhalten. So kann der vorgespannte Exponent (E) der Einzelpräzisionszahl erhalten werden. Der Bereich des Exponenten im Einzelpräzisionsformat beträgt -126 bis 127. Für spezielle Symbole werden andere Werte verwendet. Hinweis: Wenn wir eine Gleitkommazahl auspacken, wird der erhaltene Exponent voreingestellter Exponent. Subtrahieren von 127 von dem voreingenommenen Exponenten können wir einen unabhängigen Exponenten extrahieren. Double Precision Format: Wie in Tabelle 1 erwähnt, hat das doppelte Präzisionsformat 52 Bits für signand (1 steht implizites Bit), 10 Bits für Exponenten und 1 Bit für Vorzeichen. Alle anderen Definitionen sind für das doppelte Präzisionsformat gleich, mit Ausnahme der Größe der verschiedenen Komponenten. Die kleinste Veränderung, die in der Gleitkomma-Darstellung dargestellt werden kann, wird als Präzision bezeichnet. Der Bruchteil einer einzigen präzisionsnormierten Zahl hat genau 23 Bits Auflösung (24 Bits mit dem implizierten Bit). Dies entspricht log (10) (2 23) 6.924 7 (das Merkmal des Logarithmus) Dezimalstellen der Genauigkeit. Ähnlich ist bei doppelter Genauigkeit die Genauigkeit log (10) (2 52) 15.654 16 Dezimalstellen. Die Genauigkeit in der Gleitpunktdarstellung wird durch die Anzahl der signifikanten Bits bestimmt, während der Bereich durch den Exponenten begrenzt ist. Nicht alle reellen Zahlen können genau im Gleitkommaformat dargestellt werden. Für irgendeine Zahl, die keine Gleitkommazahl ist, gibt es zwei Optionen für die Gleitkomma-Näherung, z. B. die nächste Gleitkommazahl kleiner als x als x und die nächste Gleitkommazahl größer als x als x. Ein Rundungsvorgang wird auf der Anzahl der signifikanten Bits im Mantissenfeld basierend auf dem ausgewählten Modus durchgeführt. Der Round-Down-Modus bewirkt, dass x auf x gesetzt ist, der Round-Up-Modus verursacht x auf x gesetzt, die Runde in Richtung Null-Modus verursacht x ist entweder x oder x, was immer zwischen Null und. Der runde zum nächsten Modus setzt x auf x oder x, welcher der x am nächsten ist. In der Regel rund um die nächste ist am meisten verwendeten Modus. Die Nähe der Gleitpunktdarstellung zum Istwert wird als Genauigkeit bezeichnet. Spezielle Bitmuster: Der Standard definiert wenige spezielle Gleitkomma-Bitmuster. Zero cant haben höchst signifikant 1 Bit, daher kann nicht normalisiert werden. Die verborgene Bitdarstellung erfordert eine spezielle Technik zur Speicherung von Null. Wir haben zwei verschiedene Bitmuster 0 und -0 für denselben Zahlenwert Null. Für die einfache Präzisions-Gleitpunktdarstellung sind diese Muster unten angegeben, 0 00000000 00000000000000000000000 0 1 00000000 00000000000000000000000 -0 Ebenso stellt der Standard zwei verschiedene Bitmuster für INF und - INF dar. Dasselbe sind unten angegeben, 0 11111111 00000000000000000000000 INF 1 11111111 00000000000000000000000 - INF Alle diese Sondernummern sowie andere Sondernummern (unten) sind ungewöhnliche Zahlen, die durch die Verwendung eines speziellen Bitmusters im Exponentenfeld dargestellt werden. Dies verringert den Exponentenbereich etwas, aber das ist recht akzeptabel, da die Reichweite so groß ist. Ein Versuch, Ausdrücke wie 0 x INF, 0 INF, etc. zu berechnen, macht keinen mathematischen Sinn. Der Standard ruft das Ergebnis solcher Ausdrücke als Not a Number (NaN) auf. Jede nachfolgende Expression mit NaN ergibt NaN. Die Darstellung von NaN hat nicht-null Bedeutung und alle 1s im Exponentenfeld. Diese sind unten für ein einziges Präzisionsformat (x ist dont care bits), x 11111111 1 m 0000000000000000000000, wo m 0 oder 1 sein kann. Dies gibt uns zwei verschiedene Darstellungen von NaN. 0 11111111 110000000000000000000000 Signalisierung NaN (SNaN) 0 11111111 100000000000000000000000 Quiet NaN (QNaN) In der Regel werden QNaN und SNaN zur Fehlerbehandlung verwendet. QNaN erhebe keine Ausnahmen, da sie sich durch die meisten Operationen ausbreiten. Während SNaN sind, die, wenn sie von den meisten Operationen verbraucht werden, eine ungültige Ausnahme erheben werden. Überlauf und Unterlauf: Überlauf soll auftreten, wenn das wahre Ergebnis einer arithmetischen Operation endlich, aber größer ist als die größte Gleitkommazahl, die mit der vorgegebenen Genauigkeit gespeichert werden kann. Unterströmung soll auftreten, wenn das wahre Ergebnis einer arithmetischen Operation in der Größe (infinitesimal) kleiner ist als die kleinste normalisierte Gleitkommazahl, die gespeichert werden kann. Überlauf kann nicht in Berechnungen ignoriert werden, während Unterlauf effektiv durch Null ersetzt werden kann. Der IEEE 754-Standard definiert ein binäres Gleitkommaformat. Die Architekturdetails bleiben den Hardwareherstellern überlassen. Die Speicherreihenfolge einzelner Bytes in binärer Gleitkommazahl variiert von Architektur zu Architektur. Danke an Venki zum Schreiben des obigen Artikels. Bitte schreiben Sie Kommentare, wenn Sie etwas falsches finden, oder Sie möchten mehr Informationen über das oben besprochene Thema erfahren.

No comments:

Post a Comment