Ich versuche, den min / max-Wert oder den niedrigsten bis höchsten Wertebereich eines 48-Bit-Gleitkommatyps MIL-STD-1750A (PDF) (WIKI) .

Beispiel: Wie ein doppelter Bereich ist 1.7E +/- 308

Ich habe mich nach Gleichungen umgesehen und bin mir nicht sicher, ob das, was ich gefunden habe, funktionieren wird.

Die erste Gleichung, die ich gefunden habe, war erste Gleichung

Die zweite war zweite Gleichung

Ich bin mir nicht ganz sicher, wo ich mit diesen beginnen soll, wenn sie in dem, was ich brauche, überhaupt richtig sind.

Wird mir jemand sein Wissen mitteilen und helfen, dieses Problem zu lösen?

Kommentare

  • OK, es sieht also so aus, als hätten Sie eine 48-Bit-FP-Nummer implementiert auf 16-Bit-Hardware. Was genau meinen Sie mit " finden Sie den Min / Max-Wert "?
  • irgendetwas falsch mit a<b?a:b und a>b?a:b
  • Auch ich bin unklar. Versuchen Sie, zwei Zahlen innerhalb eines bestimmten epsilon zu vergleichen? Versuchen Sie, den möglichen Bereich zu bestimmen, der innerhalb der Fehlergrenze dieses Werts liegen könnte? Etwas anderes? Wir brauchen mehr Kontext.
  • Entschuldigung, ich werde die Frage bearbeiten, um sie zu klären. Ich möchte den Bereich berechnen, in dem ein in MIL-STD-1750A formatierter 48-Bit-FP-Wert aus dem minimalen und dem maximalen Wert bestehen kann.

Answer

Für 32-Bit-Gleitkommawerte ist der Maximalwert in Tabelle III angegeben:

0.9999998 x 2^127 represented in hex as: mantissa=7FFFFF, exponent=7F. 

We kann die Mantisse / den Exponenten wie folgt in einen (engen) Dezimalwert zerlegen:

7FFFFF <base-16> = 8,388,607 <base-10>. 

Es gibt 23 Signifikanzbits, also teilen wir 8.388.607 durch 2 ^ 23 .

8,388,607 / 2^23 = 0.99999988079071044921875 (see Table III) 

bis zum Exponenten:

7F <base-16> = 127 <base-10> 

und jetzt multiplizieren wir die Mantisse um 2 ^ 127 (der Exponent)

8,388,607 / 2^23 * 2^127 = 8,388,607 * 2^104 = 1.7014116317805962808001687976863 * 10^38 

Dies ist der größte 32-Bit-Gleitkommawert, da die größte Mantisse und der größte Exponent verwendet werden.

Der 48-Bit-Gleitkomma addiert 16 Bit der Mantisse der Leasinggeberbedeutung, lässt jedoch den Exponenten gleich groß. Somit würde der Maximalwert in hexadezimaler Darstellung als

mansissa=7FFFFFFFFF, exponent=7F. 

dargestellt. Wir können

7FFFFFFFFF <base-16> = 549,755,813,887 <base-10> 

der maximale Exponent ist immer noch 127, aber wir müssen durch [23 + 16 = 39 teilen, also:] 2 ^ 39. 127-39 = 88, also multiplizieren Sie einfach mit 2 ^ 88:

549,755,813,887 * 2^88 = 1.7014118346015974672186595864716 * 10^38 

Dies ist der größte 48-Bit-Gleitkommawert, da wir die größtmögliche Mantisse verwendet haben und größtmöglicher Exponent.

Die Maximalwerte sind also:

1.7014116317805962808001687976863 * 10^38, for 32-bit, and, 1.7014118346015974672186595864716 * 10^38, for 48-bit 

Der Maximalwert für 48-Bit ist nur geringfügig größer als für 32-Bit, was naheliegend ist, da am Ende der Mantisse einige Bits hinzugefügt werden.

(Um genau zu sein, kann die maximale Anzahl für das 48-Bit-Format als Binärzahl ausgedrückt werden, die besteht aus 39 1 „s, gefolgt von 88 0“ s.)

(Das kleinste ist nur das Negativ dieses Wertes. Das dem Null am nächsten liegende, ohne Null zu sein, kann auch leicht wie oben berechnet werden: Verwenden Sie die kleinstmögliche (positive) Mantisse: 0000001 und kleinstmöglicher Exponent: 80 in hex oder -128 in dezimal)


FYI

Einige Gleitkommaformate verwenden ein nicht dargestelltes verstecktes 1 Bit in der Mantisse (dies ermöglicht ein zusätzliches Bit an Genauigkeit in der Mantisse, wie f ollows: Die erste Binärziffer aller Zahlen (außer 0 oder Denormals, siehe unten) ist eine 1, daher müssen wir diese , und wir haben ein bisschen mehr Präzision). Dieses spezielle Format scheint dies nicht zu tun.

