<?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[Bitfolge in Byte spiegeln]]></title><description><![CDATA[<p>Hallo, ich versuche für ein Mikrocontroller Projekt ein BMP in eine Tabelle zu bringen, um dieses dann auf einem LCD auszugeben. 8 bits eines Datenbytes stehen immer 8 aufeinanderfolgende Pixel (an/aus) in einer Zeile. Nun habe ich das Problem, dass mein Display das Tiefste Bit eines Bytes genau auf der anderen Seite anzeigt, als das Bit in der Monochrom BMP steht. Ich müsste jedes Byte z.B 00101111 genau spiegeln können, wäre in dem Beispiel dann 11110100. Habe schon gedacht über eine switch Tabelle, um jedoch 254 Zustände zu Spiegeln, fehlt mir erlich gesagt der Spass. Auf dem Mikrocontroller möchte ich ebenfalls nicht Spiegeln, da dort die Leistung etwas eingeschränkt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191237/bitfolge-in-byte-spiegeln</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 03:27:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191237.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Aug 2007 15:05:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitfolge in Byte spiegeln on Fri, 31 Aug 2007 15:05:19 GMT]]></title><description><![CDATA[<p>Hallo, ich versuche für ein Mikrocontroller Projekt ein BMP in eine Tabelle zu bringen, um dieses dann auf einem LCD auszugeben. 8 bits eines Datenbytes stehen immer 8 aufeinanderfolgende Pixel (an/aus) in einer Zeile. Nun habe ich das Problem, dass mein Display das Tiefste Bit eines Bytes genau auf der anderen Seite anzeigt, als das Bit in der Monochrom BMP steht. Ich müsste jedes Byte z.B 00101111 genau spiegeln können, wäre in dem Beispiel dann 11110100. Habe schon gedacht über eine switch Tabelle, um jedoch 254 Zustände zu Spiegeln, fehlt mir erlich gesagt der Spass. Auf dem Mikrocontroller möchte ich ebenfalls nicht Spiegeln, da dort die Leistung etwas eingeschränkt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356173</guid><dc:creator><![CDATA[noobc]]></dc:creator><pubDate>Fri, 31 Aug 2007 15:05:19 GMT</pubDate></item><item><title><![CDATA[Reply to Bitfolge in Byte spiegeln on Fri, 31 Aug 2007 15:33:14 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-14774.html" rel="nofollow">akari</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-2.html" rel="nofollow">VCL/CLX (Borland C++ Builder)</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356218</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 31 Aug 2007 15:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to Bitfolge in Byte spiegeln on Fri, 31 Aug 2007 15:39:26 GMT]]></title><description><![CDATA[<p>noobc schrieb:</p>
<blockquote>
<p>Hallo, ich versuche für ein Mikrocontroller Projekt ein BMP in eine Tabelle zu bringen, um dieses dann auf einem LCD auszugeben. 8 bits eines Datenbytes stehen immer 8 aufeinanderfolgende Pixel (an/aus) in einer Zeile. Nun habe ich das Problem, dass mein Display das Tiefste Bit eines Bytes genau auf der anderen Seite anzeigt, als das Bit in der Monochrom BMP steht. Ich müsste jedes Byte z.B 00101111 genau spiegeln können, wäre in dem Beispiel dann 11110100. Habe schon gedacht über eine switch Tabelle, um jedoch 254 Zustände zu Spiegeln, fehlt mir erlich gesagt der Spass. Auf dem Mikrocontroller möchte ich ebenfalls nicht Spiegeln, da dort die Leistung etwas eingeschränkt ist.</p>
</blockquote>
<p>Kapier bestenfalls die Hälfte. Was willst du von uns?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356226</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 31 Aug 2007 15:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to Bitfolge in Byte spiegeln on Fri, 31 Aug 2007 15:44:10 GMT]]></title><description><![CDATA[<p>00101111 XOR 11111111 ist doch 11110100. Oder bin ich jetzt falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356227</guid><dc:creator><![CDATA[ähm]]></dc:creator><pubDate>Fri, 31 Aug 2007 15:44:10 GMT</pubDate></item><item><title><![CDATA[Reply to Bitfolge in Byte spiegeln on Fri, 31 Aug 2007 15:49:03 GMT]]></title><description><![CDATA[<p>Such dir was aus: <a href="http://graphics.stanford.edu/~seander/bithacks.html#BitReverseObvious" rel="nofollow">http://graphics.stanford.edu/~seander/bithacks.html#BitReverseObvious</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356234</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 31 Aug 2007 15:49:03 GMT</pubDate></item><item><title><![CDATA[Reply to Bitfolge in Byte spiegeln on Fri, 31 Aug 2007 15:52:08 GMT]]></title><description><![CDATA[<p>ups. so rum gespiegelt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1356237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1356237</guid><dc:creator><![CDATA[ähm]]></dc:creator><pubDate>Fri, 31 Aug 2007 15:52:08 GMT</pubDate></item><item><title><![CDATA[Reply to Bitfolge in Byte spiegeln on Sun, 02 Sep 2007 17:44:44 GMT]]></title><description><![CDATA[<p>ja ähm, du bist jetzt falsch, denn 1 xor 1 = 0 xor 0 = 0<br />
von Ney</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1357414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357414</guid><dc:creator><![CDATA[nexperty]]></dc:creator><pubDate>Sun, 02 Sep 2007 17:44:44 GMT</pubDate></item><item><title><![CDATA[Reply to Bitfolge in Byte spiegeln on Sun, 02 Sep 2007 22:46:59 GMT]]></title><description><![CDATA[<p>EDIT: Opps, sorry, im Link von Tim steht ja schon alles <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="🙂"
    /> Hätte mal vorher lesen sollen... *pfeiff* Ich lass es trotzdem stehen, falsch isses ja nicht.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14481">@noobc</a>:</p>
<pre><code class="language-cpp">namespace {
unsigned char reverse_table[256] = {0};

void init_table()
{
    for (unsigned i = 0; i &lt; 256; i++)
    {
        unsigned v = 0;
        for (unsigned b = 0; b &lt; 8; b++)
        {
            if (i &amp; (1 &lt;&lt; b))
                v |= (1 &lt;&lt; (7 - b));
        }
        reverse_table = static_cast&lt;unsigned char&gt;(v);
    }
}

} // namespace

void bit_reverse_byte_block(unsigned char* p, size_t l)
{
    if (reverse_table[1] == 0) // nicht threadsafe!
        init_table();

    while (l--)
    {
        *p = reverse_table[*p];
        p++;
    }
}
</code></pre>
<p>Lässt sich natürlich auch ohne lookup-table lösen, allerdings dürfte das deutlich langsamer sein.<br />
Wenn die 256 Byte für den Table kritisch sind (könnten sie ja sein wenns auf nem kleinen Mikrokontroller laufen muss), dann halt so:</p>
<pre><code class="language-cpp">void bit_reverse_byte_block(unsigned char* p, size_t l)
{
    while (l--)
    {
        unsigned char c = *p;
        *p = ((c &amp; 1) &lt;&lt; 7)
            | ((c &amp; 2) &lt;&lt; 5)
            | ((c &amp; 4) &lt;&lt; 3)
            | ((c &amp; 8) &lt;&lt; 1)
            | ((c &amp; 16) &gt;&gt; 1)
            | ((c &amp; 32) &gt;&gt; 3)
            | ((c &amp; 64) &gt;&gt; 5)
            | ((c &amp; 128) &gt;&gt; 7);
        p++;
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1357536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1357536</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 02 Sep 2007 22:46:59 GMT</pubDate></item><item><title><![CDATA[Reply to Bitfolge in Byte spiegeln on Tue, 04 Sep 2007 11:11:26 GMT]]></title><description><![CDATA[<p>Danke für die rege Antwortmasse, nun gehts einwandfrei. <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/1358652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1358652</guid><dc:creator><![CDATA[noobc]]></dc:creator><pubDate>Tue, 04 Sep 2007 11:11:26 GMT</pubDate></item></channel></rss>