<?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[Test auf 2er Potenz-funktion?]]></title><description><![CDATA[<p>hi leute,</p>
<p>ich habe ein problem.<br />
ich habe eine funktion geschrieben der ein integer wert übergeben wird.<br />
die funktion soll nun einen array anlegen dessen anzahl der elemente gleich dem logarithmus zur basis 2 des integer werts ist.<br />
also zb wenn ich 9 übergebe,hat der array 3 elemente ,da der logarithmus= ca 3,irgendwas.(das ergebnis ist ein double und ich runde mit floor() )<br />
wenn ich nun 8 übergebe hat der array leider nur 2 elemente da der wert des logarithmus wohl so circa 3 - 10^-15 ist^^<br />
wie könnte eine funktion lauten die mir exakt sagt ob eine ganze zahl eine 2er potenz ist.<br />
soll ich immer wieder durch 2 teilen bis irgendwann 1 rauskommt?<br />
ich hoffe man versteht was ich meine^^<br />
liebe grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207011/test-auf-2er-potenz-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 21:06:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207011.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 02 Mar 2008 19:49:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Sun, 02 Mar 2008 19:49:57 GMT]]></title><description><![CDATA[<p>hi leute,</p>
<p>ich habe ein problem.<br />
ich habe eine funktion geschrieben der ein integer wert übergeben wird.<br />
die funktion soll nun einen array anlegen dessen anzahl der elemente gleich dem logarithmus zur basis 2 des integer werts ist.<br />
also zb wenn ich 9 übergebe,hat der array 3 elemente ,da der logarithmus= ca 3,irgendwas.(das ergebnis ist ein double und ich runde mit floor() )<br />
wenn ich nun 8 übergebe hat der array leider nur 2 elemente da der wert des logarithmus wohl so circa 3 - 10^-15 ist^^<br />
wie könnte eine funktion lauten die mir exakt sagt ob eine ganze zahl eine 2er potenz ist.<br />
soll ich immer wieder durch 2 teilen bis irgendwann 1 rauskommt?<br />
ich hoffe man versteht was ich meine^^<br />
liebe grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466880</guid><dc:creator><![CDATA[P3nnyw1s3]]></dc:creator><pubDate>Sun, 02 Mar 2008 19:49:57 GMT</pubDate></item><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Sun, 02 Mar 2008 19:54:26 GMT]]></title><description><![CDATA[<p>P3nnyw1s3 schrieb:</p>
<blockquote>
<p>soll ich immer wieder durch 2 teilen bis irgendwann 1 rauskommt?</p>
</blockquote>
<p>Ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466886</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 02 Mar 2008 19:54:26 GMT</pubDate></item><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Sun, 02 Mar 2008 20:00:24 GMT]]></title><description><![CDATA[<p>hm was sollt ich am liebsten als abschätzung nehmen wie oft ich das machen muss,oder soll ich ne while schleife schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466897</guid><dc:creator><![CDATA[P3nnyw1s3]]></dc:creator><pubDate>Sun, 02 Mar 2008 20:00:24 GMT</pubDate></item><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Sun, 02 Mar 2008 20:05:39 GMT]]></title><description><![CDATA[<p>Auf die schnelle bei Google gefunden:</p>
<p><a href="http://www.cprogramming.com/snippets/show.php?tip=10&amp;count=30&amp;page=0" rel="nofollow">http://www.cprogramming.com/snippets/show.php?tip=10&amp;count=30&amp;page=0</a></p>
<p>(Keine Garantie :D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466904</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Sun, 02 Mar 2008 20:05:39 GMT</pubDate></item><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Sun, 02 Mar 2008 20:10:11 GMT]]></title><description><![CDATA[<p>hm return !((x-1) &amp; (x));</p>
<p>versteh ich nicht^^<br />
also wenn eine zahl eine 2er potenz ist dann ist ja der binärcode der zahl eine 1 mit einer entsprechenenden anzahl an 0en dahinter.<br />
das steht doch da auch irgendwie oder?^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466909</guid><dc:creator><![CDATA[P3nnyw1s3]]></dc:creator><pubDate>Sun, 02 Mar 2008 20:10:11 GMT</pubDate></item><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Sun, 02 Mar 2008 20:26:37 GMT]]></title><description><![CDATA[<pre><code>!( ( 100 - 001 ) &amp; 100 )
!(         011   &amp; 100 )
!                  000
=                 true

!( ( 101 - 001 ) &amp; 101 )
!(         100   &amp; 101 )
!                  100
=                 false
</code></pre>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466922</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 02 Mar 2008 20:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Sun, 02 Mar 2008 20:33:19 GMT]]></title><description><![CDATA[<p>ah danke,der rückgabetyp ist ja int,wie geht das dann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1466927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1466927</guid><dc:creator><![CDATA[P3nnyw1s3]]></dc:creator><pubDate>Sun, 02 Mar 2008 20:33:19 GMT</pubDate></item><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Sun, 02 Mar 2008 22:34:54 GMT]]></title><description><![CDATA[<p>Der Logarithmus von 8 zur Basis 2 ist genau 3. Kann aber durchaus sein, dass du da durch Ungenauigkeiten so etwas wie 2.9999999999 geliefert bekommst. Du kannst also entweder normal runden (+0.5 vor floor()) oder nur einen sehr kleinen Wert addieren (z.B. +0.00001).<br />
Die folgende Funktion wurde hier auch vor nicht allzu langer Zeit gepostet. Sie dürfte auch recht schnell sein (falls es darauf ankommt).</p>
<pre><code class="language-cpp">int log2 (int v)
{
    static const int MultiplyDeBruijnBitPosition[32] =
    {
          0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
            31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
    };

    v |= v &gt;&gt; 1; // first round down to power of 2
    v |= v &gt;&gt; 2;
    v |= v &gt;&gt; 4;
    v |= v &gt;&gt; 8;
    v |= v &gt;&gt; 16;
    v = (v &gt;&gt; 1) + 1;

    return MultiplyDeBruijnBitPosition[(v * 0x077CB531UL) &gt;&gt; 27];
}
</code></pre>
<p>P3nnyw1s3 schrieb:</p>
<blockquote>
<p>ah danke,der rückgabetyp ist ja int,wie geht das dann?</p>
</blockquote>
<p>Was für ein Rückgabetyp?<br />
Der Ausdruck !((x-1) &amp; (x)) gibt dir ein bool-Wert, der angibt, ob x eine Potenz von 2 ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1467004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1467004</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Sun, 02 Mar 2008 22:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Sun, 02 Mar 2008 22:38:28 GMT]]></title><description><![CDATA[<p><a href="http://www.cprogramming.com/snippets/show.php?tip=10&amp;count=30&amp;page=0" rel="nofollow">http://www.cprogramming.com/snippets/show.php?tip=10&amp;count=30&amp;page=0</a> schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int powerOfTwo( unsigned int x )
{
    return !((x-1) &amp; x);
}
</code></pre>
</blockquote>
<p>Implizite Umwandlung nach <code>bool</code> durch den <code>!</code> -Operator und dann nach <code>int</code> . Alles was nicht <code>0</code> ist, ist <code>true</code></p>
<p>greetz, Swordfish</p>
<p>PS: Sauber wäre natürlich, einen <code>bool</code> zurückzugeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1467011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1467011</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 02 Mar 2008 22:38:28 GMT</pubDate></item><item><title><![CDATA[Reply to Test auf 2er Potenz-funktion? on Mon, 03 Mar 2008 17:40:34 GMT]]></title><description><![CDATA[<p>Hier eine Template-Funktion zum Berechnen des 2-Logarithmuses einer Ganzzahl:</p>
<pre><code class="language-cpp">template&lt;typename T&gt; T lg(T x)
{
	T n = 0;
	for( ; x &gt; 1; x &gt;&gt;= 1)
		++n;
	return n;
}
</code></pre>
<p>Dann brauchst du nicht mit Gleitkommazahlen rechnen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1467471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1467471</guid><dc:creator><![CDATA[~lg]]></dc:creator><pubDate>Mon, 03 Mar 2008 17:40:34 GMT</pubDate></item></channel></rss>