Byte-Struktur des double Datentypes
-
Hallo alle,
für ein Porgramm muss ich wissen, wie die verschiedenen Datentypen aufgebaut sind.
Dazu habe ich eine Funktion geschrieben, die sie in ihre einzelnen Bytes zerteilt.
Bei "int" war der Zusammenhang zwischen den Werten der einzelnen Bytes leicht zu finden.
Jetzt hänge ich bei "double" fest.Die Funktion
double examineDouble_Debug(double myDouble) { cout << "Value: " << myDouble << "\n"; int size = sizeof(myDouble); cout << "Byte-Count: " << size << "\n"; double *myDoubleRef = &myDouble; unsigned char *myDoubleAsCharRef = (unsigned char *)myDoubleRef; double calculatedValue = 0; for(int i=0; i<size; i++) { int byteValue = (int)*(myDoubleAsCharRef+i); //double trueValue = f(i, byteValue) cout << "Byte:\t" << i+1 << "\tByte-Value:\t" << byteValue << /*"\tTrue-Value:\t" << trueValue << */ "\n"; } cout << "Calculated Value: " << (calculatedValue) << "\n\n"; return calculatedValue; }
gibt z.B. folgendes aus:
Value: 1.1
Byte-Count: 8
Byte: 1 Byte-Value: 154
Byte: 2 Byte-Value: 153
Byte: 3 Byte-Value: 153
Byte: 4 Byte-Value: 153
Byte: 5 Byte-Value: 153
Byte: 6 Byte-Value: 153
Byte: 7 Byte-Value: 241
Byte: 8 Byte-Value: 63
Calculated Value: 0Die Frage ist jetzt: Was bedeutet jedes einzelne Byte für den Wert der double Variable?
Bzw. wie kann ich die einzelnen Byte-Werte in einen double-Wert umrechnen?Oder mathematisch: Wie würde die hier auskommentierte Funktion f lauten?
-
Floating Point Datentypen sind nicht so einfach zu zu zerlegen, wie fixed point Typen. Da musst du dich wohl ein wenig genauer damit beschäftigen:
-
Danke soweit.
Leider geht nun aus dem Artikel aber nicht hervor was die einzelnen Bytes im Falle von C(++) jetzt bedeuten.Möglicherweise sind ja aber auch die einzelen Bits von Bedeutung.
typdef { unsigned char byte1; unsigned char byte2; // ... } floatStructure; float myFloat = 1; float *floatRef = &myFloat; floatStructure *structureRef = (structure *)floatRef; double calculateValue(floatStructure *) { // ... }
Sowas muss ja irgendwie möglich sein, oder nicht?
-
Ah. Sorry.
Das hier habe ich überlesenhttp://en.wikipedia.org/wiki/Floating_point#Internal_representation
Ich werde mal gucken, ob ich damit was anfangen kann.
Wenn jemand aber eine Lösung oder weitere Hinweise hat
wäre ich dafür sehr dankbar.