<?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[Lastbits Bestimmung]]></title><description><![CDATA[<p>Servus,</p>
<p>Ich versuche gerade diese funktion zu verstehen. Ich würde gerne verstehen was die Funktion macht und selbstverständlich wie sie es macht... Kann mir bitte jemand hier helfen... ICh weiß nur das es hier um einen streaming handelt...Ich wäre wirklich unendlich dankbar...</p>
<p><strong>unsigned LastBits(unsigned n)<br />
{<br />
return n &gt; 8 ? 0 : ((BYTE_ &lt;&lt; (8-n)) &amp; 0xff) &gt;&gt; (8-n);<br />
}</strong></p>
<p>Dabei ist BYTE= BUF_[POS_++]</p>
<p>Danke im Voraus,</p>
<p>Dan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224562/lastbits-bestimmung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 12:06:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224562.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Oct 2008 15:42:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lastbits Bestimmung on Sat, 11 Oct 2008 15:48:55 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>Ich versuche gerade diese funktion zu verstehen. Ich würde gerne verstehen was die Funktion macht und selbstverständlich wie sie es macht... Kann mir bitte jemand hier helfen... ICh weiß nur das es hier um einen streaming handelt...Ich wäre wirklich unendlich dankbar...</p>
<p><strong>unsigned LastBits(unsigned n)<br />
{<br />
return n &gt; 8 ? 0 : ((BYTE_ &lt;&lt; (8-n)) &amp; 0xff) &gt;&gt; (8-n);<br />
}</strong></p>
<p>Dabei ist BYTE= BUF_[POS_++]</p>
<p>Danke im Voraus,</p>
<p>Dan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597462</guid><dc:creator><![CDATA[Daniel A]]></dc:creator><pubDate>Sat, 11 Oct 2008 15:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to Lastbits Bestimmung on Sat, 11 Oct 2008 15:52:48 GMT]]></title><description><![CDATA[<p>Bitte [cpp]-Tags verwenden, das sieht dann so aus:</p>
<pre><code class="language-cpp">unsigned LastBits(unsigned n)
{
  return n &gt; 8 ? 0 : ((BYTE_ &lt;&lt; (8-n)) &amp; 0xff) &gt;&gt; (8-n);
}
</code></pre>
<p>Also den tertiären Bedingungsoperator <code>operator:?</code> kennst du hoffentlich. Wenn <code>n</code> grösser als 8 ist, wird 0 zurückgegeben, ansonsten der Ausdruck hinter dem Doppelpunkt.</p>
<p><code>BYTE_ &lt;&lt; (8-n)</code> ist ein Linksshift. Das Bitmuster wird nach links verschoben, und zwar um <code>(8-n)</code> Stellen. Die neu entstehenden Bits werden mit 0 aufgefüllt. Praktisch kommt das einer Multiplikation mit 2 gleich.</p>
<p><code>operator&gt;&gt;</code> , also der Rechtsshift-Operator macht das Gegenteil, verschiebt also das Bitmuster nach rechts und schneidet dabei die letzten Bits ab. Das entspricht einer Integerdivision durch 2 (abgerundet).</p>
<p><code>operator&amp;</code> ist die bitweise AND-Verknüpfung. Diese schaut für jedes Bit der zwei Operanden, ob beide 1 sind, und gibt nur dann 1 zurück.</p>
<p>Mit diesem Wissen solltest du den Ausdruck eigentlich entziffern können, ansonsten informier dich noch etwas genauer über Bit-Operationen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597470</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 11 Oct 2008 15:52:48 GMT</pubDate></item><item><title><![CDATA[Reply to Lastbits Bestimmung on Sat, 11 Oct 2008 15:57:18 GMT]]></title><description><![CDATA[<p>Daniel A schrieb:</p>
<blockquote>
<pre><code class="language-cpp">unsigned LastBits(unsigned n)
{
  return n &gt; 8 ? 0 : ((BYTE_ &lt;&lt; (8-n)) &amp; 0xff) &gt;&gt; (8-n);
}
</code></pre>
</blockquote>
<p>gehen wir einfach mal der reihe nach - ich schreibs erst mal ein wenig ausführlicher ^^</p>
<pre><code class="language-cpp">unsigned int LastBits(unsigned int value_in)
{
 if (n &gt; 8)/*Bitwerte = ... 8 4 2 1*/
 { //das heißt also, dass mind. das 5.bit (von hinten) belegt ist - in diesem fall gibt er 0 zurück
  return 0;
 }
 else
 {
  unsigned int tmp1 = BYTE_ &lt;&lt; (8-n); //byte wird um 8-n positionen (bits) nach links geshiftet
  unsigned int tmp2 = tmp1 &amp; 0xff; /*und mit dem and fallen alle stellen weg - außer die letzten 8
 ... xxxx xxxx xxxx &amp; 1111 1111
== ... xxxx xxxx xxxx &amp; 0000 .... 0000 1111 1111
==&gt; 0000 .... 0000 xxxx xxxx
===&gt; xxxx xxxx*/
  unsigned int tmp3 = tmp2 &gt;&gt; (8-n); //und wir shiften wieder (8-n) bit nach rechts
  return tmp3;
 }
}
</code></pre>
<p>gib vll mal den zusammenhang mit dazu.. ansonsten musst du auf nen kompetenteren warten <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>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597474</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 11 Oct 2008 15:57:18 GMT</pubDate></item><item><title><![CDATA[Reply to Lastbits Bestimmung on Sat, 11 Oct 2008 16:21:43 GMT]]></title><description><![CDATA[<p>Vielen vielen Dank für die Antworten und vor allem für die ausführliche Antwort unskilled... Dadurch könnte ich die Problematik besser verstehen...</p>
<p>Dan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1597490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1597490</guid><dc:creator><![CDATA[Daniel A]]></dc:creator><pubDate>Sat, 11 Oct 2008 16:21:43 GMT</pubDate></item></channel></rss>