|
|
||||||
|
#1
|
|
|
|
|
Hi,
wer weiss, wie das in der Regel umgesetzt wird? Eingabe: Mantisse + Exponent als Integerzahlen (binär, zur Basis 2) Ausgabe: String mit Floatingpointzahl zur Basis 10 Beispiel: Mantisse: 1.110000 (= 7 / 4) Exponent: 111011 (= -5) Wenn ich mich nicht irre, dann spiegeln obige Angaben diese Zahl wieder: 5.4687500E-2 (= 7 / 4 / 2^5) So! Ich habe also jetzt die Mantisse (1110000 = 112 = 7*16) und den Exponenten -5 als Integerzahl. Wie errechne ich jetzt die Dezimalzahl - Stelle um Stelle? Also wie wandle ich Mantisse+Exponent in einen String um? Ich kann nicht auf irgendwelchen Java-Routinen zurückgreifen. 1. es geht um ein C++ Programm 2. Mantisse und Exponent sind repräsentiert durch arbitrary-precision integer zahlen. Grüße, Sven |
|
|
|
#2
|
|
|
|
|
Sven Köhler wrote:
> Hi, > Eingabe: Mantisse + Exponent als Integerzahlen (binär, zur Basis 2) > Ausgabe: String mit Floatingpointzahl zur Basis 10 > Beispiel: > Mantisse: 1.110000 (= 7 / 4) > Exponent: 111011 (= -5) > Wenn ich mich nicht irre, dann spiegeln obige Angaben diese Zahl wieder: > 5.4687500E-2 (= 7 / 4 / 2^5) > Grüße, > Sven Vorschlag: [1] Bin-Exp zu Bin-Float, also z.B. 1.11(b) x 2^-5 = 0.0000111(b) x 2^0 = 0.0000111(b) [2] Bin zu Dec getrennt für Vor- und Nachkommateil, also z.B. [2a] 0.(b) = 0.(d) [2b] .0000111(b) = 0 x (1/2+1/4+1/8+1/16) + 1 x (1/32+1/64+1/128) = = 1 x (4+2+1)/128 = 0.0546875(d) [3] Dec-Float zu Dec-Exp, also z.B. 0.0546875 = 5.46875 x 10^-2 mfG, wz |
|
#3
|
|
|
|
|
> Vorschlag:
> > [1] Bin-Exp zu Bin-Float, also z.B. > 1.11(b) x 2^-5 = 0.0000111(b) x 2^0 = 0.0000111(b) > > [2] Bin zu Dec getrennt für Vor- und Nachkommateil, also z.B. > [2a] 0.(b) = 0.(d) > [2b] .0000111(b) = 0 x (1/2+1/4+1/8+1/16) + 1 x (1/32+1/64+1/128) = > = 1 x (4+2+1)/128 = 0.0546875(d) > > [3] Dec-Float zu Dec-Exp, also z.B. > 0.0546875 = 5.46875 x 10^-2 > > mfG, wz Danke für deine Antwort. Es geht mir aber nicht um das manuelle auswerten, sondern das Ausrechnen der Floatingpoint-Dezimaldarstellung mit möglichst wenig Operation. Rauskommen soll ein String - und ich gebe dabei nochmal zu bedenken, dass meine Mantisse und der Exponent beliebig gross/klein werden können. |
|
#4
|
|
|
|
|
On Feb 5, 2:42 am, Sven Köhler <remove-for-no-spam-skoeh>
wrote: > Es geht mir aber nicht um das manuelle auswerten, sondern das Ausrechnen > der Floatingpoint-Dezimaldarstellung mit möglichst wenig Operation. Wo ist das Problem? Du hattest doch schon Mantisse und Exponent getrennt: 112 und -5 Also ist die gesuchte Zahl 112 / 32. > Rauskommen soll ein String - und ich gebe dabei nochmal zu bedenken, > dass meine Mantisse und der Exponent beliebig gross/klein werden können. Dazu mußt Du jetzt nur für Deinen Datentyp die ganz normale Schuldivisionsregel umsetzen: Also 112 / 32 = 3, Rest 16 Vor dem Komma steht also 3 Danach entwickelst Du den Dezimalbruch nach dem Komma: 16*10 / 32 = 5, Rest 0 (Glück gehabt!) Ergebnis 3.5 Bei anderen Zahlen, die einen periodischen Dezimalbruch ergeben, wirst Du ein Abbruchkriterium brauchen. |
|
#5
|
|
|
|
|
Ingo Menger wrote:
> .... > Bei anderen Zahlen, die einen periodischen Dezimalbruch ergeben, wirst > Du ein Abbruchkriterium brauchen. Der Fall sollte eigentlich nie eintreffen: endliche Bin-Mantisse -> abbrechende Bin-Zahl -> abbrechende Dec-Zahl ( Hintergrund: { Primteiler von 2 } ist Teilmenge von { Primteiler von 10 } ) mfG, wz |
|
#6
|
|
|
|
|
On Feb 6, 9:22 pm, wolfgang zeidler <this-mail-account-will-be-ignored-
by-w...@arcor.de> wrote: > Ingo Menger wrote: > > .... > > Bei anderen Zahlen, die einen periodischen Dezimalbruch ergeben, wirst > > Du ein Abbruchkriterium brauchen. > > Der Fall sollte eigentlich nie eintreffen: > endliche Bin-Mantisse -> abbrechende Bin-Zahl -> abbrechende Dec-Zahl Das stimmt. Es läuft ja aber darauf hinaus, daß er eine allgemeine Funktion String ratToString(Biginttype zähler, Biginttype nenner) schreiben muß. Sein Problem wird daher zu einem subsummierten Spezialfall des allgemeineren, in dem dann doch periodische Dezimalzahlen vorkommen können. |
|
|
| Ähnliche Themen | |
| eco basis Hallo! Mir stellt sich folgende Frage: Wenn ich ein neues DECT-Telefon mit ECO-Modus kaufe und an dieser neuen Basisstation Mobilteile anmelde, die nicht diesen Modus... |
|
| Methoden zum Konvertieren zwischen Basis 10 und Basis 36 Hallo, ich muss Zahlen zwischen Basis 10 und Basis 36 (0-9, A-Z) hin und her konvertieren. Derzeit verwende ich selbstgeschriebene Methoden. Aber bringt das Framework... |
|
| Basis und duale Basis Hallo, zu einer Basis b_i eines Vektorraums V laesst sich doch mit einer einfachen Vorschrift v_i(b_j)=delta_ij die duale Basis des Vektorraums V* bilden. Laesst sich das... |
|
| Wie dynamischen Datentraeger unter XP nach Basis wandeln? Hi, eben habe ich meine neue 250 GB Platte (Samsung HA250JC) angeschlossen. In der Datentraegerverwaltung wird mir diese Platte allerdings als "dynamischer Datentraeger"... |
|
| gebrochener Exponent bei negativer Basis Hallo! Ich erinnere mich an eine Regel, nach der gebrochene Exponenten bei negativen Basen - z.B. (-8)^(1/3) - nicht erlaubt sind. Ich habe aber vergessen, warum. Könntet... |
|
|
Alle Zeitangaben in WEZ. Es ist jetzt 10:15 Uhr. | Privacy Policy
|