Andere Gleitkommaformate ermöglichen eine denormalisierte Mantisse, die die Darstellung von (positiven) Zahlen ermöglicht, die kleiner als der kleinste Exponent sind, indem Präzisionsbits gegen zusätzliche (negative) Potenzen eingetauscht werden Dies ist einfach zu unterstützen, wenn es nicht auch das verborgene Bit unterstützt, etwas schwieriger, wenn dies der Fall ist.


8,388,607 / 2 ^ 23 ist der Wert, den Sie mit Mantisse erhalten würden = 0x7FFFFF und Exponent = 0x00. Dies ist nicht der Einzelbitwert, sondern der Wert mit einer vollen Mantisse und einer neutralen oder genauer gesagt einer Null Exponent.

Der Grund, warum dieser Wert nicht direkt 8388607 ist und eine Division erfordert (durch 2 ^ 23 und daher kleiner als erwartet) ist, dass der implizite Radixpunkt befindet sich vor der Mantisse und nicht nach ihr. Denken Sie also an (ein Vorzeichenbit, gefolgt von einem Radixpunkt, gefolgt von dreiundzwanzig 1-Bit) für die Mantisse und +/- 111111111111 (hier kein Radixpunkt, nur eine ganze Zahl, in diesem Fall 127 ) für den Exponenten.

Mantisse = 0x7FFFFF mit Exponent = 0x7F ist der größte Wert, der 8388607 * 2 ^ 104 entspricht, wobei die 104 von 127-23 stammt: Wiederum werden 23 Zweierpotenzen subtrahiert, da die Mantisse den Radixpunkt hat am Anfang. Wenn der Radixpunkt am Ende wäre, wäre der größte Wert (0x7FFFFF, 0x7F) tatsächlich 8.388.607 * 2 ^ 127.

Unter anderem gibt es Möglichkeiten, einen einzelnen Bitwert für die zu betrachten Mantisse. Eine ist Mantisse = 0x400000 und die andere ist Mantisse = 0x000001. Ohne Berücksichtigung des Radixpunkts oder des Exponenten beträgt der erstere 4.194.304 und der letztere 1. Bei einem Exponenten von Null und unter Berücksichtigung des Radixpunkts beträgt der erstere 0,5 (dezimal) und der letztere 0,00000011920928955078125. Mit einem maximalen (oder minimalen) Exponenten können wir maximale und minimale Einzelbitwerte berechnen.

(Beachten Sie, dass das letztere Format, in dem die Mantisse führende Nullen aufweist, in einigen Zahlenformaten als denormalisiert betrachtet wird und seine normalisierte Darstellung 0x400000 mit einem Exponenten von -23 ist.)

Kommentare

  • Ich habe einen Zweifel. Mit 8.388.607 / 2 ^ 23 wird angegeben, was ein einzelnes Bit in der Mantisse darstellen kann. Wie also 8.388.607 / 2 ^ 23 * 2 ^ 127 den Maximalwert darstellt?
  • @hariprasad, ich werde ein Postskriptum auf die Antwort setzen, da es im Kommentarformat zu schwer zu erklären ist.
  • wo ist der minimalwert? ' wird im Titel angefordert!
  • @CharlieParker Im Gegensatz zu ganzzahligen Darstellungen, bei denen min und max versetzt sind, verwenden Gleitkommaformate das Vorzeichen & Größenrepräsentationen, wobei die Größe aus einem Exponenten und einer Mantisse besteht. Die maximale Zahl in der Vorzeichengröße ist dann (1) positiv (Vorzeichenbit ist 0) und (2) der größtmögliche Exponent und (3) die größtmögliche Mantisse. Die minimale Zahl ist identisch: außer dass sich das Vorzeichenbit ändert, so dass es (1) negativ ist (Vorzeichenbit ist 1), jedoch (2) der größtmögliche Exponent und (3) die größtmögliche Mantisse. Wie ich oben erklärt habe, ist die minimale Zahl nur -max, also setzen Sie einfach ein - -Zeichen auf.

Antwort

Sie können ausleihen, wie der IEEE-Gleitkomma für einen schnellen Vergleich ausgelegt ist: Vorzeichen, Exponent, Mantisse. In diesem PDF sehe ich jedoch, dass Mantisse und Exponent umgekehrt sind.

Dies bedeutet, dass Sie zum Vergleichen zuerst das Vorzeichenbit überprüfen müssen und wenn einer noch nicht der Gewinner ist, die Exponenten vergleichen und dann vergleichen die Mantisse.

Wenn eine positiv und die andere negativ ist, ist das Positive das Maximum.

Wenn beide positiv sind und ein Exponent größer ist, ist es das Maximum (wenn beide sind negativ, dann ist es die min)

Ähnlich für Mantisse.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.