<?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[Verstehe if() nicht]]></title><description><![CDATA[<pre><code class="language-cpp">unsigned char *DruckerStatusRegister;
unsigned char Status;

DruckerStatusRegister = 0x379;
Status = *DruckerStatusRegister;

if( Status &amp; 0%10000000 )
{
    //Drucker ist frei
}
</code></pre>
<p>Den Code habe ich in meinem Buch gefunden, aber ich verstehe die<br />
if( Status &amp; 0%10000000 ) Zeile nicht. Was wird da abgefragt, was bezweckt das einzelne &amp;? Kann mir da jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/254569/verstehe-if-nicht</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 18:18:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/254569.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Nov 2009 09:41:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verstehe if() nicht on Wed, 18 Nov 2009 09:41:59 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">unsigned char *DruckerStatusRegister;
unsigned char Status;

DruckerStatusRegister = 0x379;
Status = *DruckerStatusRegister;

if( Status &amp; 0%10000000 )
{
    //Drucker ist frei
}
</code></pre>
<p>Den Code habe ich in meinem Buch gefunden, aber ich verstehe die<br />
if( Status &amp; 0%10000000 ) Zeile nicht. Was wird da abgefragt, was bezweckt das einzelne &amp;? Kann mir da jemand helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1809767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1809767</guid><dc:creator><![CDATA[Fragenmaster]]></dc:creator><pubDate>Wed, 18 Nov 2009 09:41:59 GMT</pubDate></item><item><title><![CDATA[Reply to Verstehe if() nicht on Wed, 18 Nov 2009 10:04:50 GMT]]></title><description><![CDATA[<p>Das hier: <code>0%10000000</code> ist kein C, höchstens eine proprietäre Spracherweiterung eines Compilers. Wahrscheinlich soll das eine binäre Zahlkonstante sein, also der Dezimalwert 128. Man würde das in C normalerweise hexadezimal als <code>if (Status &amp; 0x80)</code> schreiben.</p>
<p>Das wiederum ist eine bitweise UND-Verknüpfung. Das Ergebnis ist 0x80 (also ungleich 0 und damit &quot;wahr&quot;), wenn das siebte Bit in Status gesetzt ist. Es ist 0 (also &quot;falsch&quot;), wenn das siebte Bit in Status nicht gesetzt ist. Das siebte Bit des Statusregisters, das vorher gelesen wurde, steht offensichtlich, wenn es gesetzt ist, für den Druckerstatus &quot;frei&quot;.</p>
<p>Darf man fragen, für welches System dieses Programm sein soll? Beim PC ist die Adresse des LPT1-Statusregisters zufällig 0x379, allerdings ist das ein I/O-Port, man kommt da nicht über eine Zeigerdereferenzierung ran.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1809781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1809781</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 18 Nov 2009 10:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to Verstehe if() nicht on Wed, 18 Nov 2009 18:11:01 GMT]]></title><description><![CDATA[<p>Also hier steht in dem Buch, dass bei 0x379 &quot;das Statusregister der ersten Druckerschnittstelle bei einem gängigen Intel-PC liegt&quot;. Desweiteren steht da noch, dass die Adresse für ein &quot;normales Anwendungsprogramm&quot; unereichbar ist und nur interessant wenn man einen Treiber schreiben möchte.</p>
<p>Und danke für die Erklärung, nach mehrmaligen durchlesen kann ich mir jetzt etwas darunter vorstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1810038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1810038</guid><dc:creator><![CDATA[Fragenmaster]]></dc:creator><pubDate>Wed, 18 Nov 2009 18:11:01 GMT</pubDate></item><item><title><![CDATA[Reply to Verstehe if() nicht on Wed, 18 Nov 2009 19:07:47 GMT]]></title><description><![CDATA[<p>Tut nichts zur Sache, aber wenn ich mich nicht irre, dann würde das auch für einen Treiber nicht funktionieren, da die Adresse ein IO-Port ist, d.h. u.a. dass der Zugriff über spezielle Maschinenbefehle (IN und OUT) läuft. Ich hab grad mal den Linux-Treiber für den Parallelport dazu rausgesucht:<br />
<a href="http://www.gelato.unsw.edu.au/lxr/source/drivers/parport/parport_pc.c?a=i386" rel="nofollow">http://www.gelato.unsw.edu.au/lxr/source/drivers/parport/parport_pc.c?a=i386</a></p>
<p>Die inb/outb-Aufrufe sind die Portzugriffe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1810064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1810064</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 18 Nov 2009 19:07:47 GMT</pubDate></item></channel></rss>