<?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[Shift (kompletter Umlauf)]]></title><description><![CDATA[<p>Ich habe ein kleineres Problem und zwar möchte ich einen Linksshift(Rechts-) für ein Int durchführen und das jeweils rausfallende Bit am anderen Ende wieder einfügen. Allerdings wüßte ich nicht, wie ich das höchste(niedrigste) Bit direkt auslesen kann.</p>
<p>Hatte daher gestern mal ein wenig rumprobiert.</p>
<p>1. Getestet, wann Zahl umkippt, d.h. negativ wird, dadurch habe ich die höchste Bitstelle gefunden (notwendig, da imo auf unterschiedlichen System ein Int unterschiedliche Dimensionen hat)<br />
2. Die Zahl zerlegt und als bool feld[] gespeichert<br />
3. Wieder zusammengesetzt, d.h. der Shift und dann aufaddieren.</p>
<p>-&gt; Hat soweit auch geklappt, jedenfalls für positive Zahlen, aus einer -1 hat er komischerweise maxint gemacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Daher bin ich wohl auf Eure Hilfe angewiesen, denn sonderlich schnell wird mein Code nicht sein, bei 3 for schleifen <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/topic/134163/shift-kompletter-umlauf</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 08:36:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/134163.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Jan 2006 06:45:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Shift (kompletter Umlauf) on Tue, 24 Jan 2006 06:45:43 GMT]]></title><description><![CDATA[<p>Ich habe ein kleineres Problem und zwar möchte ich einen Linksshift(Rechts-) für ein Int durchführen und das jeweils rausfallende Bit am anderen Ende wieder einfügen. Allerdings wüßte ich nicht, wie ich das höchste(niedrigste) Bit direkt auslesen kann.</p>
<p>Hatte daher gestern mal ein wenig rumprobiert.</p>
<p>1. Getestet, wann Zahl umkippt, d.h. negativ wird, dadurch habe ich die höchste Bitstelle gefunden (notwendig, da imo auf unterschiedlichen System ein Int unterschiedliche Dimensionen hat)<br />
2. Die Zahl zerlegt und als bool feld[] gespeichert<br />
3. Wieder zusammengesetzt, d.h. der Shift und dann aufaddieren.</p>
<p>-&gt; Hat soweit auch geklappt, jedenfalls für positive Zahlen, aus einer -1 hat er komischerweise maxint gemacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Daher bin ich wohl auf Eure Hilfe angewiesen, denn sonderlich schnell wird mein Code nicht sein, bei 3 for schleifen <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/974600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974600</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Tue, 24 Jan 2006 06:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to Shift (kompletter Umlauf) on Tue, 24 Jan 2006 06:59:06 GMT]]></title><description><![CDATA[<p>du willst rotieren.</p>
<p>dazu musst du die eigentlichen daten shiften und dann die selben nochmal geshiftet an die andere seite dran-OR-en.</p>
<p>#define ROT(val, n) ( ((val) &lt;&lt; (n)) | ((val) &gt;&gt; (32 - (n))) )<br />
wenn du auf 32 bit hantierst</p>
<p>( aus ergoogeltem <a href="http://cvs.gnome.org/viewcvs/evolution-exchange/xntlm/xntlm-md4.c?rev=1.2" rel="nofollow">http://cvs.gnome.org/viewcvs/evolution-exchange/xntlm/xntlm-md4.c?rev=1.2</a> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974610</guid><dc:creator><![CDATA[c.rackwitz]]></dc:creator><pubDate>Tue, 24 Jan 2006 06:59:06 GMT</pubDate></item><item><title><![CDATA[Reply to Shift (kompletter Umlauf) on Tue, 24 Jan 2006 07:29:59 GMT]]></title><description><![CDATA[<p>Danke.</p>
<p>Gibt es eine andere Möglichkeit die Größe eines Int zu ermitteln, als der von mir benutzte Ansatz?</p>
<pre><code class="language-cpp">int maxint)void)
{
  int zahl = 0;
  while (zahl &gt;= 0)
  { 
    i++;
    zahl = (int)pow(2, i);
  }
  return (i + 1);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/974629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974629</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Tue, 24 Jan 2006 07:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to Shift (kompletter Umlauf) on Tue, 24 Jan 2006 07:38:02 GMT]]></title><description><![CDATA[<p>groesse:</p>
<p>#include &lt;limits.h&gt;<br />
sizeof(int) * CHAR_BIT</p>
<p>bist du des wahnsinns, pow() fuer ganzzahlen zu vergewaltigen??? fuer sowas nimmt man shifts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974638</guid><dc:creator><![CDATA[c.rackwitz]]></dc:creator><pubDate>Tue, 24 Jan 2006 07:38:02 GMT</pubDate></item><item><title><![CDATA[Reply to Shift (kompletter Umlauf) on Tue, 24 Jan 2006 07:37:18 GMT]]></title><description><![CDATA[<p>ja, indem du in die Header &lt;climits&gt; (C-Version) oder &lt;limits&gt; (C++-Version) schaust:</p>
<pre><code class="language-cpp">#include &lt;climits&gt;
const int isize=CHAR_BITS*sizeof(int);
</code></pre>
<pre><code class="language-cpp">#include &lt;limits&gt;
const int isize=std::numeric_limits&lt;int&gt;::digits;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/974639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974639</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 24 Jan 2006 07:37:18 GMT</pubDate></item><item><title><![CDATA[Reply to Shift (kompletter Umlauf) on Tue, 24 Jan 2006 07:46:01 GMT]]></title><description><![CDATA[<p>c.rackwitz schrieb:</p>
<blockquote>
<p>bist du des wahnsinns, pow() fuer ganzzahlen zu vergewaltigen??? fuer sowas nimmt man shifts.</p>
</blockquote>
<p>Mhh jetzt, wo Du es sagst, fällt mir auch wieder ein, dass ein Linksshift das selbe bewirkt... <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/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Danke Euch beiden jedenfalls <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/974647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974647</guid><dc:creator><![CDATA[UNeverNo]]></dc:creator><pubDate>Tue, 24 Jan 2006 07:46:01 GMT</pubDate></item><item><title><![CDATA[Reply to Shift (kompletter Umlauf) on Tue, 24 Jan 2006 13:47:41 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6766">@UNeverNo</a></p>
<p>Noch 2 Tipps:<br />
Das ROT Makro von c.rackwitz solltest du besser als inline Funktion implementieren. Und negative Werte zu shiften ist implementationsspezifisch. Deshalb bekommst du auch so &quot;komische&quot; Ergebnisse. Viele Compiler werden sowas wohl arithmetisch erledigen, aber auch das ist nicht sicher. Shifte deshalb nur unsigned Werte. Und hast du einen signed Wert als Ursprung, dann wandle den vorher zu unsigned und danach wieder zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974963</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 24 Jan 2006 13:47:41 GMT</pubDate></item></channel></rss>