<?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[schnell rauskriegen, ob double-wert gerade&#x2F;ungerade ist]]></title><description><![CDATA[<p>angenommen, wir haben eine double-zahl x, von der wir wissen, dass sie eine ganze zahl ist (z.b. 0.0, 1.0, 4.0, 8.0 oder 19.0). kennt ihr einen trick, wie man rauskriegen kann, ob diese zahl gerade oder ungerade ist, ohne dass man die zahl zunächst nach int casten muss?<br />
irgendwelche bit-spielereien?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/201344/schnell-rauskriegen-ob-double-wert-gerade-ungerade-ist</link><generator>RSS for Node</generator><lastBuildDate>Mon, 29 Jun 2026 06:13:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/201344.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Dec 2007 16:10:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to schnell rauskriegen, ob double-wert gerade&#x2F;ungerade ist on Fri, 28 Dec 2007 16:10:03 GMT]]></title><description><![CDATA[<p>angenommen, wir haben eine double-zahl x, von der wir wissen, dass sie eine ganze zahl ist (z.b. 0.0, 1.0, 4.0, 8.0 oder 19.0). kennt ihr einen trick, wie man rauskriegen kann, ob diese zahl gerade oder ungerade ist, ohne dass man die zahl zunächst nach int casten muss?<br />
irgendwelche bit-spielereien?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427285</guid><dc:creator><![CDATA[Gleitkommazahl]]></dc:creator><pubDate>Fri, 28 Dec 2007 16:10:03 GMT</pubDate></item><item><title><![CDATA[Reply to schnell rauskriegen, ob double-wert gerade&#x2F;ungerade ist on Fri, 28 Dec 2007 17:10:15 GMT]]></title><description><![CDATA[<p>ohne cast? weiss ich nicht, könnte aber sein dass es geht. ansonsten: <em>ungerade = (int)x&amp;1;</em><br />
<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/1427307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427307</guid><dc:creator><![CDATA[bitfummel-freak]]></dc:creator><pubDate>Fri, 28 Dec 2007 17:10:15 GMT</pubDate></item><item><title><![CDATA[Reply to schnell rauskriegen, ob double-wert gerade&#x2F;ungerade ist on Fri, 28 Dec 2007 17:16:14 GMT]]></title><description><![CDATA[<p>if(zahl%2==0) {<br />
cout&lt;&lt;&quot;Gerade. ;D&quot;;<br />
}</p>
<p>Du testest damit einfach, ob bei der Division durch zwei ein rest ensetht oder eben nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427312</guid><dc:creator><![CDATA[makkurona]]></dc:creator><pubDate>Fri, 28 Dec 2007 17:16:14 GMT</pubDate></item><item><title><![CDATA[Reply to schnell rauskriegen, ob double-wert gerade&#x2F;ungerade ist on Fri, 28 Dec 2007 17:28:33 GMT]]></title><description><![CDATA[<p>schau dir halt das format an wie solche zahlen binär dargestellt werden, dann kannst du schauen welches bit 1 sein muss, damit es ungerade ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427318</guid><dc:creator><![CDATA[auauauou]]></dc:creator><pubDate>Fri, 28 Dec 2007 17:28:33 GMT</pubDate></item><item><title><![CDATA[Reply to schnell rauskriegen, ob double-wert gerade&#x2F;ungerade ist on Fri, 28 Dec 2007 17:39:04 GMT]]></title><description><![CDATA[<p>So vielleicht:</p>
<pre><code class="language-cpp">gerade=x*0.5-floor(x*0.5)&lt;0.000001;
</code></pre>
<p>Aber wenn es nicht ums Prinzip geht, erscheint mir das Casten sinnvoller.</p>
<p>auauauou schrieb:</p>
<blockquote>
<p>schau dir halt das format an wie solche zahlen binär dargestellt werden, dann kannst du schauen welches bit 1 sein muss, damit es ungerade ist.</p>
</blockquote>
<p>Gibt es bei floats und doubles überhaupt ein Bit, dass direkt oder indirekt angibt, ob die Zahl gerade oder ungerade ist? Für Negativität gibt es das wohl. Aber so genau kenn ich die interne Darstellung nicht, mag also sein.</p>
<p>makkurona schrieb:</p>
<blockquote>
<p>if(zahl%2==0) {<br />
cout&lt;&lt;&quot;Gerade. ;D&quot;;<br />
}</p>
<p>Du testest damit einfach, ob bei der Division durch zwei ein rest ensetht oder eben nicht.</p>
</blockquote>
<p>Wobei das aber nur mit Ganzzahlen (also int &amp; Co.) geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1427322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427322</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Fri, 28 Dec 2007 17:39:04 GMT</pubDate></item><item><title><![CDATA[Reply to schnell rauskriegen, ob double-wert gerade&#x2F;ungerade ist on Fri, 28 Dec 2007 17:56:18 GMT]]></title><description><![CDATA[<p>oder so:</p>
<pre><code>int double_is_odd (double d)
{
  d += 6755399441055744.0;
  return *(int*)&amp;d &amp; 1;
}
</code></pre>
<p>die funktion spuckt 'ne 1 aus, wenn der input ungerade ist.<br />
der pointer-cast ist nur dazu da, damit das &amp; funktioniert und im maschinencode nicht mehr vorhanden. es ist <em>kein</em> aufwendiger double-to-int cast.<br />
<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/1427330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1427330</guid><dc:creator><![CDATA[bitfrickel-freak]]></dc:creator><pubDate>Fri, 28 Dec 2007 17:56:18 GMT</pubDate></item></channel></rss>