Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » double zu char. wie geht das?

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
09.04.2008, 12:35 Uhr
~Opay
Gast


Guten Tag

Ich habe eine 48bit lange double Variabel.
Diese will shiften damit ich daraus meherere unsigned char Variabeln machen kann.
(also LSB bis bit7 in einen char nud dann bit8 bis bit 15 usw...)
nun wollte ich das durch einfaches shiften lösen.
also den den double 8 mal shiften dann in eine char variabel... wieder 8 mal shiten wieder in eine char variabel usw...

aber wie ich bemerkt habe geht das nicht da ich die double variabel nicht shiften kann.

Mein liebes NI LabWindows sagt mir dass die Datentypen 'illegal' währen.

könnt ihr mir evtl. n lösungsansatz geben?


Lg Ortus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.04.2008, 12:53 Uhr
stephanw
localhorst


Was willst Du denn eigentlich machen ? Den double-Wert als Zeichen in eine Datei schreiben ?

Evtl. kannst Du ja ein Union verwenden:

C++:

union DoubleChar
{
  double48 value;                      // dein 48-Bit Datentyp
  char str[sizeof(double48)];       // ein character-Array der gleichen Größe
};

// ..

DoubleChar dc;
dc.value = 123.4;
std::string s(dc.str, sizeof(double48)); // string daraus machen
std::cout << s << std::endl;




Wenn davon irgendwas portabel sein soll (auf Rechner A schreiben, auf Rechner B lesen), würde ich das anders machen.
--
Reden ist Schweigen und Silber ist Gold.

Dieser Post wurde am 09.04.2008 um 12:54 Uhr von stephanw editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.04.2008, 13:01 Uhr
Tommix



Hi,
@stefanw: LabWindows ist ein reiner C-Compiler mit einer prähistorischen IDE, also eher

C++:
union DoubleChar dc;
dc.value = 123.4;
printf("%c%c", dc.str[0], dc.str[1]);
// o.ä.


@opay: Vielleicht ist es doch cleverer, Du verrätst uns, was Du eigentlich vorhast.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.04.2008, 14:08 Uhr
0xdeadbeef
Gott
(Operator)


Jaaa, Moment. Was jetzt das LSB einer Fließkommazahl ist, ist durchaus nicht so ganz einfach zu definieren. Nach IEEE 754 spaltet sich deine Fließkommazahl in drei Teile - Vorzeichen, Exponent und Mantisse:



Du hast es also eigentlich mit zwei LSBs zu tun - eines für den Exponenten, eines für die Mantisse. Erschwert wird das ganze dadurch, dass die genaue Anordnung der Bytes im Speicher von der Rechnerarchitektur abhängt, und Exponent und Mantisse sich ein Byte teilen.

LabWindows ist mir unbekannt, und eine 48 bit-double-Variable ist mir bisher auch nicht über den Weg gelaufen (3 byte pro Wort?) - um welche Rechnerarchitektur handelt es sich hier?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.04.2008, 04:03 Uhr
Hans
Library Walker
(Operator)



Zitat von 0xdeadbeef:
eine 48 bit-double-Variable ist mir bisher auch nicht über den Weg gelaufen (3 byte pro Wort?) - um welche Rechnerarchitektur handelt es sich hier?

Hi,

könnte sein, das die aus Pascal übernommen wurde. Da gibt es den Datentyp REAL, der 48 Bit gross ist. Gemäss dem Turbo-Pascal Handbuch wie folgt definiert:

Code:
+---+------------------------+--------+
| 1 |          39            |   8    |
+---+------------------------+--------+
| V |       Mantisse         |  Exp.  |
+---+------------------------+--------+
.    MSB                  LSB MSB   LSB



Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
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: