<?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[Kann mir das mal einer übersetzen?]]></title><description><![CDATA[<p>Ich habe hier eine Funktion die ich nicht verstehe. Die Funktion setzt in einem 3D Volumen einen Punkt auf 0 bzw 1</p>
<pre><code>inline void SetVoxel( const int nX, const int nY, const int nZ, bool value) {

			if ( value ) // Set to 1
				volume3D[(nZ*m_nSizeY+ nY)*m_nElemPerRow + (nX &gt;&gt; 3)] |= (0x80 &gt;&gt; (nX &amp; 0x07));
			else		// set to 0
				volume3D[(nZ*m_nSizeY+ nY)*m_nElemPerRow + (nX &gt;&gt; 3)] &amp;= ~(0x80 &gt;&gt; (nX &amp; 0x07));
</code></pre>
<p>(Anmerkung: die funktion tut was sie soll...nur komme ich nicht dahinter WIE sie das tut. besonders der letzte teil der zeilen, also &quot;(nX &gt;&gt; 3)] |= (0x80 &gt;&gt; (nX &amp; 0x07))&quot; bzw. &quot;(nX &gt;&gt; 3)] &amp;= ~(0x80 &gt;&gt; (nX &amp; 0x07))&quot; finde ich mehr als kryptisch...irgendwas mit nem bitweisen OR und nem right shift? Hä? )</p>
<p>Kann mir das jemand mal auf 3-Klässler Niveau erklären? Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185954/kann-mir-das-mal-einer-übersetzen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 06:57:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185954.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Jul 2007 12:44:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann mir das mal einer übersetzen? on Tue, 03 Jul 2007 12:44:13 GMT]]></title><description><![CDATA[<p>Ich habe hier eine Funktion die ich nicht verstehe. Die Funktion setzt in einem 3D Volumen einen Punkt auf 0 bzw 1</p>
<pre><code>inline void SetVoxel( const int nX, const int nY, const int nZ, bool value) {

			if ( value ) // Set to 1
				volume3D[(nZ*m_nSizeY+ nY)*m_nElemPerRow + (nX &gt;&gt; 3)] |= (0x80 &gt;&gt; (nX &amp; 0x07));
			else		// set to 0
				volume3D[(nZ*m_nSizeY+ nY)*m_nElemPerRow + (nX &gt;&gt; 3)] &amp;= ~(0x80 &gt;&gt; (nX &amp; 0x07));
</code></pre>
<p>(Anmerkung: die funktion tut was sie soll...nur komme ich nicht dahinter WIE sie das tut. besonders der letzte teil der zeilen, also &quot;(nX &gt;&gt; 3)] |= (0x80 &gt;&gt; (nX &amp; 0x07))&quot; bzw. &quot;(nX &gt;&gt; 3)] &amp;= ~(0x80 &gt;&gt; (nX &amp; 0x07))&quot; finde ich mehr als kryptisch...irgendwas mit nem bitweisen OR und nem right shift? Hä? )</p>
<p>Kann mir das jemand mal auf 3-Klässler Niveau erklären? Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317484</guid><dc:creator><![CDATA[anti-alias]]></dc:creator><pubDate>Tue, 03 Jul 2007 12:44:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mir das mal einer übersetzen? on Tue, 03 Jul 2007 16:36:38 GMT]]></title><description><![CDATA[<p>Schau mal nach bitweisem &quot;Oder&quot;, &quot;Und&quot;, &quot;Nicht&quot; und nach bitshifts ...</p>
<p>gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317633</guid><dc:creator><![CDATA[megaweber]]></dc:creator><pubDate>Tue, 03 Jul 2007 16:36:38 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mir das mal einer übersetzen? on Tue, 03 Jul 2007 16:58:08 GMT]]></title><description><![CDATA[<p>Moin moin !</p>
<p>Es hilft dem Verständnis, wenn man sich solche Ausdrücke in binärer Form auf<br />
ein Blatt Papier schreibt und in Teilausdrücke zerlegt.</p>
<p>Vom hexadezimalen ins binäre ist es relativ einfach:<br />
0xFF ist z.B. 1111 1111<br />
0xA0 ist z.B. 1010 0000<br />
0x73 ist z.B. 0111 0011<br />
usw.<br />
Aber da 'erzähle' ich dir bestimmt nix neues.</p>
<p>Here we go:</p>
<p>( nX &amp; 0x07 )<br />
- abhängig von nX, kann der Klammerausdruck Werte von 0 bis 7 annehmen.</p>
<p>0x80 &gt;&gt;<br />
- 0x80 ist dezimal 128. Die Zahl 128 wird also 0 bis 7 mal nach rechts<br />
geshiftet.</p>
<p>Damit kann also der Ausdruck 0x80 &gt;&gt; ( nX &amp; 0x07 ) acht verschiedene<br />
Werte annehmen:<br />
128, 64, 32, 16, 8, 4, 2, 1, je nachdem wie oft nach rechts geshiftet wird.</p>
<p>Das Maximum dieser 8 Werte ist also: 128 dezimal und binär 10000000<br />
Und das Minimum ist: 1 dezimal und binär 00000001</p>
<p>~(0x80 &gt;&gt; (nX &amp; 0x07))<br />
Die Tilde vor der Klammer ist der bitweise Negationsoperator.<br />
Negiertes Maximum: 01111111 binär und dezimal 127<br />
Negiertes Minimum: 11111110 binär und dezimal 254</p>
<p>Die übrigen 6 Werte kannst du dir selber denken, hinschreiben, was auch<br />
immer. ( oder es auch bleiben lassen <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>
<p>Damit kann also der Kram hier: ~(0x80 &gt;&gt; (nX &amp; 0x07))<br />
Werte von 127 dez bis 254 dez annehmen.</p>
<p>|= ist eine bitweise Oderverknüpfung und &amp;= eine bitweise Undverknüpfung.<br />
Was diese beiden Verknüpfungen machen ist klar oder ?</p>
<p>Vielleicht könnte man noch erwähnen, das der Ausdruck (nX &gt;&gt; 3) Null<br />
werden kann, nämlich dann wenn gilt: ( nX &lt; 8 &amp;&amp; nX &gt; 0 )</p>
<p>Das volume3D-Array wird also abhängig von den übergebenen Parametern<br />
adressiert und der so adressierte Wert bedingt durch den Parameter value entsprechend Verknüpft, wodurch<br />
sich der adressierte Wert ändert. <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>
<p>Aber so genau wolltest du das sowieso nicht wissen oder ? <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>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317644</guid><dc:creator><![CDATA[proggingmania]]></dc:creator><pubDate>Tue, 03 Jul 2007 16:58:08 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mir das mal einer übersetzen? on Tue, 03 Jul 2007 17:20:53 GMT]]></title><description><![CDATA[<p>doch... so genau wollt ichs wissen. 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/1317655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317655</guid><dc:creator><![CDATA[antialias]]></dc:creator><pubDate>Tue, 03 Jul 2007 17:20:53 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mir das mal einer übersetzen? on Tue, 03 Jul 2007 18:23:03 GMT]]></title><description><![CDATA[<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/1317689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317689</guid><dc:creator><![CDATA[proggingmania]]></dc:creator><pubDate>Tue, 03 Jul 2007 18:23:03 GMT</pubDate></item><item><title><![CDATA[Reply to Kann mir das mal einer übersetzen? on Tue, 03 Jul 2007 22:07:30 GMT]]></title><description><![CDATA[<p><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="👍"
    /> <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>Da haste dir aber ein bissl mehr Mühe mit der Erklärung gegeben als ich <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/1317804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317804</guid><dc:creator><![CDATA[megaweber]]></dc:creator><pubDate>Tue, 03 Jul 2007 22:07:30 GMT</pubDate></item></channel></rss>