<?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[Frage zu Schleife]]></title><description><![CDATA[<p>Hallo ich hab eine Frage zu der Schleife.</p>
<p>Den Source Code hab ich hier im Forum gefunden.<br />
Dort gibt man ja eine Binärzahl ein und eine Dezimalzahl kommt wieder raus.</p>
<p>Nur irgendwie versteh ich nicht das was hier passiert:</p>
<p>for (wert=i=0; bin[i] ; i++)<br />
wert=wert*2+bin[i]-48;</p>
<p>Wenn ich jetzt z.b. 111 eingebe wie würde das dann hier aussehen?<br />
wert=wert*2+bin[i]-48;</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;
#include &lt;conio.h&gt;

void main()
{
  char bin[256];
  long int wert;
  int i = 0;

  clrscr();

  cout&lt;&lt;&quot;Geben Sie die binäre Zahlendarstellung ein: &quot;;
  cin&gt;&gt;bin;

    for (wert=i=0; bin[i] ; i++)

    wert=wert*2+bin[i]-48;

  cout&lt;&lt;&quot;Dezimaler Wert: &quot;&lt;&lt;wert;
  getch();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/226031/frage-zu-schleife</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 02:57:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226031.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Oct 2008 13:38:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Schleife on Tue, 28 Oct 2008 13:38:14 GMT]]></title><description><![CDATA[<p>Hallo ich hab eine Frage zu der Schleife.</p>
<p>Den Source Code hab ich hier im Forum gefunden.<br />
Dort gibt man ja eine Binärzahl ein und eine Dezimalzahl kommt wieder raus.</p>
<p>Nur irgendwie versteh ich nicht das was hier passiert:</p>
<p>for (wert=i=0; bin[i] ; i++)<br />
wert=wert*2+bin[i]-48;</p>
<p>Wenn ich jetzt z.b. 111 eingebe wie würde das dann hier aussehen?<br />
wert=wert*2+bin[i]-48;</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;
#include &lt;conio.h&gt;

void main()
{
  char bin[256];
  long int wert;
  int i = 0;

  clrscr();

  cout&lt;&lt;&quot;Geben Sie die binäre Zahlendarstellung ein: &quot;;
  cin&gt;&gt;bin;

    for (wert=i=0; bin[i] ; i++)

    wert=wert*2+bin[i]-48;

  cout&lt;&lt;&quot;Dezimaler Wert: &quot;&lt;&lt;wert;
  getch();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1606054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606054</guid><dc:creator><![CDATA[fragefrage]]></dc:creator><pubDate>Tue, 28 Oct 2008 13:38:14 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Tue, 28 Oct 2008 14:08:44 GMT]]></title><description><![CDATA[<p>fragefrage schrieb:</p>
<blockquote>
<p>Nur irgendwie versteh ich nicht das was hier passiert:</p>
<p>for (wert=i=0; bin[i] ; i++)<br />
wert=wert*2+bin[i]-48;</p>
<p>Wenn ich jetzt z.b. 111 eingebe wie würde das dann hier aussehen?<br />
wert=wert*2+bin[i]-48;</p>
</blockquote>
<p>Im Schleifenkopf werden zu Beginn die Variablen wert und i mit 0 initialisiert. Die Abbruchbedingung - bin[i] - hat also zu Beginn den Wert des ersten Zeichens des char-Arrays bin.<br />
In Deinem Beispiel 111 also '1' (Ascii 49).<br />
Im vierten Schleifendurchlauf steht sie dann wegen i++ in jedem Durchlauf auf dem Stringterminierenden Nullzeichen, was zum Abbruch der Schleife führt.<br />
Naja, und bei jedem Schleifendurchlauf wird wert wie dargestellt berechnet, wobei es wie gesagt anfangs den Wert 0 hat, dann aber den in bisherigen Durchläufen ermittelten Wert. bin[i] - 48 macht einfach aus dem Zeichen '1' den Zahlenwert 1, bzw. würde aus dem Zeichen '0' (Ascii 48) den Zahlenwert 0 machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606077</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 28 Oct 2008 14:08:44 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Tue, 28 Oct 2008 14:09:52 GMT]]></title><description><![CDATA[<p>Hier wird eine Schleife solange ausgeführt, bis bin[i]==0 ist (binäre Null steht ja für's String-Ende). Und darin wird eben jede binäre Stelle umgerechnet, wobei hier quasi von hinten (links) nach vorne (rechts) vorgegangen wird. Jede Stelle wird erstmal mit einer Eertigkeit 1 behandelt und im nächsten Schleifendurchlauf sozusagen im Rang erhöht und entsprechend multipliziert. Wenn dir der Ausdruck zu kompliziert ist, dann zerlege ihn doch in mehrere Zeilen und gehe schrittweise mit dem Debugger durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606079</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 28 Oct 2008 14:09:52 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Tue, 28 Oct 2008 15:36:27 GMT]]></title><description><![CDATA[<p>Danke für die Antworten.</p>
<p>Also steht die 48 dafür um aus '1' den Zahlenwert 1 zu machen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606136</guid><dc:creator><![CDATA[fragefrage]]></dc:creator><pubDate>Tue, 28 Oct 2008 15:36:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Tue, 28 Oct 2008 15:37:57 GMT]]></title><description><![CDATA[<p>Klar, weil 1 im char den dezimalwert 49 hat... würd ich jetzt so einfach mal behaupten, aber nachgeschaut hab ich nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606140</guid><dc:creator><![CDATA[Gustl]]></dc:creator><pubDate>Tue, 28 Oct 2008 15:37:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Tue, 28 Oct 2008 15:41:57 GMT]]></title><description><![CDATA[<p>Gustl schrieb:</p>
<blockquote>
<p>Klar, weil 1 im char den dezimalwert 49 hat... würd ich jetzt so einfach mal behaupten, aber nachgeschaut hab ich nicht...</p>
</blockquote>
<p>Na klar, 48-57 sind die Ziffern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606141</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 28 Oct 2008 15:41:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 07:53:20 GMT]]></title><description><![CDATA[<p>Wenn man - '0' anstelle von - 48 schreibt, ist es auch verständlicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606377</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 29 Oct 2008 07:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 08:00:18 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Wenn man - '0' anstelle von - 48 schreibt, ist es auch verständlicher.</p>
</blockquote>
<p>Na ja, wenn man wie ich (und wahrscheinlich du) die ASCII-Codes sowieso kennt, macht's in meinen Augen keinen Unterschied. Ich schreibe sogar lieber den Wert statt des Charakters. Geschmacksache. Auf Dauer ist es auch ratsam, zumindest einige auswendig zu lernen (10,13,27,32,48-,65-,97-,usw.), da hilft die Verwendung im eigenen Code u.U. Und wenn jemand sich so gar nicht damit auskennt, wird er vermutlich auch nicht verstehen, wieso man jetzt das Zeichen '0' subtrahieren muss...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606380</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 08:07:26 GMT]]></title><description><![CDATA[<p>&quot;Magic Numbers&quot; sollten wo es geht vermieden werden. Wenn man keine Ahnung vom Aufbau der Ascii-Tabelle hat, ist es mE verständlicher von einem char einen anderen char abzuziehen als auf einmal noch ints mit in die Berechnung einzubeziehen. Für Leute die wissen was man da tut sicherlich eine Geschmacksfrage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606384</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 08:09:19 GMT]]></title><description><![CDATA[<p>Wo kann man das den noch genauer nach lesen, so was man das auch versteht?^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606387</guid><dc:creator><![CDATA[fragefrage]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:09:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 08:33:17 GMT]]></title><description><![CDATA[<p>fragefrage schrieb:</p>
<blockquote>
<p>Wo kann man das den noch genauer nach lesen, so was man das auch versteht?^^</p>
</blockquote>
<p>Was genau denn? Also eine ASCII-Tabelle findest du überall, z.B. hier: <a href="http://www.asciitable.de/tabelle.html" rel="nofollow">http://www.asciitable.de/tabelle.html</a></p>
<p>Jedes Zeichen (druckbare und nicht druckbare) entspricht einem Zahlencode in der ASCII-Tabelle, so wie die '0' eben gleich 48 ist. Ein Leerzeichen ist ne 32, wenn du auf deine ESC-Taste drückst, ist das der Code 27, ein 'A' ist die 65 usw. Du kannst das in einem Texteditor/Word/sonstwas ausprobieren: halte die ALT-Taste gedrückt und gib währenddessen eine 4 und eine 8 ein. ALT-Taste loslassen... tada! Es wird an die Cursorposition eine '0' geschrieben. In C/C++ ist die Grenze zwischen char und int ziemlich dünn (anders, als in Sprachen wie Basic), sie werden lediglich etwas anders interpretiert. Aber du kannst mit chars genauso rechnen wie mit ints, da ein char letztlich auch nur ein Ganzzahlenwert ist.<br />
Im Beispiel sieht es ja so aus, dass aus einem Zeichen '0', also char(48), der Wert 48 gemacht werden soll. Deshalb müssen eben 48 abgezogen werden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606397</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 08:43:06 GMT]]></title><description><![CDATA[<p>Hi fragefrage,</p>
<p>auch wenn das die Frage nicht beantwortet.... aber was ist aus dem guten, alte</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int main() {
  long int wert;

  cout&lt;&lt;&quot;Geben Sie die binäre Zahlendarstellung ein: &quot;;
  cin&gt;&gt; hex &gt;&gt; wert;
  cout&lt;&lt;&quot;Dezimaler Wert: &quot;&lt;&lt;wert;
  return 0;
}
</code></pre>
<p>geworden ?<br />
<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>Also der Code, den Du da gefunden hast, ist nicht gerade ein Beispiel für guten Code (falsche main()-Signatur, non-Std-Funktionen, unnötige Portabilitätseinschränkungen (ASCII), ...) ...<br />
...vielleicht solltest Du Dich nicht allzu lange mit ihm beschäftigen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606404</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:43:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 09:16:41 GMT]]></title><description><![CDATA[<p>Es ging um die Eingabe von binären, nicht hexadezimalen, Werten. Ansonsten aber ein schönes Beispiel. <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/1606440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606440</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:16:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 09:28:50 GMT]]></title><description><![CDATA[<p>Schade das die STL nur eine komfortable Ausgabe von binären Daten (als String) erlaubt und keine für die die Eingabe...</p>
<pre><code class="language-cpp">#include &lt;bitset&gt;
#include &lt;iostream&gt;

int main(int argc, char*argv[]){
   int t;
   std::cin &gt;&gt; t;
   std::cout &lt;&lt; &quot;in binär: &quot; &lt;&lt; std::bitset&lt;32&gt;(t).to_string() &lt;&lt; std::endl;  
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1606450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606450</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 09:29:16 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>Es ging um die Eingabe von binären, nicht hexadezimalen, Werten. Ansonsten aber ein schönes Beispiel. <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>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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="🙄"
    /><br />
OK - hatte aus &quot;Binärzahl&quot; -&gt; &quot;Binärdaten&quot; -&gt; &quot;Hexzahlen&quot; gelesen.</p>
<p>Tja - falsch eben.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606452</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:29:16 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 09:33:09 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>fragefrage schrieb:</p>
<blockquote>
<p>Wo kann man das den noch genauer nach lesen, so was man das auch versteht?^^</p>
</blockquote>
<p>Was genau denn? Also eine ASCII-Tabelle findest du überall, z.B. hier: <a href="http://www.asciitable.de/tabelle.html" rel="nofollow">http://www.asciitable.de/tabelle.html</a></p>
<p>Jedes Zeichen (druckbare und nicht druckbare) entspricht einem Zahlencode in der ASCII-Tabelle, so wie die '0' eben gleich 48 ist. Ein Leerzeichen ist ne 32, wenn du auf deine ESC-Taste drückst, ist das der Code 27, ein 'A' ist die 65 usw. Du kannst das in einem Texteditor/Word/sonstwas ausprobieren: halte die ALT-Taste gedrückt und gib währenddessen eine 4 und eine 8 ein. ALT-Taste loslassen... tada!</p>
</blockquote>
<p>Das geht allerdings nur mit den Ziffern auf dem Nummernblock!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606459</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:33:09 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 10:23:45 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Schade das die STL nur eine komfortable Ausgabe von binären Daten (als String) erlaubt und keine für die die Eingabe...</p>
<pre><code class="language-cpp">#include &lt;bitset&gt;
#include &lt;iostream&gt;

int main(int argc, char*argv[]){
   int t;
   std::cin &gt;&gt; t;
   std::cout &lt;&lt; &quot;in binär: &quot; &lt;&lt; std::bitset&lt;32&gt;(t).to_string() &lt;&lt; std::endl;  
}
</code></pre>
</blockquote>
<p>Das kann man aber echt leicht bauen:</p>
<pre><code class="language-cpp">template&lt;size_t size&gt;
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; ostr, const std::bitset&lt;size&gt;&amp; set)
{
    ostr &lt;&lt; set.to_string();
    return ostr;
}

template&lt;size_t size&gt;
std::istream&amp; operator&gt;&gt;(std::istream&amp; istr, std::bitset&lt;size&gt;&amp; set)
{
    std::string input;
    istr &gt;&gt; input;
    try
    {
        std::bitset&lt;size&gt; tmp(input);
        set = tmp;
    }
    catch(...)
    {
        istr.setstate(std::ios::failbit);
    }
    return istr;
}
</code></pre>
<p>Nur so hingeklatscht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606481</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 29 Oct 2008 10:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 10:20:25 GMT]]></title><description><![CDATA[<p>[borat]<br />
naaaaaiiiissss<br />
[/borat]<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Jetzt wäre nur noch die Frage, ob man das direkt in einen Manipulator á la hex umpulen könnte, mit dem man dan direkt in ein long lesen kann.<br />
Vielleicht mit einem wrapper (z.B. &quot;bin&quot;), in den man mittels operator&gt;&gt;(istream&amp;, bin&amp;) einliest und der dann einen eigenen operator&gt;&gt;(bin const&amp;, T&amp;) für verschiedene Typen anbietet ?<br />
Aber damit geht dann irgentwie der istream-Parameter flöten und man kann nicht mehr &quot;anhängen&quot;, .... hmmmmmmm.<br />
Muss mal nachsehen, wie std::hex das macht.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606489</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 29 Oct 2008 10:20:25 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 10:27:48 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Meinst Du sowas:</p>
<pre><code class="language-cpp">unsigned long a;
    std::cin &gt;&gt; std::hex &gt;&gt; a;
</code></pre>
<p>??<br />
Das geht doch so schon.</p>
<p>Edit:<br />
Achso, bezogen auf bin. Okay.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606499</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 29 Oct 2008 10:27:48 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 10:55:12 GMT]]></title><description><![CDATA[<p>Ich versuch das gerade mal aufm Papier auszurechnen ....</p>
<p>Aber ohne Erfolg <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>Die Eingabe soll sein: 101</p>
<p>Das Ergebniss wäre ja dann 5</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;Geben Sie die binäre Zahlendarstellung ein: &quot;;
  cin&gt;&gt;bin;

for (wert=i=0; i&lt;3 ; i++)

  wert=wert*2+bin[i]-48;
</code></pre>
<p>Für die erste Zahl:<br />
Aber das ist denk ich mal falsch <sub>_</sub><br />
wert = 0 * 2 + 1 ??*-+ 1?? -48</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606525</guid><dc:creator><![CDATA[fragefrage]]></dc:creator><pubDate>Wed, 29 Oct 2008 10:55:12 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 11:38:01 GMT]]></title><description><![CDATA[<p>So langsamm komm ich der Sache glaub ich näher^^</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;Eingabe: &quot;;
  cin&gt;&gt;bin;

        for (wert=i=1; i&lt;2 ; i++)
        {
        wert_1 = 1*2 + bin[1];
        }
</code></pre>
<p>Wenn man dort jetzt eingibt: 11</p>
<p>Dann bekommt man als Ergebniss 51</p>
<p>Aber was passiert hier ? bin[1]</p>
<p>Was wird da gerechnet ?</p>
<p>bin wäre hier ja 1 oder ? weil man ja eine 1 eingibt ...</p>
<p>wert = 1*2 + bin * + / 1 ???</p>
<p>Ich weiss jetzt halt nicht wie der daraus auf 51 kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606540</guid><dc:creator><![CDATA[fragefrage]]></dc:creator><pubDate>Wed, 29 Oct 2008 11:38:01 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 12:37:30 GMT]]></title><description><![CDATA[<p>Wenn du &quot;11&quot; eingibst, sollte das Ergebnis 3 sein. Und da steht bin[i] und nicht bin[1]. Wenn du die Schleife schon auflöst, dann bitte richtig.</p>
<p>Korrekt wäre:</p>
<p>wert = 0<br />
wert = 0<em>2 + 1; // + (bin[0] - '0')<br />
wert = 1</em>2 + 1; // + (bin[1] - '0')</p>
<p>Also wert == 3</p>
<p>Und bei einer Eingabe von 1101<br />
wert = 0<br />
wert = 0<em>2 + 1; // + (bin[0] - '0')<br />
wert = 1</em>2 + 1; // + (bin[1] - '0')<br />
wert = 3<em>2 + 0; // + (bin[2] - '0')<br />
wert = 6</em>2 + 1; // + (bin[3] - '0')</p>
<p>Also wert == 13</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606548</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 29 Oct 2008 12:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 12:17:29 GMT]]></title><description><![CDATA[<p>fragefrage schrieb:</p>
<blockquote>
<p>So langsamm komm ich der Sache glaub ich näher^^</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;Eingabe: &quot;;
  cin&gt;&gt;bin;

        for (wert=i=1; i&lt;2 ; i++)
        {
        wert_1 = 1*2 + bin[1];
        }
</code></pre>
<p>...</p>
<p>Ich weiss jetzt halt nicht wie der daraus auf 51 kommt.</p>
</blockquote>
<p>Wie willst du der Sache näher kommen, wenn du die Funktion komplett veränderst? Und das nicht zum Guten! Hier kommst du auf 51, weil du jetzt einfach 1*2 (2) und bin[1] (also vom Eingabestring &quot;1<strong>1</strong>&quot; den char an Stelle 1, also '1') addierst. '1' ist gleich 49 (denke an den ASCII-Code), wenn du da nicht 48 subtrahierst, kommst du eben nicht vom char '1' auf den Wert 1, sondern es ist nunmal der Wert 49. So ergibt sich deine 51.</p>
<p>Wenn du hier <em>leichte</em> Verständnisschwierigkeiten hast, dann zerlege den Ausdruck doch in mehrere Teile, dann wird's vielleicht einfacher:</p>
<pre><code class="language-cpp">for (wert=i=0; bin[i] ; i++) {

  //Ziffer, die im letzten Durchlauf mit Wertigkeit 1 (x^0) gehandelt wurde, wird
  //nun &quot;hochgestuft&quot; (x^0 =&gt; x^1, x^1 =&gt; x^2 usw.), so dass am Ende jede Ziffer
  //nach ihrer korrekten Stellung ins Ergebnis eingeflossen ist. Nur die letzte
  //Ziffer (ganz rechts) wird als x^0==1 behandelt.
  wert=wert*2;  

  //Hier fließt die aktuelle Ziffer ins Ergebnis ein, erst mal mit Wertigkeit 1.
  //Die eventuelle Aufwertung kommt im nächsten Durchlauf. Die 48 müssen
  //subtrahiert werden, um vom ASCII-Zeichen auf den int-Wert zu kommen.
  wert+=(bin[i]-48);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1606568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606568</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 29 Oct 2008 12:17:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Wed, 29 Oct 2008 22:22:24 GMT]]></title><description><![CDATA[<p>Wenn eingabe 11 ist:</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;Eingabe: &quot;;
cin&gt;&gt;bin;

  for (wert=i=0; bin[i] ; i++) 

    wert=wert*2+bin[i]-48;
</code></pre>
<p>wert = 0<em>2 + bin[i] - 48;<br />
wert = 1</em>2 + bin[i] - 48;</p>
<p>Ich weiss jetzt halt nicht was bei bin[i] steht.</p>
<p>Oder ist das hier bin[i] ??<br />
wert = 0*2 + 1; // + (bin[0] - '0')</p>
<p>Ich müsste halt mal wissen wie man das Komplett hinschreibt ....</p>
<p>wert_1 : bin = 1 i = 0<br />
wert_2 : bin = 1 i = 1</p>
<p>Aber wie schreibt man das dann als gleichung ?</p>
<p>wert_1 = 0<em>2 + bin[i] - 48;<br />
wert_2 = 1</em>2 + bin[i] - 48;</p>
<p>So ?</p>
<p>wert_1 = 0<em>2 + 1 + 0 - 48;<br />
wert_2 = 1</em>2 + 1 + 1 - 48;</p>
<p>Wert_1 : Die erste 1 soll bin sein und die 0 danach i<br />
Wert_2 : Die zweite soll bin sein und die 1 danach i</p>
<p>Nur schreibt man jetzt dazwischen 1<em>0 //1 = bin 0 = i<br />
1</em>1 //1 = bin 0 = i</p>
<p>Oder + - / ........ ???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606872</guid><dc:creator><![CDATA[fragefrage]]></dc:creator><pubDate>Wed, 29 Oct 2008 22:22:24 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Schleife on Thu, 30 Oct 2008 07:21:02 GMT]]></title><description><![CDATA[<p>fragefrage schrieb:</p>
<blockquote>
<p>Ich weiss jetzt halt nicht was bei bin[i] steht.</p>
</blockquote>
<p><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>Du liest bin per cin ein. Das ist ein String, ein char-Array. Die einzelnen Elemente eines Arrays kannst du per []-Operator bekommen.</p>
<pre><code class="language-cpp">char bin[]=&quot;123&quot;;  //char-Array mit 4 Elementen (das vierte ist die abschließende Null, die das String-Ende markiert)
char c=bin[0];  //c ist '1'
c=bin[1];       //c ist '2'
c=bin[2];       //c ist '3'
c=bin[3];       //c ist 0 (nicht '0'!)
</code></pre>
<p>In den eckigen Klammern kann natürlich auch eine Variable stehen, so wie in deinem Beispiel. In einer for-Schleife sieht das dann so aus:</p>
<pre><code class="language-cpp">//Im ersten Schleifendurchlauf ist i==0, so dass c==bin[i]==bin[0]=='1' ist.
//Im zweiten Durchlauf ist es dann so: c==bin[i]==bin[1]=='2' usw.
for(int i=0;i&lt;strlen(bin);i++) {
  char c=bin[i];
}
</code></pre>
<p>Klar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606949</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Thu, 30 Oct 2008 07:21:02 GMT</pubDate></item></channel></rss>