<?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[Bitweise rechnen (a&amp;amp;)]]></title><description><![CDATA[<p>Es geht um folgenden Quellcode</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class myClass
{
private:
	long int zahl;
public:
	myClass( long n)
		: zahl(n)
	{
	}
	double algo ()
	{
		double x=2,y=1,z=1;
		long a=1;
		while (a&lt;zahl)
		{
			z*=(x/y);
			if(a&amp;1)
				y+=2.0;
			else
				x +=2.0;
			a++;
			cout &lt;&lt; z*2.0 &lt;&lt; endl;
		}
		return z;
	}
};

int main()
{
	myClass * cPtr;
	cPtr = new myClass (11);
	cPtr-&gt;algo();
}
</code></pre>
<p>Die unübersichtliche Formatierung ist wohl so gewollt (Klausuraufgabe).<br />
~edit von volkard: Aber trotzdem hättest Du hier übersichtlich formatieren müssen. Du tätest das ja auch zum Lösen selber tun machen.~</p>
<p>Die Ausgabe die wir als Lösung angeben sollen lautet:<br />
1. 4<br />
2. 2,666666<br />
3. 3,555555<br />
.....<br />
10. 3,00218</p>
<p>Ich frag mich nur wieso^^ klar ist das die funktion double algo () mit dem wert 11 &quot;gefüttert&quot; wird und ausgeführt wird. also ist zahl 11. dadurch erhält man die 10 ausgaben da die bedingung &quot;solang a&lt;10 a++&quot; lautet.<br />
z = z*(x/y) kein problem abber jetzt kommt if (a&amp;1) usw.<br />
ich verstehe nicht was da passiert -.-<br />
mein ansatz ist das die zahl als binarzähl geschrieben wird und dann bitweise addiert wird. das heißt wenn beide binärzahlen an der gleichen stelle eine 1 haben ist die summe auch 1 ansnsten 0. aber wie genau erfolgt die verrechnung...<br />
hoffe jemand kann mir es kurz erläutern <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/topic/297744/bitweise-rechnen-a-amp</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 08:10:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297744.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Jan 2012 19:19:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitweise rechnen (a&amp;amp;) on Thu, 05 Jan 2012 21:05:08 GMT]]></title><description><![CDATA[<p>Es geht um folgenden Quellcode</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class myClass
{
private:
	long int zahl;
public:
	myClass( long n)
		: zahl(n)
	{
	}
	double algo ()
	{
		double x=2,y=1,z=1;
		long a=1;
		while (a&lt;zahl)
		{
			z*=(x/y);
			if(a&amp;1)
				y+=2.0;
			else
				x +=2.0;
			a++;
			cout &lt;&lt; z*2.0 &lt;&lt; endl;
		}
		return z;
	}
};

int main()
{
	myClass * cPtr;
	cPtr = new myClass (11);
	cPtr-&gt;algo();
}
</code></pre>
<p>Die unübersichtliche Formatierung ist wohl so gewollt (Klausuraufgabe).<br />
~edit von volkard: Aber trotzdem hättest Du hier übersichtlich formatieren müssen. Du tätest das ja auch zum Lösen selber tun machen.~</p>
<p>Die Ausgabe die wir als Lösung angeben sollen lautet:<br />
1. 4<br />
2. 2,666666<br />
3. 3,555555<br />
.....<br />
10. 3,00218</p>
<p>Ich frag mich nur wieso^^ klar ist das die funktion double algo () mit dem wert 11 &quot;gefüttert&quot; wird und ausgeführt wird. also ist zahl 11. dadurch erhält man die 10 ausgaben da die bedingung &quot;solang a&lt;10 a++&quot; lautet.<br />
z = z*(x/y) kein problem abber jetzt kommt if (a&amp;1) usw.<br />
ich verstehe nicht was da passiert -.-<br />
mein ansatz ist das die zahl als binarzähl geschrieben wird und dann bitweise addiert wird. das heißt wenn beide binärzahlen an der gleichen stelle eine 1 haben ist die summe auch 1 ansnsten 0. aber wie genau erfolgt die verrechnung...<br />
hoffe jemand kann mir es kurz erläutern <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/2164273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164273</guid><dc:creator><![CDATA[Juleian*]]></dc:creator><pubDate>Thu, 05 Jan 2012 21:05:08 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweise rechnen (a&amp;amp;) on Thu, 05 Jan 2012 19:30:22 GMT]]></title><description><![CDATA[<p>Hilft evtl. schon (Pseudocode)</p>
<pre><code class="language-cpp">if a ist ungerade
    y+=2.0; 
else if a ist gerade
    x +=2.0;
</code></pre>
<p>Bitweises And und 1 (a &amp; 1) überprüft ja nur, ob das LSB gesetzt ist oder nicht, anders geschrieben:</p>
<pre><code class="language-cpp">if(!(a % 2 == 0))
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2164276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164276</guid><dc:creator><![CDATA[Thorgrim]]></dc:creator><pubDate>Thu, 05 Jan 2012 19:30:22 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweise rechnen (a&amp;amp;) on Thu, 05 Jan 2012 20:44:26 GMT]]></title><description><![CDATA[<p>kenn mich mit bitweise nich so gut aus. was ist mit lsb gemeint?<br />
was genau hat &quot;y+=2.0; else x +=2.0;&quot; für auswirkungen auf die ausgabe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164305</guid><dc:creator><![CDATA[Juleian*]]></dc:creator><pubDate>Thu, 05 Jan 2012 20:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweise rechnen (a&amp;amp;) on Thu, 05 Jan 2012 21:02:40 GMT]]></title><description><![CDATA[<p>Juleian* schrieb:</p>
<blockquote>
<p>kenn mich mit bitweise nich so gut aus. was ist mit lsb gemeint?</p>
</blockquote>
<p><a href="http://en.wikipedia.org/wiki/Least_significant_bit" rel="nofollow">LSB</a></p>
<p>Juleian* schrieb:</p>
<blockquote>
<p>was genau hat &quot;y+=2.0; else x +=2.0;&quot; für auswirkungen auf die ausgabe?</p>
</blockquote>
<p>Äh, etwa hier</p>
<pre><code class="language-cpp">z*=(x/y);
cout &lt;&lt; z*2.0 &lt;&lt; endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2164310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164310</guid><dc:creator><![CDATA[Thorgrim]]></dc:creator><pubDate>Thu, 05 Jan 2012 21:02:40 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweise rechnen (a&amp;amp;) on Thu, 05 Jan 2012 21:08:01 GMT]]></title><description><![CDATA[<p>nun gut aber dann wär doch beim ertsen durchlauf die ausgabe so:<br />
a=1 also ungerade, also gilt y= y+2 also ist y 3.<br />
somit gilt z= z*(x/y) also z= 1*(2/3)--&gt; z =0,6666666666...<br />
cout z*2.0 ---&gt; somit müsste doch die ausgabe 1,66666666 lauten.<br />
der compiler gibt aber 4 aus. ich glaub ich versteh da was falsch 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>
]]></description><link>https://www.c-plusplus.net/forum/post/2164311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164311</guid><dc:creator><![CDATA[Juleian*]]></dc:creator><pubDate>Thu, 05 Jan 2012 21:08:01 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweise rechnen (a&amp;amp;) on Thu, 05 Jan 2012 21:10:39 GMT]]></title><description><![CDATA[<p>ich meine 1,2222222 <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/2164312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164312</guid><dc:creator><![CDATA[Juleian*]]></dc:creator><pubDate>Thu, 05 Jan 2012 21:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to Bitweise rechnen (a&amp;amp;) on Thu, 05 Jan 2012 21:34:24 GMT]]></title><description><![CDATA[<p>Juleian* schrieb:</p>
<blockquote>
<p>nun gut aber dann wär doch beim ertsen durchlauf die ausgabe so:<br />
a=1 also ungerade, also gilt y= y+2 also ist y 3.<br />
somit gilt z= z*(x/y) also z= 1*(2/3)--&gt; z =0,6666666666...</p>
</blockquote>
<p>Stimmt soweit. Allerdings hast du den nullten Durchlauf vergessen. Denn z wird bereits vor dem von dir angeschauten &quot;ertsen&quot; Durchlauf neu gesetzt auf z=2/1=2. Daher die Ausgabe 4.<br />
Damit wäre beim zweiten Durchlauf z=2*(2/3) (die 2/3 hast du ja schön ausgerechnet) und z*2 wäre 8/3=2+2/3=2,666666.<br />
Stimmt doch alles.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164319</guid><dc:creator><![CDATA[formatter]]></dc:creator><pubDate>Thu, 05 Jan 2012 21:34:24 GMT</pubDate></item></channel></rss>