Hallo Zusammen, ich hab da ein Verständnisproblem für die Abfrage auf "0"; PINB hat bei mir den Signalzustand 1111 1011; Warum wird dann die nachfolgende "if" Anweisung nur bei diesem Signalzustand ausgeführt??; der Klammerausdruck (1<<PINB2) ergibt doch 0000 0100; wenn ich jetzt 1111 1011 UND 0000 0100 verknüpfe erhalte ich doch 0000 0000 das ganze negiert erhalte ich 1111 1111; die nachfolgende if Anweisung wird doch dann immer ausgeführt egal welchen "PINB" Wert ich habe???? Ich würde mich freuen, wenn mir jemand helfen könnte. carly
! ist keine (bitweise) Negation. Es ist eine logische Operation. Verständlicher wäre das geschrieben als:
1 | if ((PINB & (1 << PINB2)) == 0) { |
2 | ...
|
3 | }
|
Die (bitweise) UND-Verknüpfung ,filtert' das Bit PINB2 heraus, und die Bedingung ist erfüllt, wenn dieses Bit 0 ist, da alle anderen Bits nach dem UND immer 0 sind. Das Ergebnis hängt damit ausschließlich vom Wert von PINB2 ab.
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.