<?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[BIT-Manipulationen]]></title><description><![CDATA[<p>Folgendes Problem, Ich möchte von einer Datei (z.b. Txt)<br />
alle einzelnen BITs auslesen,</p>
<p>Mein Ansatz war folgender, die Nutzdaten (data) byteweise auslesen:</p>
<p>Streamdata-&gt;Read(&amp;buffer,1);<br />
und mithilfe einer Bitmaske und bitweisen &amp; herausfinden<br />
Bitmaske = 0000 0001</p>
<p>Umsetzung in C++ sah folgendermaßen aus:</p>
<pre><code class="language-cpp">BYTE maske=1;//0000 0001 Maske
        BYTE nutzbit[7];
        for(int i=0;i&lt;8;i++)
        {
                maske = maske &lt;&lt; i-1; //Jeweils um 1 nach links
                BYTE Bit   = buffer &amp; maske;
                Bit = Bit &gt;&gt; i;
                nutzbit[i] = Bit;
        }
</code></pre>
<p>Leider habe ich hier einen absoluten Denkfehler anscheinend drinnen,..<br />
könnte sich jemand meiner erbarmen und sich das mal ansehen und mir einen Rat geben ?</p>
<p>Danke <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/topic/193302/bit-manipulationen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 05:33:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193302.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Sep 2007 19:52:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to BIT-Manipulationen on Mon, 24 Sep 2007 19:52:52 GMT]]></title><description><![CDATA[<p>Folgendes Problem, Ich möchte von einer Datei (z.b. Txt)<br />
alle einzelnen BITs auslesen,</p>
<p>Mein Ansatz war folgender, die Nutzdaten (data) byteweise auslesen:</p>
<p>Streamdata-&gt;Read(&amp;buffer,1);<br />
und mithilfe einer Bitmaske und bitweisen &amp; herausfinden<br />
Bitmaske = 0000 0001</p>
<p>Umsetzung in C++ sah folgendermaßen aus:</p>
<pre><code class="language-cpp">BYTE maske=1;//0000 0001 Maske
        BYTE nutzbit[7];
        for(int i=0;i&lt;8;i++)
        {
                maske = maske &lt;&lt; i-1; //Jeweils um 1 nach links
                BYTE Bit   = buffer &amp; maske;
                Bit = Bit &gt;&gt; i;
                nutzbit[i] = Bit;
        }
</code></pre>
<p>Leider habe ich hier einen absoluten Denkfehler anscheinend drinnen,..<br />
könnte sich jemand meiner erbarmen und sich das mal ansehen und mir einen Rat geben ?</p>
<p>Danke <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/1371948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371948</guid><dc:creator><![CDATA[Darkkiller__]]></dc:creator><pubDate>Mon, 24 Sep 2007 19:52:52 GMT</pubDate></item><item><title><![CDATA[Reply to BIT-Manipulationen on Mon, 24 Sep 2007 20:12:48 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Der einzige echte semantische Fehler ist das du ein Array mit 7 Elementen in einer Schleife mit 8 Durchgängen beschreiben willst.<br />
Ansonsten ist das recht ineffizient. Warum die Bits auseinanderreißen? Las sie doch im Byte und benutzt lieber acht einzelne Masken um On-The-Fly auf die einzelnen Bits zuzugreifen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371959</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 24 Sep 2007 20:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to BIT-Manipulationen on Mon, 24 Sep 2007 20:18:34 GMT]]></title><description><![CDATA[<p>Weil das ganze weiterreicht dass ich einen Anderen Stream mit eben genau diesen Daten weiterverarbeiten will, war für mich einfach übersichtlicher im moment,<br />
naja....</p>
<p>Ok hab ich ausgebessert, ich lade hierbei eine test.txt mit folgendem inhalt(00001111)...<br />
nun steht in meinem &quot;buffer&quot; aber nur &quot;1&quot; ???<br />
Kommt kompletter Nonsens raus ? (1,0,0,0,0,...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371967</guid><dc:creator><![CDATA[darkkiller_]]></dc:creator><pubDate>Mon, 24 Sep 2007 20:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to BIT-Manipulationen on Mon, 24 Sep 2007 20:28:00 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Du bist mit dem Verschieben etwas durcheinander gekommen</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

typedef unsigned char BYTE;

int main()
{
  BYTE test = 3;
  BYTE maske=1;//0000 0001 Maske
  BYTE nutzbit[8];
  for(int i=0;i&lt;8;i++)
  {
    BYTE Bit   = test &amp; maske;
    Bit = Bit &gt;&gt; i;
    nutzbit[i] = Bit;
    maske = maske &lt;&lt; 1; //Jeweils um 1 nach links
  }
  for (int i = 0; i&lt;8;i++)
    std::cout &lt;&lt; &quot; &lt;&quot; &lt;&lt; int(nutzbit[i]) &lt;&lt; &quot;&gt;&quot;;

}
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371975</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 24 Sep 2007 20:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to BIT-Manipulationen on Mon, 24 Sep 2007 20:33:43 GMT]]></title><description><![CDATA[<p>Leider aber das gleiche phänomen ?</p>
<p>Beim auslesen der datei test.txt (Inhalt: 00001111):</p>
<p>0 - Bit<br />
0 - Bit<br />
0 - Bit<br />
0 - Bit<br />
1 - Bit<br />
1 - Bit<br />
0 - Bit<br />
0 - Bit</p>
<p>sind die letzten 2 Bits falsch ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371977</guid><dc:creator><![CDATA[darkkiller_]]></dc:creator><pubDate>Mon, 24 Sep 2007 20:33:43 GMT</pubDate></item><item><title><![CDATA[Reply to BIT-Manipulationen on Mon, 24 Sep 2007 20:34:51 GMT]]></title><description><![CDATA[<p>Um es vollständig mal zu posten:</p>
<pre><code class="language-cpp">Streamdata-&gt;LoadFromFile(datapath);
        Streamdata-&gt;Position=0;

        //Nun auslesen wie dieses Byte aufgebaut ist
        BYTE nutzbit[8];
        BYTE buffer=0;
        Streamdata-&gt;Read(&amp;buffer,1);

        BYTE maske=1;//0000 0001 Maske
        for(int i=0;i&lt;8;i++)
        {
                BYTE Bit   = buffer &amp; maske;
                Bit = Bit &gt;&gt; i;
                nutzbit[i] = Bit;
                maske = maske &lt;&lt; 1; //Jeweils um 1 nach links
        }
        for (int i = 0; i&lt;8;i++)
                Memo2-&gt;Lines-&gt;Add(IntToStr(nutzbit[i]) + &quot; - Bit&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1371978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371978</guid><dc:creator><![CDATA[darkkiller_]]></dc:creator><pubDate>Mon, 24 Sep 2007 20:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to BIT-Manipulationen on Mon, 24 Sep 2007 20:38:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Nein mein Code ist schon in Ordnung.<br />
Hier noch in eine Funktion gepackt um zwei Zahlen zu testen, jeweils mit höchsten und niedrigsten Bit</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

typedef unsigned char BYTE;

void bin_out(BYTE test)
{
  BYTE maske=1;//0000 0001 Maske
  BYTE nutzbit[8];
  for(int i=0;i&lt;8;i++)
  {
    BYTE Bit   = test &amp; maske;
    Bit = Bit &gt;&gt; i;
    nutzbit[i] = Bit;
    maske = maske &lt;&lt; 1; //Jeweils um 1 nach links
  }
  for (int i = 0; i&lt;8;i++)
    std::cout &lt;&lt; &quot; &lt;&quot; &lt;&lt; int(nutzbit[i]) &lt;&lt; &quot;&gt;&quot;;
}

int main()
{
  bin_out(1 &lt;&lt; 7);
  std::cout &lt;&lt; std::endl;
  bin_out(1);

}
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371981</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 24 Sep 2007 20:38:52 GMT</pubDate></item><item><title><![CDATA[Reply to BIT-Manipulationen on Mon, 24 Sep 2007 20:45:16 GMT]]></title><description><![CDATA[<p>Ja dein Code stimmt,<br />
wenn ich nun statt<br />
BYTE Bit = buffer &amp; maske;<br />
BYTE Bit = 0xAA &amp; maske;</p>
<p>schreibe stimmt mein Array komplett !</p>
<p>Dann muss nun mein Fehler beim Auslesen der Datei sein ??</p>
<p>Woeb idas auslesen nicht länger als:</p>
<pre><code class="language-cpp">Streamdata-&gt;LoadFromFile(datapath);
        Streamdata-&gt;Position=0;
        BYTE buffer;
        Streamdata-&gt;Read(&amp;buffer,1);
</code></pre>
<p>ist ?<br />
das hier stimmt doch ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371983</guid><dc:creator><![CDATA[darkkiller_]]></dc:creator><pubDate>Mon, 24 Sep 2007 20:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to BIT-Manipulationen on Mon, 24 Sep 2007 20:58:12 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Möglicherweise ist die Datei nicht korrekt? Hast du mit dem Debugger überprüft was in datapath steht? (Wenn es wirklich nur ein Pfad ohne Dateiname ist kann es nichts werden)</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371994</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 24 Sep 2007 20:58:12 GMT</pubDate></item></channel></rss>