Hallo zusammen if (!(PINB & (1<<PIN1))) ... ist sicherlich eine richtige Abfrage. Was aber passiert bitte bei dieser Abfrage ? if (~(PINB & (1<<PIN1))) ... Danke im voraus und Grüße
John Schmitz schrieb: > Was aber passiert bitte bei dieser Abfrage ? > > if (~(PINB & (1<<PIN1))) ... ! ist die logische Negierung aus 0 wird 1 aus nicht 0 wird 0 Bei der bitweisen Negierung mit ~ wirst du in deinem Fall jedoch nie 0 erhalten. Denn entweder das Bit ist 0, dann kommt bei ~ 0xFF raus Oder aber das Bit ist 1. Dann sind aber die anderen Bits deswegen trotzdem noch 0, und deren Negierung sorgt für 1 BIts im Ergebnis. Das Ergebnis hat dann zwar an der Stelle PIN1 eine 0, aber die restlichen Bits sind 1. -> in keinem der beiden Fälle kommt 0 raus. Und damit ist das ein Vergleich der immer wahr sein wird. Hinweis: Bei Bitfragen ist es oft hilfreich sich einfach die möglichen Fälle aufzuschreiben und die Operation(en) im Kopf zu machen. Bei dir ist nur 1 Bit beteiligt, daher gibt es nur 2 Fälle: Bit ist 0 bzw. Bit ist 1. Und dann siehst du dir einfach die Ergebnisse an und was sie in deinem konkreten Anwendungsfall bedeuten.
Okay - habe ich verstanden, so glaube ich. Also ALLE Bits werden EINZELN negiert. Das klärt meine Frage an sich. Grüße
Das ist genauso eine richtige Abfrage, die macht nur was anderes. a) Was versteht C unter "wahr" oder "falsch"? b) Was liefert (PINB & (1<<PIN1)) für ein Ergebnis (Typ und Wert?) c) siehe http://home.fhtw-berlin.de/~junghans/cref/SYNTAX/logical.html http://home.fhtw-berlin.de/~junghans/cref/CONCEPT/bitwise.html#one Oliver
John Schmitz schrieb: > Also ALLE Bits werden EINZELN negiert. Das klärt meine Frage an sich. Alle Bitoperationen arbeiten auf den Bits eines Bytes einzeln. Bitoperationen: & | ~ ^ Alle logischen Operationen liefern entweder 0 oder 1 und akzeptieren 0 (für 'falsch') und nicht 0 (für 'wahr') logische Operationen: && || !
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.