wert &= (1<<nr);

Gast
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
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
@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
@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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.