<?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[Binär hochzählen &#x2F; Links,Rechts schieben]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe vor folgendem Problem.<br />
Ich speichere in einem Objektarray ein Array als Attribut mit n Elementen.<br />
Vereinfacht kann man sagen:</p>
<p>obj[0] = 0,0,0<br />
obj[1] = 0,0,1<br />
obj[2] = 0,1,0<br />
obj[3] = 0,1,1<br />
...</p>
<p>Ich bin nicht so fitt in speziellen Funktionen, aber ich habe mal bei einem<br />
Freund gesehen, wie er eine Ganzzahl mit &lt;&lt; und &gt;&gt; immer Stellenweise nach rechts/links geschoben hat.<br />
Irgendwie so:</p>
<p>zahl=123;<br />
n &lt;&lt; zahl;<br />
n == 1;</p>
<p>Bin mir aber nicht mehr genau sicher.<br />
Wenn es so möglich wäre, hab ich gedacht, dass man vllt mit einer einfachen Funktion aus einer Dezimalzahl die Binärzahl machen kann, und dann diese einzelnen Bits durch schieben erhalte.</p>
<p>Oder habt ihr bessere Tipps?<br />
Der Code sollte schon recht schnell sein und dachte, dass dieses schieben sehr low Level läuft.</p>
<p>Tut mir leid wenn ich unsinnige Fragen stelle, ich bin kein Experte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hoffe jemand kann mir helfen,<br />
Viele Grüße,</p>
<p>Samuirai</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260925/binär-hochzählen-links-rechts-schieben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 22:34:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260925.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Feb 2010 20:40:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binär hochzählen &#x2F; Links,Rechts schieben on Wed, 10 Feb 2010 20:40:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich stehe vor folgendem Problem.<br />
Ich speichere in einem Objektarray ein Array als Attribut mit n Elementen.<br />
Vereinfacht kann man sagen:</p>
<p>obj[0] = 0,0,0<br />
obj[1] = 0,0,1<br />
obj[2] = 0,1,0<br />
obj[3] = 0,1,1<br />
...</p>
<p>Ich bin nicht so fitt in speziellen Funktionen, aber ich habe mal bei einem<br />
Freund gesehen, wie er eine Ganzzahl mit &lt;&lt; und &gt;&gt; immer Stellenweise nach rechts/links geschoben hat.<br />
Irgendwie so:</p>
<p>zahl=123;<br />
n &lt;&lt; zahl;<br />
n == 1;</p>
<p>Bin mir aber nicht mehr genau sicher.<br />
Wenn es so möglich wäre, hab ich gedacht, dass man vllt mit einer einfachen Funktion aus einer Dezimalzahl die Binärzahl machen kann, und dann diese einzelnen Bits durch schieben erhalte.</p>
<p>Oder habt ihr bessere Tipps?<br />
Der Code sollte schon recht schnell sein und dachte, dass dieses schieben sehr low Level läuft.</p>
<p>Tut mir leid wenn ich unsinnige Fragen stelle, ich bin kein Experte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hoffe jemand kann mir helfen,<br />
Viele Grüße,</p>
<p>Samuirai</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1853863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1853863</guid><dc:creator><![CDATA[Samuirai]]></dc:creator><pubDate>Wed, 10 Feb 2010 20:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to Binär hochzählen &#x2F; Links,Rechts schieben on Wed, 10 Feb 2010 20:50:49 GMT]]></title><description><![CDATA[<p>Samuirai schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>ich stehe vor folgendem Problem.<br />
Ich speichere in einem Objektarray ein Array als Attribut mit n Elementen.<br />
Vereinfacht kann man sagen:</p>
<p>obj[0] = 0,0,0<br />
obj[1] = 0,0,1<br />
obj[2] = 0,1,0<br />
obj[3] = 0,1,1<br />
...</p>
<p>Ich bin nicht so fitt in speziellen Funktionen, aber ich habe mal bei einem<br />
Freund gesehen, wie er eine Ganzzahl mit &lt;&lt; und &gt;&gt; immer Stellenweise nach rechts/links geschoben hat.<br />
Irgendwie so:</p>
<p>zahl=123;<br />
n &lt;&lt; zahl;<br />
n == 1;</p>
<p>Bin mir aber nicht mehr genau sicher.<br />
Wenn es so möglich wäre, hab ich gedacht, dass man vllt mit einer einfachen Funktion aus einer Dezimalzahl die Binärzahl machen kann, und dann diese einzelnen Bits durch schieben erhalte.</p>
<p>Oder habt ihr bessere Tipps?<br />
Der Code sollte schon recht schnell sein und dachte, dass dieses schieben sehr low Level läuft.</p>
<p>Tut mir leid wenn ich unsinnige Fragen stelle, ich bin kein Experte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hoffe jemand kann mir helfen,<br />
Viele Grüße,</p>
<p>Samuirai</p>
</blockquote>
<p>Durch solche Optimierungen erhältst du in der Regel keine Vorteile. Dein Compiler ist intelligent genug entsprechende Optimierungen selber vorzunehmen, falls diese tatsächlich Sinn machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1853872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1853872</guid><dc:creator><![CDATA[hjkhjk]]></dc:creator><pubDate>Wed, 10 Feb 2010 20:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to Binär hochzählen &#x2F; Links,Rechts schieben on Thu, 11 Feb 2010 13:02:28 GMT]]></title><description><![CDATA[<p>schlaue leute nehmen auch unions</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1854174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1854174</guid><dc:creator><![CDATA[dgrat]]></dc:creator><pubDate>Thu, 11 Feb 2010 13:02:28 GMT</pubDate></item><item><title><![CDATA[Reply to Binär hochzählen &#x2F; Links,Rechts schieben on Thu, 11 Feb 2010 13:15:10 GMT]]></title><description><![CDATA[<p>dgrat schrieb:</p>
<blockquote>
<p>schlaue leute nehmen auch unions</p>
</blockquote>
<p>Ganz schlaue Leute nehmen keine Unions, da das Speicherlayout von unions nicht durch den Standard vorgeschrieben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1854180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1854180</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 11 Feb 2010 13:15:10 GMT</pubDate></item><item><title><![CDATA[Reply to Binär hochzählen &#x2F; Links,Rechts schieben on Thu, 11 Feb 2010 15:32:12 GMT]]></title><description><![CDATA[<p>Vermutlich ist es schon eine Schnapsidee, sowas</p>
<pre><code class="language-cpp">obj[3] = 0,1,1
</code></pre>
<p>zu machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1854255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1854255</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 11 Feb 2010 15:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to Binär hochzählen &#x2F; Links,Rechts schieben on Thu, 11 Feb 2010 17:56:12 GMT]]></title><description><![CDATA[<p>Wenn ich dich recht erhalten habe, willst du also eine Binärzahl aus einer Dezimalzahl erhalten.<br />
Wenn du beispielsweise die Binärzahl in einem std::string speichern willst, wie wär's mit:</p>
<pre><code class="language-cpp">short y;
cin &gt;&gt; y;
std::stringstream str;
str &lt;&lt; y &amp; 8192;
str &lt;&lt; y &amp; 4096;
str &lt;&lt; y &amp; 2048;
str &lt;&lt; y &amp; 1024;
str &lt;&lt; y &amp; 512;
str &lt;&lt; y &amp; 256;
str &lt;&lt; y &amp; 128;
str &lt;&lt; y &amp; 64;
str &lt;&lt; y &amp; 32;
str &lt;&lt; y &amp; 16;
str &lt;&lt; y &amp; 8;
str &lt;&lt; y &amp; 4;
str &lt;&lt; y &amp; 2;
str &lt;&lt; y &amp; 1;
std::string binaercode = str.str()
</code></pre>
<p>(ungetestet und unschön, aber nur um das Prinzip klarzustellen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1854320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1854320</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 11 Feb 2010 17:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to Binär hochzählen &#x2F; Links,Rechts schieben on Thu, 11 Feb 2010 18:51:43 GMT]]></title><description><![CDATA[<p>Oder mit <code>std::bitset</code> :</p>
<pre><code class="language-cpp">int input; // kann selbstverständlich angepasst werden 
do
{
	std::cin.clear();
	std::cin.ignore(std::cin.rdbuf()-&gt;in_avail());
	std::cout &lt;&lt; &quot;Zahl eingeben: &quot;;
} while(!(std::cin &gt;&gt; input)); /* so lange wiederholen, bis gültige Eingabe vorliegt */
std::bitset&lt;32&gt; bits(input);
std::cout &lt;&lt; input &lt;&lt; &quot; --&gt; &quot; &lt;&lt; bits.to_string();
</code></pre>
<p><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/1854337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1854337</guid><dc:creator><![CDATA[STL-Benutzer]]></dc:creator><pubDate>Thu, 11 Feb 2010 18:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to Binär hochzählen &#x2F; Links,Rechts schieben on Thu, 11 Feb 2010 23:48:07 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>dgrat schrieb:</p>
<blockquote>
<p>schlaue leute nehmen auch unions</p>
</blockquote>
<p>Ganz schlaue Leute nehmen keine Unions, da das Speicherlayout von unions nicht durch den Standard vorgeschrieben wird.</p>
</blockquote>
<p>muss es auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1854453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1854453</guid><dc:creator><![CDATA[dgrat]]></dc:creator><pubDate>Thu, 11 Feb 2010 23:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to Binär hochzählen &#x2F; Links,Rechts schieben on Fri, 12 Feb 2010 06:18:11 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a><br />
das war nur ein vereinfachtest Beispiel. Für das was ich benötige ist es nicht wichtig wie das Objekt aussieht, wollte damit nur verdeutlichen, dass darin die Binärzahlen gespeichert werden.</p>
<p>Ich habe jetzt eine eigene Lösung gefunden:</p>
<pre><code class="language-cpp">// binaer:		Die Binaerzahl die für alle Kombinationen benötigt wird, also 0,1,2,3,... -&gt; 00,01,10,11,...
		unsigned long binaer = i;
		// bina:		Zählt in 2er Potenzen hoch indem das 1er Bit immer um eins weitergeschoben wird
		unsigned int bina = 1;
		// arr:			arr wird die Bitkombinationen enthalten: 0,0,0 / 0,0,1 / 0,1,0 / ...
		int arr[3] ={0};

		for(int j=0; j&lt;3; j++)
		{
			// Ver-UND-en um die einzelnen Bits herauszufinden. 
			// Beispiel:
			// 101 soll in arr gespeichert werden
			//   101
			// &amp; 001
			// -----
			//   001 !=0
			//
			//			bina weiterschieben 001 -&gt; 010
			//
			//   101
			// &amp; 010
			// -----
			//   000 ==0
			// ... usw
			if((binaer &amp; bina) == 0)
			{
				arr[j] = 0;
			}
			else
			{
				arr[j] = 1;
			}

			// bina weiterschieben
			bina = bina &lt;&lt; 1;
		}
</code></pre>
<p>Ich weiß nicht ob die Lösung unschön ist oder nicht, aber sie tut das was ich brauche. Ich wusste nicht, dass man in C++ Verunden und Schieben (Shift) kann.</p>
<p>Vielen Dank an Alle, die sich um eine Lösung bemüht haben <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>
<p>Viele Grüße,<br />
Samuirai</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1854481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1854481</guid><dc:creator><![CDATA[Samuirai]]></dc:creator><pubDate>Fri, 12 Feb 2010 06:18:11 GMT</pubDate></item></channel></rss>