<?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[Extraktion eines Teilwortes?]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Ich soll für eine 32-Bit-Zahl ein Teilwort extrahieren. Über eine Tastatureingabe soll ich das Startbit auswählen können und über eine weitere Tastatureingabe soll ich die die Anzahl Bits eingeben können die mit extrahiert werden sollen. Meine bisherige Überlegung findet ihr unten im Code:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

int main()
{
    unsigned int bit;
    int s, n, erg;
    int config_byte;

    int a;

    /*
    cout &lt;&lt; &quot;Bitte den Startwert s eingeben: s= &quot;;
    cin &gt;&gt; s;

    cout &lt;&lt; &quot;Bitte die Anzahl der zu Extrahierenden Bits eingeben: n= &quot;;
    cin &gt;&gt; n;
    */

    bit = 123456789;

    config_byte = 64;

    a = bit &amp; config_byte;

    cout &lt;&lt; a;

system(&quot;pause&quot;);
return 0;    
}
</code></pre>
<p>Das Problem daran ist nur, wenn ich nun quasi die erste Stelle meines max. 32-Bit langen Wortes maskieren möchte (mit a = bit &amp; config_byte), dann gibt mir cout &lt;&lt; a; 64 aus, was ja dem config_byte entspricht, aber nicht dem maskierten Bit; also entweder eine 1 oder eine 0. Was ist da falsch? Ich mach doch eigentlich nix falsches, oder?</p>
<p>Achja, ich darf nur logische Operatoren benutzen und keine Schleifen oder ähnliches.</p>
<p>Könnt ihr mir weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/276606/extraktion-eines-teilwortes</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 06:06:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276606.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Nov 2010 15:10:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 15:10:37 GMT]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Ich soll für eine 32-Bit-Zahl ein Teilwort extrahieren. Über eine Tastatureingabe soll ich das Startbit auswählen können und über eine weitere Tastatureingabe soll ich die die Anzahl Bits eingeben können die mit extrahiert werden sollen. Meine bisherige Überlegung findet ihr unten im Code:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

