<?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[short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel)]]></title><description><![CDATA[<p>Mahlzeit!<br />
Ich stehe vor der simplen (?) Aufgabe drei Werte aus einer short Variable zu extrahieren. Leider weiss ich gar nicht, wie ich an die Sache rangehen soll (Ich könnte jetzt ein seltsames Schleifenkonstrukt schreiben, das mir den Binärwert zerhackt und den Mist zusammenrechnet, aber das muss doch auch einfacher gehen <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="🙂"
    /> )<br />
Die Daten müssen folgendermaßen ausgelesen werden:<br />
Wert1 = Bits 0-5<br />
Wert2 = Bits 6-10<br />
Wert3 = Bits 11-15<br />
(Die Werte sollten dann jeweils in einem char oder short landen, ist aber erstmal egal).<br />
Irgendwelche Tipps?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200904/short-in-drei-werte-quot-splitten-quot-binärgefrickel</link><generator>RSS for Node</generator><lastBuildDate>Mon, 05 Oct 2026 05:08:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200904.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Dec 2007 09:41:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 09:41:18 GMT]]></title><description><![CDATA[<p>Mahlzeit!<br />
Ich stehe vor der simplen (?) Aufgabe drei Werte aus einer short Variable zu extrahieren. Leider weiss ich gar nicht, wie ich an die Sache rangehen soll (Ich könnte jetzt ein seltsames Schleifenkonstrukt schreiben, das mir den Binärwert zerhackt und den Mist zusammenrechnet, aber das muss doch auch einfacher gehen <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="🙂"
    /> )<br />
Die Daten müssen folgendermaßen ausgelesen werden:<br />
Wert1 = Bits 0-5<br />
Wert2 = Bits 6-10<br />
Wert3 = Bits 11-15<br />
(Die Werte sollten dann jeweils in einem char oder short landen, ist aber erstmal egal).<br />
Irgendwelche Tipps?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424287</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Fri, 21 Dec 2007 09:41:18 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 09:52:28 GMT]]></title><description><![CDATA[<p>Das macht man üblicherweise mit Bitmasken</p>
<pre><code class="language-cpp">int beispielzahl = ...;
char wert[3];

wert[1] = (0x3f &amp; beistpielzahl);
wert[2] = (0x1f &amp; (beispielzahl &gt;&gt; 6));
wert[3] = (0x1f &amp; (beispielzahl &gt;&gt; 11));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1424293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424293</guid><dc:creator><![CDATA[TLEP]]></dc:creator><pubDate>Fri, 21 Dec 2007 09:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 09:50:46 GMT]]></title><description><![CDATA[<p>Mit passenden Bitmasken kannst du dir die entsprechenden Teilabschnitte herausschneiden und anschließend mit Bit-Shift zurechtrücken:</p>
<pre><code class="language-cpp">Wert1 = (Eingabe &amp; 0x003F);          // 00000000 00111111
Wert2 = (Eingabe &amp; 0x07C0)&gt;&gt;6;       // 00000111 11000000
Wert3 = (Eingabe &amp; 0xF800)&gt;&gt;11;      // 11111000 00000000
</code></pre>
<p>(nur aus Neugierde: Das hat nicht zufällig mit Grafik zu tun?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424294</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Dec 2007 09:50:46 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 09:51:05 GMT]]></title><description><![CDATA[<p>Bitschubserei: Zuerst sorgst Du dafür dass die gewünschten Bits rechts im Speicher stehen (Rechts-Shift), und dann blendest Du die Bits links davon aus (binäres Und).</p>
<p>Als Beispiel für Wert 1:</p>
<pre><code class="language-cpp">short wert1 = wert; // annahme: wert == 1011010000000000
wert1 = wert1 &gt;&gt; 10; // Bits 0-5 aus wert stehen jetzt rechts in wert1, also XXXXXXXXXX101101
wert1 = wert1 &amp; 0x3f; // 0x3f ist 0000000000111111, damit werden die Bits 0-9 von wert1 gelöscht
</code></pre>
<p>Voila - in wert1 stehen jetzt die Bits 0-5 aus wert, und zwar ganz rechts <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>Für die anderen Werte einfach anders schieben und den Wert zum verunden neu berechnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424295</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 21 Dec 2007 09:51:05 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 09:54:10 GMT]]></title><description><![CDATA[<p>Du brauchst dafür, glaube ich, einfach nur UND.</p>
<pre><code>Wert1 = shortVariable &amp; 0xfc00; // ersten 6 bits von LINKS, da 0xfc00 = (binär)1111110000000000
</code></pre>
<p>und so weiter. Hab's jetzt nicht ausprobiert, müsste aber klappen.</p>
<p>EDIT: Oh, da waren ja 3 schneller als ich. ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424296</guid><dc:creator><![CDATA[MAG]]></dc:creator><pubDate>Fri, 21 Dec 2007 09:54:10 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 09:58:36 GMT]]></title><description><![CDATA[<p>Jo danke, scheint zu funktionieren! <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="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>CStoll schrieb:</p>
<blockquote>
<p>...(nur aus Neugierde: Das hat nicht zufällig mit Grafik zu tun?)</p>
</blockquote>
<p>Ja, ich frickel gerade uralte Dateiformate auseinander. In den 90ern wurde noch jedes Bit gespart wo es nur ging. Echt anstrengend, sowas auszulesen <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424299</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Fri, 21 Dec 2007 09:58:36 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 10:02:15 GMT]]></title><description><![CDATA[<p>Cpp_Junky schrieb:</p>
<blockquote>
<p>Ja, ich frickel gerade uralte Dateiformate auseinander. In den 90ern wurde noch jedes Bit gespart wo es nur ging. Echt anstrengend, sowas auszulesen <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="😃"
    /></p>
</blockquote>
<p>[OT] Wenn Du denkst, dass das nicht mehr so ist, vertust Du Dich: Schau Dir nur mal an, wie HDTV in DVB (h264 als MPEG-Datenstrom) codiert ist. Da ist alles variabel und mit krummen Längen codiert, da war MPEG2 noch übersichtlicher. Und das ist ein halbwegs aktuelles Format.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424300</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 21 Dec 2007 10:02:15 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 10:05:29 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Cpp_Junky schrieb:</p>
<blockquote>
<p>Ja, ich frickel gerade uralte Dateiformate auseinander. In den 90ern wurde noch jedes Bit gespart wo es nur ging. Echt anstrengend, sowas auszulesen <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="😃"
    /></p>
</blockquote>
<p>[OT] Wenn Du denkst, dass das nicht mehr so ist, vertust Du Dich: Schau Dir nur mal an, wie HDTV in DVB (h264 als MPEG-Datenstrom) codiert ist. Da ist alles variabel und mit krummen Längen codiert, da war MPEG2 noch übersichtlicher. Und das ist ein halbwegs aktuelles Format.</p>
</blockquote>
<p>Klar, bei Formaten die unmengen Daten speichern, wie Videos oder Bilddaten. Aber drei Texturindizes würde heute niemand mehr in einen short quetschen, nur um damit ein Byte zu sparen <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424302</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Fri, 21 Dec 2007 10:05:29 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 10:10:01 GMT]]></title><description><![CDATA[<p>Cpp_Junky schrieb:</p>
<blockquote>
<p>Aber drei Texturindizes würde heute niemand mehr in einen short quetschen, nur um damit ein Byte zu sparen <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="😃"
    /></p>
</blockquote>
<p>Wer weiß, wieviele Textur-Indizes da in dem Format gespeichert werden sollten <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="😃"
    /><br />
(btw, mir ist bei den Vorgaben zuerst das 16-Bit Format von BMP in den Sinn gekommen - auch wenn da die Bitverteilung etwas anders ist)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424304</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Dec 2007 10:10:01 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 10:11:32 GMT]]></title><description><![CDATA[<p>Wieso nicht? Wenn man es kann? <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="😃"
    /><br />
Vor allem wenn man dadurch andere Leute nerven kann, die irgend wann einmal, wenn man selbst keinen Support mehr leisten muss, damit arbeiten müssen. Soviel Spaß muss sein. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1424305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424305</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 21 Dec 2007 10:11:32 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 10:17:00 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Cpp_Junky schrieb:</p>
<blockquote>
<p>Aber drei Texturindizes würde heute niemand mehr in einen short quetschen, nur um damit ein Byte zu sparen <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="😃"
    /></p>
</blockquote>
<p>Wer weiß, wieviele Textur-Indizes da in dem Format gespeichert werden sollten <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="😃"
    /><br />
(btw, mir ist bei den Vorgaben zuerst das 16-Bit Format von BMP in den Sinn gekommen - auch wenn da die Bitverteilung etwas anders ist)</p>
</blockquote>
<p>Maximal 32x32, also effektiv hätte man 1 KB gespart <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1424312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424312</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Fri, 21 Dec 2007 10:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to short in drei Werte &amp;quot;splitten&amp;quot; (Binärgefrickel) on Fri, 21 Dec 2007 10:19:40 GMT]]></title><description><![CDATA[<p>Cpp_Junky schrieb:</p>
<blockquote>
<p>Maximal 32x32, also effektiv hätte man 1 KB gespart <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>
</blockquote>
<p>Das war vermutlich zu Zeiten, als Begriffe wie &quot;Gigabyte&quot; noch als Utopie galten <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424314</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Dec 2007 10:19:40 GMT</pubDate></item></channel></rss>