<?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[32bit binär nach 32bit float(Speziell)]]></title><description><![CDATA[<p>Hi Alle,</p>
<p>mein Problem ist, das ich eine binäre 32bit<br />
Zahl habe, die ich zwar nach 32bit float<br />
umrechnen kann, aber ein anderes Ergebnis bekomme,<br />
als z.b. von dem Linux Programm &lt;ghex&gt;(Gnome).<br />
Das Programm ist dabei nicht entscheidend, alle<br />
Hexeditoren haben mir den gleichen 32bit float wert<br />
angezeigt.</p>
<p>Der binär Wert ist:<br />
00000000 00000000 10000000 10111111<br />
Oder:<br />
0000 0000 0000 0000 1000 0000 1011 1111<br />
Oder:<br />
0 00000000 00000001000000010111111</p>
<p>Das erste bit besagt das es eine positive<br />
32bit float Zahl ist.</p>
<p>Die nächsten 8 bit sollen den Exponent ergeben.<br />
Dazu rechnet man die 8bit in dezimal um, was 0 ist<br />
und zieht davon 127 ab, dies ergibt -127.<br />
Aslo würde die float Zahl normalerweise wie folgt<br />
berechnet:<br />
(1+2<sup>-8+2</sup>-16+2<sup>-18+2</sup>-19+2<sup>-20+2</sup>-21+2<sup>-22+2</sup>-23)*2^-127</p>
<p>Wie auch immer müsste dies laut dem Programm eine 32bit<br />
float Zahl sein:<br />
1,000000e+00<br />
Wobei in dem Programm Little Endian aktiviert ist.<br />
Ist standardmäßig aktiviert. Deaktiviere ich es<br />
kommt eine andere 32bit float Zahl raus.</p>
<p>Wichtig ist mir zu wissen, nicht ob sein Ergebnis richtig<br />
ist oder meins, sondern wie er darauf kommt. Sein<br />
Ergebnis ist definitiv richtig, da ein fertiges octave<br />
skript die gleichen 32bit float Zahlen ausgibt.<br />
Dieses Skript wurden von Entwicklern geschrieben, deren<br />
Software ich nutze...blablabla(unwichtig, außer Jemand<br />
möchte es hören <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>
<p>Hier noch eine zweites beispiel.<br />
Die 32bit binär Zahl,<br />
00000000 00000000 00000000 11000000<br />
soll die 32bit float Zahl,<br />
-2,000000e+00<br />
ergeben.</p>
<p>Oder die 32bit binär Zahl:<br />
00000000 00000000 10010000 01000001<br />
soll<br />
+18<br />
ergeben.</p>
<p>Hat da Jemand ne Idee wie der hex Editor und das octave<br />
skript auf diese 32bit float kommen ?</p>
<p>In wikipedia steht noch was unter &quot;Interpretation des<br />
Zahlenformats&quot;:<br />
<a href="http://de.wikipedia.org/wiki/IEEE_754" rel="nofollow">http://de.wikipedia.org/wiki/IEEE_754</a><br />
Dies habe ich aber leider nicht ganz verstanden.</p>
<p>Grüße Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238056/32bit-binär-nach-32bit-float-speziell</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 21:11:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238056.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Apr 2009 20:38:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 32bit binär nach 32bit float(Speziell) on Sun, 05 Apr 2009 20:38:03 GMT]]></title><description><![CDATA[<p>Hi Alle,</p>
<p>mein Problem ist, das ich eine binäre 32bit<br />
Zahl habe, die ich zwar nach 32bit float<br />
umrechnen kann, aber ein anderes Ergebnis bekomme,<br />
als z.b. von dem Linux Programm &lt;ghex&gt;(Gnome).<br />
Das Programm ist dabei nicht entscheidend, alle<br />
Hexeditoren haben mir den gleichen 32bit float wert<br />
angezeigt.</p>
<p>Der binär Wert ist:<br />
00000000 00000000 10000000 10111111<br />
Oder:<br />
0000 0000 0000 0000 1000 0000 1011 1111<br />
Oder:<br />
0 00000000 00000001000000010111111</p>
<p>Das erste bit besagt das es eine positive<br />
32bit float Zahl ist.</p>
<p>Die nächsten 8 bit sollen den Exponent ergeben.<br />
Dazu rechnet man die 8bit in dezimal um, was 0 ist<br />
und zieht davon 127 ab, dies ergibt -127.<br />
Aslo würde die float Zahl normalerweise wie folgt<br />
berechnet:<br />
(1+2<sup>-8+2</sup>-16+2<sup>-18+2</sup>-19+2<sup>-20+2</sup>-21+2<sup>-22+2</sup>-23)*2^-127</p>
<p>Wie auch immer müsste dies laut dem Programm eine 32bit<br />
float Zahl sein:<br />
1,000000e+00<br />
Wobei in dem Programm Little Endian aktiviert ist.<br />
Ist standardmäßig aktiviert. Deaktiviere ich es<br />
kommt eine andere 32bit float Zahl raus.</p>
<p>Wichtig ist mir zu wissen, nicht ob sein Ergebnis richtig<br />
ist oder meins, sondern wie er darauf kommt. Sein<br />
Ergebnis ist definitiv richtig, da ein fertiges octave<br />
skript die gleichen 32bit float Zahlen ausgibt.<br />
Dieses Skript wurden von Entwicklern geschrieben, deren<br />
Software ich nutze...blablabla(unwichtig, außer Jemand<br />
möchte es hören <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>
<p>Hier noch eine zweites beispiel.<br />
Die 32bit binär Zahl,<br />
00000000 00000000 00000000 11000000<br />
soll die 32bit float Zahl,<br />
-2,000000e+00<br />
ergeben.</p>
<p>Oder die 32bit binär Zahl:<br />
00000000 00000000 10010000 01000001<br />
soll<br />
+18<br />
ergeben.</p>
<p>Hat da Jemand ne Idee wie der hex Editor und das octave<br />
skript auf diese 32bit float kommen ?</p>
<p>In wikipedia steht noch was unter &quot;Interpretation des<br />
Zahlenformats&quot;:<br />
<a href="http://de.wikipedia.org/wiki/IEEE_754" rel="nofollow">http://de.wikipedia.org/wiki/IEEE_754</a><br />
Dies habe ich aber leider nicht ganz verstanden.</p>
<p>Grüße Markus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691443</guid><dc:creator><![CDATA[feldmaus]]></dc:creator><pubDate>Sun, 05 Apr 2009 20:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit binär nach 32bit float(Speziell) on Mon, 06 Apr 2009 02:51:09 GMT]]></title><description><![CDATA[<p>Du hast das Stichwort schon genannt: &quot;Little Endian&quot;</p>
<p>Während du den Binärwert direkt rechnen willst, interpretieren die Programme das als Speicherbereich im Little-Endian-Format.</p>
<p>Du rechnest also direkt mit</p>
<pre><code>00000000 00000000 10000000 10111111
</code></pre>
<p>Während unter Berücksichtigung des Little-Endian-Formats eigentlich das Wort</p>
<pre><code>10111111 10000000 00000000 00000000
</code></pre>
<p>die Grundlage für die Umrechnung bildet.</p>
<p>Trotzdem kommt da nicht 1,000000e+00 sondern -1,000000e+00 heraus. Da hast du wohl in deinem Beitrag geschludert. <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>
<p>Beim Rest sitmmt es aber:</p>
<pre><code>00000000 00000000 00000000 11000000 Speicherbereich Little Endian 
11000000 00000000 00000000 00000000 Datenwort    		       
-2.0                                Float-Wert  

00000000 00000000 10010000 01000001 Speicherbereich Little Endian   
01000001 10010000 00000000 00000000 Datenwort	               
18.0                                Float-Wert
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1691515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691515</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Mon, 06 Apr 2009 02:51:09 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit binär nach 32bit float(Speziell) on Mon, 06 Apr 2009 15:13:57 GMT]]></title><description><![CDATA[<p>Mitleid schrieb:</p>
<blockquote>
<p>Du hast das Stichwort schon genannt: &quot;Little Endian&quot;</p>
<p>Während du den Binärwert direkt rechnen willst, interpretieren die Programme das als Speicherbereich im Little-Endian-Format.</p>
<p>Du rechnest also direkt mit</p>
<pre><code>00000000 00000000 10000000 10111111
</code></pre>
<p>Während unter Berücksichtigung des Little-Endian-Formats eigentlich das Wort</p>
<pre><code>10111111 10000000 00000000 00000000
</code></pre>
<p>die Grundlage für die Umrechnung bildet.</p>
<p>Trotzdem kommt da nicht 1,000000e+00 sondern -1,000000e+00 heraus. Da hast du wohl in deinem Beitrag geschludert. <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>
<p>Beim Rest sitmmt es aber:</p>
<pre><code>00000000 00000000 00000000 11000000 Speicherbereich Little Endian 
11000000 00000000 00000000 00000000 Datenwort    		       
-2.0                                Float-Wert  

00000000 00000000 10010000 01000001 Speicherbereich Little Endian   
01000001 10010000 00000000 00000000 Datenwort	               
18.0                                Float-Wert
</code></pre>
</blockquote>
<p>Hey, hab auch noch mal en frage.</p>
<p>würde aus</p>
<pre><code>00000000 00000000 10000000 10111111
</code></pre>
<p>im little endian nicht</p>
<pre><code>11111101 00000001 00000000 00000000
</code></pre>
<p>werden?</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691870</guid><dc:creator><![CDATA[muh@mäh]]></dc:creator><pubDate>Mon, 06 Apr 2009 15:13:57 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit binär nach 32bit float(Speziell) on Mon, 06 Apr 2009 15:41:36 GMT]]></title><description><![CDATA[<p>muh@mäh schrieb:</p>
<blockquote>
<p>Hey, hab auch noch mal en frage.</p>
<p>würde aus</p>
<pre><code>00000000 00000000 10000000 10111111
</code></pre>
<p>im little endian nicht</p>
<pre><code>11111101 00000001 00000000 00000000
</code></pre>
<p>werden?</p>
<p>Gruss</p>
</blockquote>
<p>Um in Vokard-Manier zu antworten: Nope!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691884</guid><dc:creator><![CDATA[mäh@muh]]></dc:creator><pubDate>Mon, 06 Apr 2009 15:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit binär nach 32bit float(Speziell) on Mon, 06 Apr 2009 16:49:38 GMT]]></title><description><![CDATA[<p>Also sind bytes immer in der gleichen order? da gibts kein little oder big endian? Und in größeren datentypen sind die bytes einfach ungedreht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691906</guid><dc:creator><![CDATA[muh@mäh]]></dc:creator><pubDate>Mon, 06 Apr 2009 16:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit binär nach 32bit float(Speziell) on Mon, 06 Apr 2009 20:19:28 GMT]]></title><description><![CDATA[<p>Es kommt darauf an, wie dein Prozessor gebaut ist. Grundsätzlich sind der Phantasie keine Grenzen gesetzt. Du könntest auch einen Prozessor löten, der jedes Bit im Speicher adressieren kann, dann könnte man es so organisieren, dass dein Behauptung von vorhin auch richtig ist.</p>
<p>Die Grenzen entstehen aber sobald es sinnvoll im Sinne von effizient sein soll. Und bei einer Speicherorganisation in Bytes macht es nur Sinn das Datenwort ebenfalls in Bytes aufzuteilen und diese dann unter bestimmten Konventionen im Speicher abzulegen (Big-Endian, Little-Endian, Alignment-Regeln, ...)</p>
<p>32Bit Datenworte werden von rechts nach links notiert, d.h. das &quot;0te Bit&quot; steht ganz rechts:</p>
<pre><code>Bit 31 -&gt; 01000001 10010000 00000000 00000000 &lt;- Bit 0
</code></pre>
<p>Also, ist auch das niedrigste Byte rechts.</p>
<p>Notationen von Speicherbereichen machen eigentlich nur Sinn, wenn die Speicheradressen auch dabei stehen. Geht man von Little Endian aus und notiert die Speicherstellen aufsteigend von links nach rechts, dann kannst du sagen die Bytes aus dem Datenwort werden &quot;verdreht&quot;.</p>
<p>Speicher:</p>
<pre><code>00000000 00000000 10010000 01000001 
________|________|________|________|________|
Byte 305|Byte 306|Byte 307|Byte 308|Byte 309|  ...
</code></pre>
<p>Notiert man den Speicher anders, also z.B. absteigend von links nach rechts, dann verdreht sich nichts.</p>
<pre><code>01000001 10010000 00000000 00000000 
________|________|________|________|________|
Byte 315|Byte 314|Byte 313|Byte 312|Byte 311|  ...
</code></pre>
<p>Man muss einfach darauf achten, dass bei Little-Endian das niedriegste Byte (Bit 0 bis Bit 7) auf der niedriegsten Adresse ist und die anderen dann entsprechend anordnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1692005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692005</guid><dc:creator><![CDATA[mäh@muh]]></dc:creator><pubDate>Mon, 06 Apr 2009 20:19:28 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit binär nach 32bit float(Speziell) on Mon, 06 Apr 2009 21:21:20 GMT]]></title><description><![CDATA[<p>danke <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/1692019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1692019</guid><dc:creator><![CDATA[mäüh]]></dc:creator><pubDate>Mon, 06 Apr 2009 21:21:20 GMT</pubDate></item><item><title><![CDATA[Reply to 32bit binär nach 32bit float(Speziell) on Sat, 20 Jun 2009 15:43:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin ganz offenbar im richtigen Forum. Folgendes Problem quält nicht: Aus einem Standalone-Messgerät aus den 90er Jahren lese ich einen Datenstream aus, direkt in den PC rein übr serielle SN.</p>
<p>Solange es um ascii geht alles easy. Aber es sind auch Zahlen in dem Stream, die in einem FP-Format abgelegt sein dürften.</p>
<p>Wenn mich nicht alles täuscht wird dafür ein 4-Byte Format verwendet. Aber trotz Tüftelns bekomme ich einfach nicht heraus, wie die Zahlen im Array abgelegt oder angeordnet sind. Beispiel: ich lese</p>
<p>b1 b2 b3 b4<br />
0100.0000.0111.0010.1000.1111.0101.1010</p>
<p>Das dürfte einem der vier Werte entsprechen, die ich zufällig auf dem Display des Messgerätes erkannt habe 55.5, 139.0, 39.8 oder 15.0.</p>
<p>Aber der Binär-String ist mit der gängigen EEE 7xxx-Codierung (S1e5m23 ..usw.) nicht in Einklang zu bringen.</p>
<p>KLeine Hilfe: Messgerät geöffnet und geschaut, welche CPU. Sieht aus wie ein 16 Bit Datenbus, CPU durch Kleber und Kratzer unkenntlich gemacht. Leider. Evtl Intel-kompatibles Zeug (also wohl: little endian).</p>
<p>Mehr habe ich nicht als Anhaltspunkte. Wer hat eine Ahnung, wie die Werte abgelegt oder &quot;versteckt&quot; sind?</p>
<p>Danke<br />
Vick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1730104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1730104</guid><dc:creator><![CDATA[Vick-Mick]]></dc:creator><pubDate>Sat, 20 Jun 2009 15:43:36 GMT</pubDate></item></channel></rss>