int main()
{
    unsigned int bit;
    int s, n, erg;
    int config_byte;

    int a;

    /*
    cout &lt;&lt; &quot;Bitte den Startwert s eingeben: s= &quot;;
    cin &gt;&gt; s;

    cout &lt;&lt; &quot;Bitte die Anzahl der zu Extrahierenden Bits eingeben: n= &quot;;
    cin &gt;&gt; n;
    */

    bit = 123456789;

    config_byte = 64;

    a = bit &amp; config_byte;

    cout &lt;&lt; a;

system(&quot;pause&quot;);
return 0;    
}
</code></pre>
<p>Das Problem daran ist nur, wenn ich nun quasi die erste Stelle meines max. 32-Bit langen Wortes maskieren möchte (mit a = bit &amp; config_byte), dann gibt mir cout &lt;&lt; a; 64 aus, was ja dem config_byte entspricht, aber nicht dem maskierten Bit; also entweder eine 1 oder eine 0. Was ist da falsch? Ich mach doch eigentlich nix falsches, oder?</p>
<p>Achja, ich darf nur logische Operatoren benutzen und keine Schleifen oder ähnliches.</p>
<p>Könnt ihr mir weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975550</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 15:10:37 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 15:33:22 GMT]]></title><description><![CDATA[<p>Sorry Leute, ich hab euch leider den falschen Code geschickt: Jetzt stimmts:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

int main()
{
    unsigned int config_byte;
    unsigned int s, n, erg;
    unsigned int mask;

    int a;

    /*
    cout &lt;&lt; &quot;Bitte den Startwert s eingeben: s= &quot;;
    cin &gt;&gt; s;

    cout &lt;&lt; &quot;Bitte die Anzahl der zu Extrahierenden Bits eingeben: n= &quot;;
    cin &gt;&gt; n;
    */

    config_byte = 0xFFFFFFFF;

    //Verschiebung

    mask = 128;

    a = config_byte &amp; mask;

    cout &lt;&lt; a;

system(&quot;pause&quot;);
return 0;    
}
</code></pre>
<p>Ich möchte erst mal richtig maskieren können was mir im moment noch nicht gelingt. Danach kann ich mich ja um die extraktion eines Bits kümmern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975556</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 15:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 15:37:59 GMT]]></title><description><![CDATA[<p>Rechenfehler meinerseits ignorieren, es geht um's Prinzip:</p>
<pre><code>0xFF = 11111111
  64 = 01000000

0xFF &amp; 64 = 01000000 = 64
</code></pre>
<p>Fehler verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975559</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 05 Nov 2010 15:37:59 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 15:42:13 GMT]]></title><description><![CDATA[<p>Hm, ok,</p>
<p>Der compiler liefert mir eine 64 weil eben 01000000 einer 64 entspricht. Aber wie bringe ich ihn dazu, dass er mir eben nur eine 1 oder 0 auswirft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975562</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 15:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 15:50:45 GMT]]></title><description><![CDATA[<p>Einfach überprüfen, ob 0 (oder != 0) als Ergebnis der Maskierung rauskommt:</p>
<pre><code class="language-cpp">int eins_oder_null = (config_byte &amp; mask)? 1 : 0;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1975571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975571</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 05 Nov 2010 15:50:45 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 15:51:15 GMT]]></title><description><![CDATA[<p>das darf ich nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975572</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 15:51:15 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 15:53:54 GMT]]></title><description><![CDATA[<p>Dann shifte das Ergebnis. Shiften wirst du ohnehin müssen bei der Aufgabenstellung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975575</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 05 Nov 2010 15:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 16:01:57 GMT]]></title><description><![CDATA[<p>Nach der maskierung die eins einfach nach links shiften... das wars jetzt funzts so wie ich will... danke.</p>
<p>Das Startbit setze ich jetzt so:</p>
<pre><code class="language-cpp">cin &gt;&gt; s;

    x = a &amp; (1 &lt;&lt; s);
    z = x &gt;&gt; s;
</code></pre>
<p>Ich bekomme danach je nach dem eine 1 oder 0. Jetzt hab ich allerdings noch das problem, dass ich nicht weiß wie ich ohne Schleifen aus einer 32-bit langen Zahl ab einem Startbit (s) z.B. eine n-lange Bitkette &quot;rausschneide&quot;. Irgendwie kann doch das gar nicht gehen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975582</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 16:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 16:02:16 GMT]]></title><description><![CDATA[<p>So ungefähr könnte das gehen</p>
<pre><code class="language-cpp">int int32 = ....;
int start = ...;
int num = ...;

int mask = (1&lt;&lt;num)-1;
int result = (int32 &gt;&gt; start) &amp; mask;
</code></pre>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975583</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 05 Nov 2010 16:02:16 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 16:07:26 GMT]]></title><description><![CDATA[<p>Um eine n-stellige Maske zu erstellen: Nimm eine Maske nur aus Einsen, shifte sie einmal entsprechen nach links und einmal nach rechts und verunde das Ergebnis. So:</p>
<pre><code>1111111111111

&gt;&gt; 0000011111111
&lt;&lt; 1111111111000
&amp;  -------------
   0000011111000
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1975586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975586</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 05 Nov 2010 16:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 16:48:00 GMT]]></title><description><![CDATA[<p>Ich hab mir mal jetzt gedanken dazu gemacht und das so aufgezogen:</p>
<pre><code class="language-cpp">mask0 = 0xFFFFFFFF;

    mask1 = mask0 &gt;&gt; (31 - s);
    mask2 = mask0 &lt;&lt; (31 - (s + n));

    mask = mask1 &amp; mask2;
</code></pre>
<p>Stimmt das so? Was meint ihr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975601</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 16:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 17:23:25 GMT]]></title><description><![CDATA[<p>Hier jetzt mal meinen Programmcode:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

int main()
{
    unsigned int config_byte;
    unsigned int s, n, erg, x;
    unsigned int mask0, mask1, mask2, mask, anzahl;

    cout &lt;&lt; &quot;Bitte den Startwert s eingeben: s= &quot;;
    cin &gt;&gt; s;

    cout &lt;&lt; &quot;Bitte die Anzahl der zu Extrahierenden Bits eingeben: n= &quot;;
    cin &gt;&gt; n;

    config_byte = 0xF5C23D21;

    //Erstellen der Maske aufgrund der Benutzereingaben
    mask0 = 0xFFFFFFFF;

    mask1 = mask0 &gt;&gt; (31 - s);
    mask2 = mask0 &lt;&lt; (31 - (s - n));
    mask = mask1 &amp; mask2;

    x = config_byte &amp; mask;

    anzahl = 31 - (s - n);
    erg = x &gt;&gt; anzahl;

    cout &lt;&lt; erg;

system(&quot;pause&quot;);
return 0;    
}
</code></pre>
<p>Das cout am Schluss liefert nicht das gewünschte Ergebnis... Wenn ich z.B. für s eine 11 (=12. Stelle der 32-Bit-Zahl) und für n eine 4 (um 4 Stellen zu maskieren) eingebe, dann liefert mir cout keine 13 (welche ja in Hex für ein D steht), sondern eine 0. Besser gesagt, er liefert mir für unterschiedliche Werte immer eine 0...</p>
<p>Was mach ich da noch falsch?</p>
<p>So der Grundgedanke dahiner kann doch gar nicht so falsch sein, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975616</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 17:23:25 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 17:39:28 GMT]]></title><description><![CDATA[<p>bandchef schrieb:</p>
<blockquote>
<p>Ich hab mir mal jetzt gedanken dazu gemacht und das so aufgezogen:</p>
<pre><code class="language-cpp">mask0 = 0xFFFFFFFF;
    
    mask1 = mask0 &gt;&gt; (31 - s);
    mask2 = mask0 &lt;&lt; (31 - (s + n));
    
    mask = mask1 &amp; mask2;
</code></pre>
<p>Stimmt das so? Was meint ihr?</p>
</blockquote>
<p>Soll das jemand kapieren? Um eine Maske zu bekommen mit n gesetzten Bits, schreibe einfach</p>
<pre><code class="language-cpp">(1&lt;&lt;n) -1;
</code></pre>
<p>Dann shifte des dahin wo Du willst und gut ist.</p>
<p>Mann macht's doch ned so komplexe Lösungen, die dann eh ned funktionieren.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975636</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 05 Nov 2010 17:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 17:40:33 GMT]]></title><description><![CDATA[<p>sorry, aber dein codeschnipsel verstehe ich nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975637</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 17:40:33 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 17:44:52 GMT]]></title><description><![CDATA[<p>bandchef schrieb:</p>
<blockquote>
<p>sorry, aber dein codeschnipsel verstehe ich nicht...</p>
</blockquote>
<p>Wo ist das Problem? Das ist doch simpel:</p>
<p>1 &lt;&lt; 7 = 10000000<br />
10000000 - 1 = 1111111</p>
<p>1 &lt;&lt; 2 = 100<br />
100-1 = 11</p>
<p>Ist jetzt der Groschen gefallen?</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975641</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 05 Nov 2010 17:44:52 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 17:45:09 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">1111111111111

&gt;&gt; 0000011111111
&lt;&lt; 1111111111000
&amp;  -------------
   0000011111000
</code></pre>
<p>Um die erste Zeil zu erstellen muss ich doch sagen: mask &gt;&gt; (32 - s); wie soll's denn sonst auch gehen.</p>
<p>Um die zweite Zeile zu erstellen muss ich doch auch sagen: mask0 &lt;&lt; (32 - (s - (n-1)));</p>
<p>Keine Ahnung wie's anders gehen soll und schon gleich nicht wie das mit so 'nem kurzen Code wie dem hier gehen soll: (1&lt;&lt;n) -1;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975644</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 17:45:09 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 17:46:19 GMT]]></title><description><![CDATA[<p>siehst du bei mir das problem in der berechnung der zweiten &quot;maske&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975646</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 17:46:19 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 17:48:50 GMT]]></title><description><![CDATA[<p>Wo ist das Problem? Das ist doch simpel:</p>
<p>1 &lt;&lt; 7 = 10000000<br />
10000000 - 1 = 1111111</p>
<p>1 &lt;&lt; 2 = 100<br />
100-1 = 11</p>
<p>Ist jetzt der Groschen gefallen?</p>
<p>mfg Martin</p>
<p>Sorry ich kapiers nicht...</p>
<p>EDIT: das obige beispiel verstehe ich jetzt schon aber ich kanns nicht auf mein Problem übertragen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975647</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 17:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 17:56:25 GMT]]></title><description><![CDATA[<p>den rechts shift an die stelle die man mit s vorgibt kann ich ja nur damit erzeugen indem ich rechne: 32-s. und um genau diese Stellen muss ich nach rechts shiften.</p>
<p>damit ich weiß an welche stelle ich nach links shiften muss, dass genau 4 bits ausmaskiert werden muss ich halt auch wieder berechnen indem ich sag: (32 - (s - (n-1)))</p>
<p>aber genau dann funzts nicht. wie das mit deinem beispiel gehen soll ist mir überhaupt nicht klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975657</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 17:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 18:04:41 GMT]]></title><description><![CDATA[<p>bandchef schrieb:</p>
<blockquote>
<p>Wo ist das Problem? Das ist doch simpel:</p>
<p>1 &lt;&lt; 7 = 10000000<br />
10000000 - 1 = 1111111</p>
<p>1 &lt;&lt; 2 = 100<br />
100-1 = 11</p>
<p>Ist jetzt der Groschen gefallen?</p>
<p>mfg Martin</p>
<p>Sorry ich kapiers nicht...</p>
<p>EDIT: das obige beispiel verstehe ich jetzt schon aber ich kanns nicht auf mein Problem übertragen...</p>
</blockquote>
<p>Du willst doch n hintereinander liegende Bits. Dazu brauchst Du eine Maske mit genau n hintereinander liegenden Bits. Du mußt nur noch die Maske dahin schieben, wo Du sie willst:</p>
<pre><code class="language-cpp">unsigned int maske = (1&lt;&lt;n)-1;
</code></pre>
<p>Wenn Du die Bits beim höchstwertigen anfängst zu zählen und dort mit 1 anfängst, geht das so:</p>
<pre><code class="language-cpp">maske &lt;&lt;= (33-start-n)
</code></pre>
<p>normalerweise fängt man aber beim niedrigsten mit 0 an zu zählen. Dann geht das so:</p>
<pre><code class="language-cpp">maske &lt;&lt;= start;
</code></pre>
<p><strong>Ergänzung:</strong><br />
So normalerweise will man dann aber, daß die maskierten Bits wieder an unterster Stelle stehen. Daher sollte man die Quelle shiften und mit den n bits der Maske maskieren und nicht die Maske shiften. Das erreichst Du letztendlich mit meinem ersten Lösungsvorschlag.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975659</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 05 Nov 2010 18:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 18:10:07 GMT]]></title><description><![CDATA[<p>Ich hab eine solch Zahl gegeben:</p>
<pre><code class="language-cpp">1100011001010001
</code></pre>
<p>Davon möchte ich jetzt die 7., 8., 9., ausmaskiert haben. Meine Stellen beginnen bei 1 und gehen in diesem Fall bis 12.</p>
<p>Dann schreibe ich:</p>
<pre><code class="language-cpp">mask = (1 &lt;&lt; 10)-1;
</code></pre>
<p>jetzt ist bis zur 9. Stelle maskiert. Und nun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975664</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 18:10:07 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 18:12:04 GMT]]></title><description><![CDATA[<p>Um jetzt die zweite Maske bis von links nach Rechts bis zur 7. Stelle zu maskieren schreibe ich:</p>
<pre><code class="language-cpp">mask1 = (1 &gt;&gt; 6)-1;
</code></pre>
<p>Muss ich da jetzt ebenfalls ein -1 schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975666</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 18:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 18:15:33 GMT]]></title><description><![CDATA[<p>aber auf mein Beispeil angewendet gehts wieder nicht:</p>
<p>mask1 = (1 &lt;&lt; n)-1;<br />
mask2 = (1 &gt;&gt; s)-1;</p>
<p>den punkt s kann ich anshiften. mit n wird aber nur gegeben WIEVIELE bits maskiert werden sollen. und die wievielte stelle das nun eben in abhängigkeit von n sind, das MUSS man doch ausrechnen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975668</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 18:15:33 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 18:18:26 GMT]]></title><description><![CDATA[<p>wahrscheinlich liegts auch daran weil ich es mir nicht vorstellen kann... gibts da nicht irgendwo eine schöne visualisierung wie man solche verdammten shifts macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975670</guid><dc:creator><![CDATA[bandchef]]></dc:creator><pubDate>Fri, 05 Nov 2010 18:18:26 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 18:19:14 GMT]]></title><description><![CDATA[<p>bandchef schrieb:</p>
<blockquote>
<p>Ich hab eine solch Zahl gegeben:</p>
<pre><code class="language-cpp">1100011001010001
</code></pre>
<p>Davon möchte ich jetzt die 7., 8., 9., ausmaskiert haben. Meine Stellen beginnen bei 1 und gehen in diesem Fall bis 12.</p>
<p>Dann schreibe ich:</p>
<pre><code class="language-cpp">mask = (1 &lt;&lt; 10)-1;
</code></pre>
<p>jetzt ist bis zur 9. Stelle maskiert. Und nun?</p>
</blockquote>
<p>Also ich habe jetzt 16 Bits gezählt.</p>
<blockquote>
<p>1234567890123456<br />
1100011001010001</p>
</blockquote>
<p>Du willst doch nur 3 Bits. Warum erzeugst Du dann eine Maske mit 10 Bits?</p>
<pre><code class="language-cpp">mask = (1&lt;&lt;3)-1;
mask &lt;&lt;= 7;
</code></pre>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975673</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 05 Nov 2010 18:19:14 GMT</pubDate></item><item><title><![CDATA[Reply to Extraktion eines Teilwortes? on Fri, 05 Nov 2010 18:24:39 GMT]]></title><description><![CDATA[<p>bandchef schrieb:</p>
<blockquote>
<p>wahrscheinlich liegts auch daran weil ich es mir nicht vorstellen kann... gibts da nicht irgendwo eine schöne visualisierung wie man solche verdammten shifts macht?</p>
</blockquote>
<p>Das ist doch nicht schwer:</p>
<pre><code>(1&lt;&lt;3) - 1 = 0000000000000111;
0000000000000111 &lt;&lt; 1 = 0000000000001110;
0000000000000111 &lt;&lt; 2 = 0000000000011100;
0000000000000111 &lt;&lt; 3 = 0000000000111000;
0000000000000111 &lt;&lt; 4 = 0000000001110000;
0000000000000111 &lt;&lt; 5 = 0000000011100000;
0000000000000111 &lt;&lt; 6 = 0000000011100000;
0000000000000111 &lt;&lt; 7 = 0000000111000000;
0000000000000111 &lt;&lt; 8 = 0000001110000000;
usw. usf.
</code></pre>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975676</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 05 Nov 2010 18:24:39 GMT</pubDate></item></channel></rss>