wert &= (1<<nr);

Gast #685903
Lesenswert?
• ▲
▼
nein ich möchte eine Bestimmte Taster abfragen und das ganze in eine 
if-Bedingung stellen.
10 Schalter sind am µC angeschlossen(über 2 Ports) und im normalzustand 
alle geschlossen(nach Masse -> also alle 0)

if(wert&(1<<nr)...; //Taste gedrückt
else... //Taste nicht gedrückt
Gast #685907
Lesenswert?
• ▲
▼
Hi Daniel,

wieso sollte 0 & 1 gleich 1 sein?
wert = 0 heißt ja wert = 0b00000000 (jetzt mal von 8 bit ausgehend)
nr = 1 heißt (1 << nr) = 0b00000001

Das & macht jetzt eine binäre Verundung Deiner Variablen. Deswegen steht 
dann in wert aber nach wie vor eine 0. Wenn Du das letzte Bit setzten 
willst musst Du verodern (mit |=) nicht verunden.

Viele Grüße
Gast #685918
Lesenswert?
• ▲
▼
@Ampfing:

> wert = 0 heißt ja wert = 0b00000000 (jetzt mal von 8 bit ausgehend)
> nr = 1 heißt (1 << nr) = 0b00000001

Liest du hier:

> Bei wert=1 und nr=0 bekomme ich ...

;-)

Wahrscheinlich ist es so, wie Philipp geschrieben hat. Wenn nicht (was
aber unwahrscheinlicher ist), hat der Compiler einen Bug.
Gast #685922
Lesenswert?
• ▲
▼
@Ampfing:

> wert = 0 heißt ja wert = 0b00000000 (jetzt mal von 8 bit ausgehend)
> nr = 1 heißt (1 << nr) = 0b00000001

Liest du hier:

> Bei wert=1 und nr=0 bekomme ich ...

;-)

@Daniel:

Und? Was liefert dein neues Testprogramm?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren