<?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[Verwendung von Bitmasken]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hab mir gerade ein kleines TestProgramm geschrieben, um Bitmaksen verstehen zu lernen. Leider liefert es überhauüt nicht den Output auf den ich gehofft habe:</p>
<p>Hier mal das Programm:</p>
<pre><code class="language-cpp">uint8_t testState=0x00000000;
int testShifter=0x1;
testState=(testState or testShifter);
for (int i=0;i&lt;8;i++)
{
std::cout &lt;&lt; (testShifter &amp; testState) &lt;&lt; &quot; &quot;;
testShifter &lt;&lt;=1;
}
std::cout &lt;&lt; std::endl;
testShifter=0x1;
testShifter &lt;&lt;= 3; // Jetzt will ich das dritte Bit verändern
testState=(testState or testShifter);
testShifter=0x1;
for (int i=0;i&lt;8;i++)
{
testShifter &lt;&lt;=1;
std::cout &lt;&lt; (testShifter &amp; testState) &lt;&lt; &quot; &quot;;
}
std::cout &lt;&lt; std::endl;
</code></pre>
<p>Der Output auf den ich gehofft habe wär das hier:</p>
<pre><code>1 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0
</code></pre>
<p>aber gekriegt hab ich nur den:</p>
<pre><code>1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
</code></pre>
<p>Habs dann auch mit &quot;|&quot; statt &quot;or&quot; versucht, aber das hat nur das hier ausgeworfen:</p>
<pre><code>1 0 0 0 0 0 0 0 
0 0 8 0 0 0 0 0
</code></pre>
<p>Hat wer Vorschläge, wie ich meinen WunschOutput doch noch kriegen könnte? <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="😉"
    /><br />
Würd mich freuen / mir echt weiter helfen!</p>
<p>Mfg, Lotoreo!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/237210/verwendung-von-bitmasken</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 14:41:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/237210.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Mar 2009 19:32:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verwendung von Bitmasken on Wed, 25 Mar 2009 19:32:14 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hab mir gerade ein kleines TestProgramm geschrieben, um Bitmaksen verstehen zu lernen. Leider liefert es überhauüt nicht den Output auf den ich gehofft habe:</p>
<p>Hier mal das Programm:</p>
<pre><code class="language-cpp">uint8_t testState=0x00000000;
int testShifter=0x1;
testState=(testState or testShifter);
for (int i=0;i&lt;8;i++)
{
std::cout &lt;&lt; (testShifter &amp; testState) &lt;&lt; &quot; &quot;;
testShifter &lt;&lt;=1;
}
std::cout &lt;&lt; std::endl;
testShifter=0x1;
testShifter &lt;&lt;= 3; // Jetzt will ich das dritte Bit verändern
testState=(testState or testShifter);
testShifter=0x1;
for (int i=0;i&lt;8;i++)
{
testShifter &lt;&lt;=1;
std::cout &lt;&lt; (testShifter &amp; testState) &lt;&lt; &quot; &quot;;
}
std::cout &lt;&lt; std::endl;
</code></pre>
<p>Der Output auf den ich gehofft habe wär das hier:</p>
<pre><code>1 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0
</code></pre>
<p>aber gekriegt hab ich nur den:</p>
<pre><code>1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
</code></pre>
<p>Habs dann auch mit &quot;|&quot; statt &quot;or&quot; versucht, aber das hat nur das hier ausgeworfen:</p>
<pre><code>1 0 0 0 0 0 0 0 
0 0 8 0 0 0 0 0
</code></pre>
<p>Hat wer Vorschläge, wie ich meinen WunschOutput doch noch kriegen könnte? <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="😉"
    /><br />
Würd mich freuen / mir echt weiter helfen!</p>
<p>Mfg, Lotoreo!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686016</guid><dc:creator><![CDATA[Lotoreo]]></dc:creator><pubDate>Wed, 25 Mar 2009 19:32:14 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von Bitmasken on Wed, 25 Mar 2009 20:56:26 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>beim zweiten Durchgang erhöhst du testShifter bevor du mit dem aktuellen i testest. D.h. du testest testState von 2^1 (=2) bis 2^8 (=256), statt von 2^0 bis 2^7. Die &quot;8&quot; in der zweiten Zeile deiner Ausgabe ist also tatsächlich das Bit, dass du haben möchtest.</p>
<p>Dann als nächstes möchtest du statt der &quot;8&quot; eine &quot;1&quot; haben.<br />
Das binäre-Und liefert dir eine &quot;8&quot; weil 0x00001001 &amp; 0x00001000 = 0x00001000 = 8 ist. D.h. du brauchst an dieser Stelle ein if(testShifter&amp;testState&gt;0).</p>
<p>Dein Code sähe dann so aus:</p>
<pre><code>uint8_t testState=0x00000000;
int testShifter=0x1;
testState=(testState or testShifter);
for (int i=0;i&lt;8;i++)
{
std::cout &lt;&lt; (testShifter &amp; testState) &lt;&lt; &quot; &quot;;
testShifter &lt;&lt;=1;
}
std::cout &lt;&lt; std::endl;
testShifter=0x1;
testShifter &lt;&lt;= 3; // Jetzt will ich das dritte Bit verändern
testState=(testState or testShifter);
testShifter=0x1;
for (int i=0;i&lt;8;i++)
{

std::cout &lt;&lt; ((testShifter &amp; testState)?1:0) &lt;&lt; &quot; &quot;; 
/*der tertiäre Operator a?b:c ersetzt ein if(a){b;}else{c;} Konstrukt*/
testShifter &lt;&lt;=1;
}
std::cout &lt;&lt; std::endl;
</code></pre>
<p>Viele Grüße, Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686059</guid><dc:creator><![CDATA[Gast_Chris]]></dc:creator><pubDate>Wed, 25 Mar 2009 20:56:26 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von Bitmasken on Wed, 25 Mar 2009 21:34:24 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>
<p>Das mit dem vertauschten cout / shift hat mir mal wieder gezeigt, wie lange man an einem Idiotenfehler sitzen kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Hab mich so gewundert, wieso sogar die erste 1 verschwunden ist.</p>
<p>Hm, die einzige Möglichkeit die ich sehe, das 8 in eine 1 zu verwandeln, ist die erste 1 zu setzen, den Wert 3 mal zu shiften, und dann die zweite setzen. Falls wer auf die Schnelle was besseres weiß, wär ich da dankbar! Sonst bau ichs eben so ein <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>Danke jedenfalls (!),<br />
mfg, Florian!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686068</guid><dc:creator><![CDATA[Lotoreo]]></dc:creator><pubDate>Wed, 25 Mar 2009 21:34:24 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von Bitmasken on Wed, 25 Mar 2009 21:38:55 GMT]]></title><description><![CDATA[<p>Verdammt, kann mich als Gast nicht editieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Wirklich Zeit, mich hier anzumelden. Bis dahin aber Sorry wegen dem Doppelpost!</p>
<pre><code class="language-cpp">uint8_t testState=0x0;
int testShifter=0x1;
testState|= testShifter;
testState&lt;&lt;=3;
testState|= testShifter;
testShifter=0x1;
</code></pre>
<p>macht leider auch eine 8 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Hat da noch wer einen Tipp für mich, wie ich das zu einer 1 mach?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686071</guid><dc:creator><![CDATA[Lotoreo]]></dc:creator><pubDate>Wed, 25 Mar 2009 21:38:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von Bitmasken on Wed, 25 Mar 2009 21:47:39 GMT]]></title><description><![CDATA[<p>Du meinst:</p>
<pre><code>testState=0x00001001;
for(i=0;i&lt;8;i++){
    test=testState&gt;&gt;i;
    std::cout&lt;&lt; (test&amp;1) &lt;&lt;&quot; &quot;;
}
std::cout&lt;&lt;std::endl;
</code></pre>
<p>Ginge natürlich auch - ist vielleicht sogar eleganter als mein obiger Vorschlag.</p>
<blockquote>
<p>for (int i=0;i&lt;8;i++){<br />
std::cout &lt;&lt; ((testShifter &amp; testState)?1:0) &lt;&lt; &quot; &quot;;<br />
/*der tertiäre Operator a?b:c ersetzt ein if(a){b;}else{c;} Konstrukt*/<br />
testShifter &lt;&lt;=1;<br />
}</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1686077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686077</guid><dc:creator><![CDATA[Gast_Chris]]></dc:creator><pubDate>Wed, 25 Mar 2009 21:47:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von Bitmasken on Wed, 25 Mar 2009 21:57:40 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Nein, hatte gehofft, damit den 8ter weg zu kriegen. Weil ich gedacht habe, ich kann mit 0x1 beginnen, dann drei mal shiften, dass ich 1000 habe, und dann wieder mit einem 0x1 oderverknüpfen, um 1001 statt 1008 zu erhalten. Hat aber nicht getan, wie ich es wollte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686083</guid><dc:creator><![CDATA[Lotoreo]]></dc:creator><pubDate>Wed, 25 Mar 2009 21:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verwendung von Bitmasken on Wed, 25 Mar 2009 22:20:22 GMT]]></title><description><![CDATA[<p>Sorry falls ich dich gerade falsch verstehen sollte, deine Ausgabe &quot;1 0 0 8&quot; steht in der umgekehrten Reihenfolge wie 0x1001. Nach deinem 3er shift hättest du die Ausgabe &quot;0 0 0 8&quot;. Die Oder-Verknüpfung 0x1 macht dir daraus die 1008.</p>
<p>Nochmal allgemein:<br />
cout gibt dir den <strong>Wert</strong>(!) des Bits aus (wenn es gesetzt ist), du möchtest aber nur wissen <strong>ob</strong> das Bit gesetzt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1686091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1686091</guid><dc:creator><![CDATA[Gast_Chris]]></dc:creator><pubDate>Wed, 25 Mar 2009 22:20:22 GMT</pubDate></item></channel></rss>