<?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[Float Zahl auseinander nehmen.]]></title><description><![CDATA[<p>Ich will alle vier Bytes einer float Zahl in einen vier Bytes großen char array einlesen. Das ist mein Ansatz, nur ich glaub der ist falsch, aber ich weis nicht was. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">float zahl=20.1;
        float *ptr;

        char a[3];

        ptr = &amp;zahl;

        for (int i=0;i &lt; 4;i++)
        {
                a[i]=(char)ptr;
                ptr++;
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/178306/float-zahl-auseinander-nehmen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 08:20:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178306.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Apr 2007 09:57:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Float Zahl auseinander nehmen. on Tue, 10 Apr 2007 09:57:24 GMT]]></title><description><![CDATA[<p>Ich will alle vier Bytes einer float Zahl in einen vier Bytes großen char array einlesen. Das ist mein Ansatz, nur ich glaub der ist falsch, aber ich weis nicht was. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">float zahl=20.1;
        float *ptr;

        char a[3];

        ptr = &amp;zahl;

        for (int i=0;i &lt; 4;i++)
        {
                a[i]=(char)ptr;
                ptr++;
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1262773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262773</guid><dc:creator><![CDATA[Hauke]]></dc:creator><pubDate>Tue, 10 Apr 2007 09:57:24 GMT</pubDate></item><item><title><![CDATA[Reply to Float Zahl auseinander nehmen. on Tue, 10 Apr 2007 10:10:35 GMT]]></title><description><![CDATA[<p>dein problem ist, dass ptr bei dir vom typ float* ist und ptr++ daher um sizeof(float) (=4) weiterzählt statt um 1. außerdem is dein array a nur 3 elemente groß statt 4 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">float zahl = 20.1f;
char *ptr = reinterpret_cast&lt;char*&gt;(&amp;zahl);
char a[4];

for( int i = 0; i &lt; 4; i++ )
  a[i] = *ptr++;
</code></pre>
<p>alternativ gings auch so:</p>
<pre><code class="language-cpp">union
{
   float zahl;
   char a[4];
}

zahl = 20.1f;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1262785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262785</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Tue, 10 Apr 2007 10:10:35 GMT</pubDate></item><item><title><![CDATA[Reply to Float Zahl auseinander nehmen. on Tue, 10 Apr 2007 10:09:48 GMT]]></title><description><![CDATA[<p>so ist's doch viel einfacher</p>
<pre><code>float zahl=20.1;
char a[sizeof(float)];

*(float*)a = zahl;  // &lt;-- keine schleife nötig
</code></pre>
<p><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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262794</guid><dc:creator><![CDATA[vista]]></dc:creator><pubDate>Tue, 10 Apr 2007 10:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to Float Zahl auseinander nehmen. on Tue, 10 Apr 2007 13:08:19 GMT]]></title><description><![CDATA[<p>Gut. Ich wollte nun aus der float Zahl einmal Ziffern, Exponent und Vorzeichen herausfiltern<br />
[ S ][Exponent][mantrissa]<br />
32 31|30 23|22 0</p>
<p><a href="http://chrishecker.com/images/f/fb/Gdmfp.pdf" rel="nofollow">http://chrishecker.com/images/f/fb/Gdmfp.pdf</a><br />
S. 21</p>
<p>Ich hab das nun so herausgefiltert, aber das scheint irgendwie falsch zu sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">float zahl=20.1;
        char *ptr = reinterpret_cast&lt;char*&gt;(&amp;zahl);
        char a[4];
        int b[4],e,s,te;

        for (int i=0;i &lt; 4;i++)
        {
                a[i] = *ptr ;
                b[i]=a[i]; //sicher stellen, dass 1 Byte Zahl
                ptr++;
        }
        e=a[2]&amp;128;   //nur das letzte Bit
        e =e&gt;&gt; 7;     // 7 Bits nach rechts schieben

        s=a[3]&amp;128;   //vorzeichen Bit
        s=s &gt;&gt; 7;     //nur noch 1 oder 0 möglich

        te=a[3]|128;  //100% setzen
        te=a[3]^128;  //Bit wegmachen  (xor)
        te &lt;&lt; 1;      //mal 2

        e = e + te;   //end exponent
</code></pre>
<p>Und noch eine Frage zusätzlich wie ist die Basis für den Exponent.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262974</guid><dc:creator><![CDATA[Hauke]]></dc:creator><pubDate>Tue, 10 Apr 2007 13:08:19 GMT</pubDate></item><item><title><![CDATA[Reply to Float Zahl auseinander nehmen. on Tue, 10 Apr 2007 13:26:40 GMT]]></title><description><![CDATA[<p>Hauke schrieb:</p>
<blockquote>
<p>Ich hab das nun so herausgefiltert, aber das scheint irgendwie falsch zu sein</p>
</blockquote>
<p>benutzt du einen x86-PC?<br />
dort sind die bytes falsch herum gespeichert, d.h. bit 31 ist dort, wo du das bit 7 erwarten würdest.</p>
<p>Hauke schrieb:</p>
<blockquote>
<p>Und noch eine Frage zusätzlich wie ist die Basis für den Exponent.</p>
</blockquote>
<p>2</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262986</guid><dc:creator><![CDATA[vista]]></dc:creator><pubDate>Tue, 10 Apr 2007 13:26:40 GMT</pubDate></item><item><title><![CDATA[Reply to Float Zahl auseinander nehmen. on Tue, 10 Apr 2007 14:13:45 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">float x = -2.0f;#
  int xi = *reinterpret_cast&lt;int*&gt;(&amp;x);

  int s = xi &gt;&gt; 31;
  int e = (xi &lt;&lt; 8) &gt;&gt; 23;
  int m = xi &amp; 0x803FFFFF;
</code></pre>
<p>ich würds so in der art versuchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1262996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262996</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Tue, 10 Apr 2007 14:13:45 GMT</pubDate></item><item><title><![CDATA[Reply to Float Zahl auseinander nehmen. on Tue, 10 Apr 2007 14:01:41 GMT]]></title><description><![CDATA[<p>Das mit den umgedrehten Bytes weis ich, aber ich weis nicht wie c++ das genau verwaltet und wenn ich die Bytes umdrehe gefallen mir die Zahlen noch weniger oder ich interpretiere die werte, die herauskommen falsch.</p>
<pre><code class="language-cpp">e=a[1]&amp;128;   //nur das letzte Bit       vorher 2
        e =e&gt;&gt; 7;     // 7 Bits nach rechts schieben

        s=a[0]&amp;128;   //vorzeichen Bit           vorher 3
        s=s &gt;&gt; 7;     //nur noch 1 oder 0 möglich

        te=a[0]|128;  //100% setzen              vorher 3
        //fehler war hier noch drin sonst macht die oberre Zeile kein Sinn
        te=te^128;    //Bit wegmachen  (xor)     vorher 3
        te &lt;&lt; 1;      //mal 2

        e = e + te;   //end exponent
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1263010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263010</guid><dc:creator><![CDATA[Hauke]]></dc:creator><pubDate>Tue, 10 Apr 2007 14:01:41 GMT</pubDate></item></channel></rss>