<?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[Bitverarbeitung&#x2F;Maske]]></title><description><![CDATA[<p>Hallo, ich habe hier eine Aufgabe und verstehe die Lösung nicht! Wer kann helfen?</p>
<p>Aufgabe: Erstellen Sie ein Programm, das nach Eingabe zweier Zahlen das Produkt ermittelt und ausgibt! Das Produkt soll über Bitverarbeitung (Verschieben und Addieren, siehe Vorlesung) ermittelt werden.</p>
<p>Überall wo &quot;???&quot; stehen, verstehe ich nichts!</p>
<p>Lösung: #include&lt;iostream.h&gt;<br />
unsigned int a, b, ergebnis;<br />
unsigned int maske = 0x80000; // ???<br />
char nochmal;<br />
int main()<br />
{do<br />
{<br />
cout&lt;&lt;&quot;Bitte Zahl a eingeben : &quot;;<br />
cin&gt;&gt;a;<br />
cout&lt;&lt;&quot;Bitte Zahl b eingeben : &quot;;<br />
cin&gt;&gt;b;<br />
ergebnis = 0; // ???<br />
while(maske)//maske !=0 // ???<br />
{ ergebnis = ergebnis &lt;&lt; 1; // um ein bit nach links verschieben<br />
if(maske &amp; b) // ???<br />
ergebnis = ergebnis + a; // ???<br />
maske = maske &gt;&gt;1; // um ein bit nach rechts verschieben<br />
}<br />
cout&lt;&lt;a&lt;&lt;&quot; mal &quot;&lt;&lt;b&lt;&lt;&quot; ergibt &quot;&lt;&lt;ergebnis&lt;&lt;endl;<br />
cout&lt;&lt;&quot;Programm wiederholen(j/n): &quot;;<br />
cin&gt;&gt;nochmal;<br />
}<br />
while ((nochmal == 'j')||(nochmal == 'J'));<br />
}</p>
<p>LG Simon und vielen DANK !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202943/bitverarbeitung-maske</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 04:55:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202943.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Jan 2008 00:25:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 00:25:59 GMT]]></title><description><![CDATA[<p>Hallo, ich habe hier eine Aufgabe und verstehe die Lösung nicht! Wer kann helfen?</p>
<p>Aufgabe: Erstellen Sie ein Programm, das nach Eingabe zweier Zahlen das Produkt ermittelt und ausgibt! Das Produkt soll über Bitverarbeitung (Verschieben und Addieren, siehe Vorlesung) ermittelt werden.</p>
<p>Überall wo &quot;???&quot; stehen, verstehe ich nichts!</p>
<p>Lösung: #include&lt;iostream.h&gt;<br />
unsigned int a, b, ergebnis;<br />
unsigned int maske = 0x80000; // ???<br />
char nochmal;<br />
int main()<br />
{do<br />
{<br />
cout&lt;&lt;&quot;Bitte Zahl a eingeben : &quot;;<br />
cin&gt;&gt;a;<br />
cout&lt;&lt;&quot;Bitte Zahl b eingeben : &quot;;<br />
cin&gt;&gt;b;<br />
ergebnis = 0; // ???<br />
while(maske)//maske !=0 // ???<br />
{ ergebnis = ergebnis &lt;&lt; 1; // um ein bit nach links verschieben<br />
if(maske &amp; b) // ???<br />
ergebnis = ergebnis + a; // ???<br />
maske = maske &gt;&gt;1; // um ein bit nach rechts verschieben<br />
}<br />
cout&lt;&lt;a&lt;&lt;&quot; mal &quot;&lt;&lt;b&lt;&lt;&quot; ergibt &quot;&lt;&lt;ergebnis&lt;&lt;endl;<br />
cout&lt;&lt;&quot;Programm wiederholen(j/n): &quot;;<br />
cin&gt;&gt;nochmal;<br />
}<br />
while ((nochmal == 'j')||(nochmal == 'J'));<br />
}</p>
<p>LG Simon und vielen DANK !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438080</guid><dc:creator><![CDATA[Petrus86]]></dc:creator><pubDate>Thu, 17 Jan 2008 00:25:59 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 10:50:32 GMT]]></title><description><![CDATA[<p>Wenn du die Bitoperatoren nicht verstehst, dann lies dir mal den Artikel zu <a href="http://de.wikipedia.org/wiki/Bitweiser_Operator" rel="nofollow">http://de.wikipedia.org/wiki/Bitweiser_Operator</a> durch.</p>
<p>Oder verstehst du das Verfahren als solches nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438253</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Thu, 17 Jan 2008 10:50:32 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 11:20:51 GMT]]></title><description><![CDATA[<p>Ich weiß wie das Verfahren geht.</p>
<p>Es geht mir um den Zusammenhang. Eigentlich um folgende Zeilen:</p>
<blockquote>
<p>{ ergebnis = ergebnis &lt;&lt; 1;<br />
if(maske &amp; b)<br />
ergebnis = ergebnis + a;<br />
maske = maske &gt;&gt;1;<br />
}</p>
</blockquote>
<p>Wenig später gibt er das Ergebnis eines Produktes raus... Das verstehe ich nicht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438271</guid><dc:creator><![CDATA[Petrus86]]></dc:creator><pubDate>Thu, 17 Jan 2008 11:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 11:30:21 GMT]]></title><description><![CDATA[<p>Maske wird am Anfang auf 0x8000 gesetzt (d.h. nur das höchstwertige Bit ist aktiv) und in jedem Schleifendurchlauf um 1 nach rechts geschoben. Also fragst du letztendlich (von &quot;oben&quot; kommend) ab, welche Bits in b gesetzt sind.</p>
<p>(im letzten Schleifendurchlauf wird einzige gesetzte Bit von maske &quot;raus&quot;geschoben und 0 bleibt zurück - damit hast du dann die Abbruchbedingung)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438277</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 17 Jan 2008 11:30:21 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 11:38:10 GMT]]></title><description><![CDATA[<p>Vielen Dank, das 0x8000 hat mir geholfen...</p>
<blockquote>
<p>if(maske &amp; b)</p>
</blockquote>
<p>heißt das, dass diese Bedingung nur wahr wird, wenn das höchste Bit gleich ist?</p>
<p>Wie kommt er auf das Produkt (a*b)? Der Zusammenhang ist mir völlig unklar!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438285</guid><dc:creator><![CDATA[Petrus86]]></dc:creator><pubDate>Thu, 17 Jan 2008 11:38:10 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 11:43:54 GMT]]></title><description><![CDATA[<p>Die Bedingung wird wahr, wenn irgendein Bit in maske UND b gesetzt ist. D.h. im ersten Durchlauf wird das höchstwertige Bit von b abgefragt, im nächsten Durchlauf das zweithöchste, etc - bis zum niedrigsten Bit.</p>
<p>Und den Zusammenhang kannst du dir am schriftlichen Multiplizieren abgucken - du multiplizierst a nacheinander mit allen Ziffern von b und addierst diese Teilprodukte dann (passend verschoben) zum Gesamtergebnis. Nur ist hier der Unterschied, daß du nur zwei mögliche Ziffern hast: 0 und 1.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438292</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 17 Jan 2008 11:43:54 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 11:47:00 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Die Bedingung wird wahr, wenn irgendein Bit in maske UND b gesetzt ist. D.h. im ersten Durchlauf wird das höchstwertige Bit von b abgefragt, im nächsten Durchlauf das zweithöchste, etc - bis zum niedrigsten Bit.</p>
</blockquote>
<p>So habe ich es auch gemeint, nur schlecht ausgedrückt!<br />
Trotzdem fehlt mir der Zusammenhang, wie kommt man auf das Ergebnis?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438295</guid><dc:creator><![CDATA[Petrus86]]></dc:creator><pubDate>Thu, 17 Jan 2008 11:47:00 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 11:59:46 GMT]]></title><description><![CDATA[<p>Nehmen wir mal ein Beispiel, damit's verständlich wird:</p>
<p>11010011 * 10011101 (211*157)</p>
<p>Start: erg = 0, maske = 0x80 = 10000000</p>
<p>Ester Durchlauf:<br />
erg&lt;&lt;=1 -&gt; 0<br />
maske&amp;b = 10000000 != 0 -&gt; erg = 11010011<br />
maske&gt;&gt;=1 -&gt; 01000000</p>
<p>Zweiter Durchlauf:<br />
erg&lt;&lt;=1 -&gt; 1 10100110<br />
maske&amp;b = 0 -&gt; nichts passiert<br />
maske&gt;&gt;=1 -&gt; 00100000</p>
<p>Dritter Durchlauf:<br />
erg&lt;&lt;=1 -&gt; 11 01001100<br />
maske&amp;b = 0 -&gt; nichts passiert<br />
maske&gt;&gt;=1 -&gt; 00010000</p>
<p>Vierter Durchlauf:<br />
erg&lt;&lt;=1 -&gt; 110 10011000<br />
maske&amp;b = 000010000 != 0 -&gt; erg+=a -&gt; 111 01101011<br />
maske&gt;&gt;=1 -&gt; 00001000</p>
<p>etc.</p>
<p>Wie gesagt - stell dir die schriftliche Multiplikation (solltest du in der Schule gelernt haben, oder?) vor und wende sie an auf das Binärsystem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438305</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 17 Jan 2008 11:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 13:53:16 GMT]]></title><description><![CDATA[<p>Vielen Dank, jetzt verstehe ich es....</p>
<p>Eine Frage aber noch. Wenn ich z.B. 21*15 rechne benötige ich eine maske mit der Größe von 1000, da ja 15 in Bit &quot;1111&quot; lautet, wie wäre dazu die Bezeichnung hinter der Maske (0x...)?</p>
<p>MFG Petrus und vielen DANK!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438404</guid><dc:creator><![CDATA[Petrus86]]></dc:creator><pubDate>Thu, 17 Jan 2008 13:53:16 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 13:57:21 GMT]]></title><description><![CDATA[<p>0x08 - aber wenn du weiter oben anfängst, stört das auch nicht (außer daß du am Anfang der Schleife 12 0-Bits erfasst und verarbeitest). Btw, ich hab dort oben auch den ersten Teil der Schleife unterschlagen - bei deiner Funktion kämen am Anfang 8 Schleifendurchläufe, bis maske auf 0x8000 runtergezählt ist (da b dort oben keine Bits gesetzt wird, ändern die nichts am Ergebnis).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438408</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 17 Jan 2008 13:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 14:29:32 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>0x08 - aber wenn du weiter oben anfängst, stört das auch nicht (außer daß du am Anfang der Schleife 12 0-Bits erfasst und verarbeitest). Btw, ich hab dort oben auch den ersten Teil der Schleife unterschlagen - bei deiner Funktion kämen am Anfang 8 Schleifendurchläufe, bis maske auf 0x8000 runtergezählt ist (da b dort oben keine Bits gesetzt wird, ändern die nichts am Ergebnis).</p>
</blockquote>
<p>Ja, dass es nichts am Ergebnis ändert ist mir jetzt klar! Wie kommt man auf 0x08?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438440</guid><dc:creator><![CDATA[Petrus86]]></dc:creator><pubDate>Thu, 17 Jan 2008 14:29:32 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 14:36:43 GMT]]></title><description><![CDATA[<p>Indem man die Binärzahl 1000 in einen Hex-Wert umrechnet - alternativ kannst du auch <a href="http://de.wikipedia.org/wiki/Zahlbasiswechsel#Umrechnung_f.C3.BCr_einfache_Spezialf.C3.A4lle" rel="nofollow">in dieser Tabelle</a> nachschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438448</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 17 Jan 2008 14:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to Bitverarbeitung&#x2F;Maske on Thu, 17 Jan 2008 15:33:13 GMT]]></title><description><![CDATA[<p>Vielen Dank!!!</p>
<p>Gruß Petrus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438498</guid><dc:creator><![CDATA[Petrus86]]></dc:creator><pubDate>Thu, 17 Jan 2008 15:33:13 GMT</pubDate></item></channel></rss>