Hi Leute,
irgendwie bin ich zu blöd um das im Titel genannte Problem zu lösen.
Wie kann ich mit einer kurzen Bitoperation/-vergleich überprüfen, ob
mindestens ein Bit auf high ist?
Meine Idee war folgende:
1 | if ((PORTB<<2) > 3) { process(); };
|
hierbei schiebe ich ja die Bits um 2 nach links, sodass Bit Nr6 und 7
"verschwinden". Dann wäre jede mögliche Kombination größer 3.
Aber das funktioniert nicht.
Habe ich das Bitshifting nicht ganz verstanden? Werden die
herausgeschobenen Bits auf der anderen Seite wieder eingeschoben?
Mein anderer Lösungsweg ist dieser:
1 | if ((PORTB & 1<<PORTB0)|(PORTB & 1<<PORTB1)|(PORTB & 1<<PORTB2)|(PORTB & 1<<PORTB3)|(PORTB & 1<<PORTB4)|(PORTB & 1<<PORTB5)){
|
2 | process();
|
3 | };
|
Allerdigns ist das etwas zu lang.
Das geht bestimmt eleganter.
Außerdem sollte die Operation nicht zu viele Takte in Anspruch nehmen.
Grüße
Der Anfänger