Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zahlendarstellung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.06.2005, 13:03 Uhr
~Power
Gast


Hi,

Ich brauche ein Programm, dass mir eine Dezimalzahl in eine Duale Gleitpunktzahl umwandelt.
z.B:
0.6875=0.1011

Ich habe jedoch leider keine Idee wie ich das machen soll.

Danke!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.06.2005, 14:28 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


duale gleitpunktzahl?

wtf ist denn das

gleitkomma/punkt und dual schliesst sich aus, ein 0.110101001 gibt es nicht, das "komma" wird bei dualdarstellung anders gespeichert, vgl mal hier:

www.matheboard.de/thread.php?threadid=4955
--
class God : public ChuckNorris { };

Dieser Post wurde am 18.06.2005 um 14:30 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.06.2005, 14:32 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von FloSoft:
duale gleitpunktzahl?

wtf ist denn das


Ohne Worte..

--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.06.2005, 15:07 Uhr
~Power
Gast


Ich meinte eingentlich die Umwandlung in Vorzeichen, Exponent, Mantisse:

z.B: (32-Bit-Zahl)

148.625

148=10010100

148/2=74 R 0
74/2 =37 R 0
37/2 =18 R 1
18/2 =9 R 0
9/2 = 4 R 1
4/2 = 2 R 0
2/2 = 1 R 0
1/2 = 0 R 1

von unten nach oben

0.625=101

0.625*2=1.25 ->1
0.25*2 =0.5->0
0.5*2 = 1->1

von oben nach unten bin mir aber nicht sicher

148.625=10010100.101=1.0010100101*2^7

Exponent=2^(8-1)-1+7=134=10000110

Ergebnis:
Vorzeichen:0
Exponent: 10000110
Mantisse:00101001010000000000000
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.06.2005, 16:01 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


einfachste möglichkeit ist vermutlich einfach nen float/double zu nehmen und die einzelnen bits auszugeben...

ungetestet

C++:
template <class Typ>
void binaer_ausgeben(Typ zahl){
    void *p=&zahl;
    for(size_t i=8*sizeof(Typ);i;--i)
        std::cout<<( ( *((size_t*)p) >> (i-1) ) &1);
    std::cout<<std::endl;
}




Bearbeitung:

hmm mit nach size_t casten wird vermutlich nicht funzen wenn du nen double nimmst da es vermutlich zu klein ist... irgendwie nen 64 bit ganzzahlpointer nehmen sollte aber funzen...


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 18.06.2005 um 16:04 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.06.2005, 16:32 Uhr
~Power
Gast


Es scheint zu funktionieren!

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: