<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[fließkommer in integer raum (kein cast)]]></title><description><![CDATA[<p>Hallo, ich habe folgendes Problem und zwar soll mit Fließkommawerten rein auf Integer ebene gearbeitet werden. Der grund ist der, das am ende das ganze Portiert werden soll auf ein System mit 32bit Int cpu, die keine Fließkommaarithmetik unterstützt. Ich habe mir den IEEE 754 angeschaut und wollte es auch so machen. Nur ist die Frage wie bekomme ich aus einer Fließkommazahl eine Binärdarstellung dieser hin damit ich entsprechend mit Verschiebung die Mantisse den Exponenten und das Vorzeichen holen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175123/fließkommer-in-integer-raum-kein-cast</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 01:28:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175123.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Mar 2007 12:34:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 12:34:23 GMT]]></title><description><![CDATA[<p>Hallo, ich habe folgendes Problem und zwar soll mit Fließkommawerten rein auf Integer ebene gearbeitet werden. Der grund ist der, das am ende das ganze Portiert werden soll auf ein System mit 32bit Int cpu, die keine Fließkommaarithmetik unterstützt. Ich habe mir den IEEE 754 angeschaut und wollte es auch so machen. Nur ist die Frage wie bekomme ich aus einer Fließkommazahl eine Binärdarstellung dieser hin damit ich entsprechend mit Verschiebung die Mantisse den Exponenten und das Vorzeichen holen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1240897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240897</guid><dc:creator><![CDATA[Tobi1984]]></dc:creator><pubDate>Wed, 07 Mar 2007 12:34:23 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 12:41:09 GMT]]></title><description><![CDATA[<p>Sicher, dass es nicht einfacher waere, mit Festkommazahlen zu arbeiten?</p>
<p>Zurueck zu Deiner Frage: Einfach auf int casten, und dann mit Bitschiebereien in Mantisse und Exponent zerlegen. Oder gleich Mantisse und Exponent in 2 verschiedenen Variablen speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1240900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240900</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Wed, 07 Mar 2007 12:41:09 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 12:46:58 GMT]]></title><description><![CDATA[<p>Das Problem ist das es möglichst genau sein sollte, weil die Werte Farbwerte wiederspiegeln und die Ergebnisse in den XYZ Raum überführt werden sollen. Aber int tut doch nur runden oder? Und da wären meine Kommastellen ja verschwunden oder hab ich nen denkfehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1240903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240903</guid><dc:creator><![CDATA[Tobi1984]]></dc:creator><pubDate>Wed, 07 Mar 2007 12:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 13:06:47 GMT]]></title><description><![CDATA[<p>Integer-Werte haben keine Nachkommastellen (die werden bei der Umwandlung nichtmal gerundet, sondern schlicht abgeschnitten) und die Verarbeitung von Gleitkommazahlen ist um einiges komplizierter (vor allem weil der Exponent noch gesondert betrachtet werden muß). Wenn du auf deinem Zielsystem keine double's hast, bleiben dir zwei mögliche Lösungansätze:</p>
<ul>
<li>Gleitkomma-Arithmetik selber nachbauen (viel Spaß dabei ;))</li>
<li>Festkommawerte (die letzten n Stellen einer int-Zahl gelten als Nachkomma-Bereich)</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1240918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240918</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 07 Mar 2007 13:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 13:12:40 GMT]]></title><description><![CDATA[<p>Genau das ist meine Hauptaufgabe(istn Diplomthema), Theoretisch hab ich da schon informationen. Hab da noch son altes buch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Nur wie gesagt das stehts theoretisch und ich brauch halt die Binär darstellung der Fließkommazahl. Damit ich mir die Mantisse und Exp holen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1240921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240921</guid><dc:creator><![CDATA[Tobi1984]]></dc:creator><pubDate>Wed, 07 Mar 2007 13:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 13:27:35 GMT]]></title><description><![CDATA[<p>Reichen dir die Ausführungen unter <a href="http://de.wikipedia.org/wiki/Gleitkommazahl" rel="nofollow">Gleitkommazahl (Wikipedia)</a> aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1240932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240932</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 07 Mar 2007 13:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 13:41:05 GMT]]></title><description><![CDATA[<p>Alles schön und gut nur wie gesagt die CPU kann keine Fließkommaarithmetik und was die bei Wiki zeigen um die Binärdarstellung zu erreichen ist Fließkomma.</p>
<p>Meine Idee war wie folgendes bild zeigt</p>
<p><a href="http://www.mactech.com/articles/mactech/Vol.15/15.07/AltiVecRevealed/fig04.gif" rel="nofollow">http://www.mactech.com/articles/mactech/Vol.15/15.07/AltiVecRevealed/fig04.gif</a></p>
<p>im Bereich von</p>
<p>0-22 Mantisse<br />
23-30 Exponent<br />
31 Vorzeichen</p>
<p>dann hätte ich das was ich brauche. Nur wie komme ich sinnvoll an diese darstellung. Wenn ich ein eingabe wert</p>
<pre><code class="language-cpp">float = 2,54311f
</code></pre>
<p>habe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1240945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240945</guid><dc:creator><![CDATA[Tobi1984]]></dc:creator><pubDate>Wed, 07 Mar 2007 13:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 13:52:23 GMT]]></title><description><![CDATA[<p>Versuch's mal mit reinterpret_cast&lt;&gt; (und Bit-Operationen zur Aufteilung des Wertes).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1240955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240955</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 07 Mar 2007 13:52:23 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 14:12:20 GMT]]></title><description><![CDATA[<p>Irgendwie compiliert der das nicht, bekomme immer die Message hier<br />
cannot convert from 'float' to 'char *' There is no context in which this conversion is possible?!?</p>
<pre><code>#include&lt;iostream&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;

using namespace std;

void main()
 {
	 float f = -1.04f;
	 long  l = reinterpret_cast&lt;char*&gt;(f);	
	 cout&lt;&lt; l &lt;&lt;endl;
	 getchar();
 }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1240970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240970</guid><dc:creator><![CDATA[Tobi1984]]></dc:creator><pubDate>Wed, 07 Mar 2007 14:12:20 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 14:13:44 GMT]]></title><description><![CDATA[<p>das char gehört da nicht rein sollte long stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1240971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240971</guid><dc:creator><![CDATA[Tobi1984]]></dc:creator><pubDate>Wed, 07 Mar 2007 14:13:44 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 14:28:54 GMT]]></title><description><![CDATA[<p>Ist auch egal, wenn du etwas als Zeiger reinterpreten willst, musst Du auch einen Zeiger reingeben:</p>
<pre><code class="language-cpp">Quelltyp x;
Zieltyp* y = reinterpret_cast&lt;Zieltyp*&gt;(&amp;x);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1240983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240983</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 07 Mar 2007 14:28:54 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 14:39:48 GMT]]></title><description><![CDATA[<p>So hab mich mal registriert weil es doch bissl mehr wurde. Ich hab was gefunden jetzt in Hexadezimal nur leider ist der Code bissl Unverständlich für mich. Die nächste sache wäre das in die Binärdarstellung überführe.</p>
<pre><code class="language-cpp">#define BACC(var, n) *((unsigned char*)&amp;(var) + (n))

void main()
{
unsigned char bin_byte;
float f = 21.13152265f;
int i;

   for(i = 0; i &lt; sizeof(f); i++)
   {
      bin_byte = BACC(f, i);
      printf(&quot;0x%02x &quot;,bin_byte);
   }      
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1240990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240990</guid><dc:creator><![CDATA[Tobias1984]]></dc:creator><pubDate>Wed, 07 Mar 2007 14:39:48 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 14:39:57 GMT]]></title><description><![CDATA[<p>Nicht direkt eine Antwort, aber ich wollte nochmal auf das Makro und den Cast eingehen, denn das geht in C++ schöner und sicherer:</p>
<pre><code class="language-cpp">typedef unsigned char byte; // reine Faulheit, nicht erforderlich

template&lt;typename Type&gt;
inline byte BACC(Type f, int byteno)
{
    return *( reinterpret_cast&lt;byte*&gt;( &amp;f ) + byteno );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1240996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1240996</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 07 Mar 2007 14:39:57 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 15:28:07 GMT]]></title><description><![CDATA[<p>Kann mir jemand erklären was diese Zeile macht?</p>
<pre><code class="language-cpp">#define BACC(var, n) *((unsigned char*)&amp;(var) + (n))
</code></pre>
<p>So wie ich das verstehe liest der jedes mal 1 Byte (unsigned Char) und Speichert das in var? und n gibt die stellen an. Aber diese Verschachtlung macht mich ein bissl konfus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1241045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241045</guid><dc:creator><![CDATA[Tobias1984]]></dc:creator><pubDate>Wed, 07 Mar 2007 15:28:07 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Wed, 07 Mar 2007 15:58:10 GMT]]></title><description><![CDATA[<p>Wo siehst Du eine Zuweisung an var?</p>
<p>Der Ausdruck nimmt die Adresse von var durch den Operator &quot;&amp;&quot; (wobei die Klammern um var hier unnötig sind). Diese Adresse wird als Zeiger auf unsigned char* (weil char die kleinste adressierbare Einheit ist) uminterpretiert (gecastet). Die Adresse des unsigned char wird dann um n Stellen inkrementiert (in diesem Fall um n kleinste adressierbare Einheiten), um die n-te Einheit von var zu erreichen. Die resultierende Adresse wird dann dereferenziert (Sternchen vor der ersten Klammer) um den Wert der n-ten Einheit von var zu erhalten.</p>
<p>Schau Dir nochmal die von mir gepostete Funktion an, die ist (IMHO) leichter verständlich, auch wenn dasselbe dabei herauskommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1241080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241080</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 07 Mar 2007 15:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to fließkommer in integer raum (kein cast) on Thu, 08 Mar 2007 06:48:48 GMT]]></title><description><![CDATA[<p>Schick <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Danke nochmal, eine Frage wieso nimmst du eine Templatefunktion? anstatt</p>
<pre><code class="language-cpp">unsigned char BACC(float f, int byteno)
{
   return *( reinterpret_cast&lt;byte*&gt;( &amp;f ) + byteno );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1241384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1241384</guid><dc:creator><![CDATA[Tobias1984]]></dc:creator><pubDate>Thu, 08 Mar 2007 06:48:48 GMT</pubDate></item></channel></rss>