Hallo alle zusammen.
Ein erfolgreiches neues Jahr mal allen!
Also..
ich habe ein Projekt bei dem es darum geht die Gleitkommaarithmetik beim Microsoft und Borland Compiler herauszufinden und zu vergleichen.
Ergebnis sollte darstellen wie
- Exponent,
- Mantisse,
- VZ-Mantissen,
- Charakteristik,
- EingespartesMantissenBit (die 1. Eins bei den Mantissen) aufgeteilt sind.
Bei Float, Double und Long Double (nur Borland, oder?) in C.
Mir wurde folgendes gesagt: (EMB = Einges.Man.Bit. = kommt gar nicht vor. wird vorausgesetzt)
das bedeutet das die obere Zahl so dargestellt werden müsste:
Mein Problem ist. Ich habe keine Ahnung wie ich Zugang zu den einzelnen Bits habe !?
Wie komme ich wenn ich Float = 5.0 definiere an das Bitmuster 01000000110100... ?
Ich hoffe Ihr habt das jetzt hier verstanden was ich geschrieben habe, beziehungsweise Ihr wisst es schon und könnt mir eine Anregung geben. Ich arbeite vorwiegend in MVC++6.
Schönen Nachmittag noch und
schon jetzt Vielen Dank
Florian Bräuer
Ein erfolgreiches neues Jahr mal allen!
Also..
ich habe ein Projekt bei dem es darum geht die Gleitkommaarithmetik beim Microsoft und Borland Compiler herauszufinden und zu vergleichen.
Ergebnis sollte darstellen wie
- Exponent,
- Mantisse,
- VZ-Mantissen,
- Charakteristik,
- EingespartesMantissenBit (die 1. Eins bei den Mantissen) aufgeteilt sind.
Bei Float, Double und Long Double (nur Borland, oder?) in C.
Mir wurde folgendes gesagt: (EMB = Einges.Man.Bit. = kommt gar nicht vor. wird vorausgesetzt)
VZm | Expos | EMB | Mantissen
1 (-) | 10001010 | (1) | 11010000000011110000010
das würde - 0, (1)11010000000011110000010 *2 ^12+126 = - 3712,4693 im 10Sys
also normalisierte Darstellung mal der Basis hoch (Exponenten+Charakteristik)
Das ist jetzt ein Beispiel für C-Float gewesen.
Hier noch eines mit einer etwas einfacheren Zahl, nähmlich 5:1 (-) | 10001010 | (1) | 11010000000011110000010
das würde - 0, (1)11010000000011110000010 *2 ^12+126 = - 3712,4693 im 10Sys
also normalisierte Darstellung mal der Basis hoch (Exponenten+Charakteristik)
Das ist jetzt ein Beispiel für C-Float gewesen.
VZm | Expos | EMB | Mantissen
0 (+) | 10000001 | (1) | 01000000000000000000000
das würde - 0, (1)01 *2 ^3+126 und das wäre jetzt 5 in unserem 10er System
Ich habe das obrige Beispiel trotzdem angegeben weil Float ja 4 Byte hat,0 (+) | 10000001 | (1) | 01000000000000000000000
das würde - 0, (1)01 *2 ^3+126 und das wäre jetzt 5 in unserem 10er System
das bedeutet das die obere Zahl so dargestellt werden müsste:
. Byte 1 | Byte 2 | Byte 3 | Byte 4
11000101 | 01101000 | 00000111 | 10000010
stimmt aber nicht, sondern so:
. Byte 4 | Byte 3 | Byte 2 | Byte 1
10000010 | 00000111 | 01101000 | 11000101
Ich hoffe ich habe hier jetzt keinen Blödsinn geschrieben.11000101 | 01101000 | 00000111 | 10000010
stimmt aber nicht, sondern so:
. Byte 4 | Byte 3 | Byte 2 | Byte 1
10000010 | 00000111 | 01101000 | 11000101
Mein Problem ist. Ich habe keine Ahnung wie ich Zugang zu den einzelnen Bits habe !?
Wie komme ich wenn ich Float = 5.0 definiere an das Bitmuster 01000000110100... ?
Ich hoffe Ihr habt das jetzt hier verstanden was ich geschrieben habe, beziehungsweise Ihr wisst es schon und könnt mir eine Anregung geben. Ich arbeite vorwiegend in MVC++6.
Schönen Nachmittag noch und
schon jetzt Vielen Dank
Florian Bräuer