Forum: Mikrocontroller und Digitale Elektronik Binäres UND will nicht wie ich


von Matthias (Gast)


Lesenswert?

Hallo zusammen!

Ich will mit einer binären UND-Verknüpfung überprüfen, ob bestimmte Bits 
gesetzt sind.
1
if(0xFF & 0x01)
funktioniert.

Definiere und initialisiere ich eine Variable
1
unsigned char cData = 0xFF;
scheitert
1
if(cData & 0x01)
aber.

Wo steckt der verflixte Denkfehler?
Danke!

Gruß
Matthias

von Matthias (Gast)


Lesenswert?

Der Debugger spuckt mit immer dezimal 14 raus. Hab ich einfach nur eine 
doofe Schutzverletzung? :/

von Matthias (Gast)


Lesenswert?

Sorry für meine Blödheit. Ich hätte erst mal C lernen sollen, bevor ich 
anfange hier dumme Fragen zu stellen.

von Matthias (Gast)


Lesenswert?

Wieso was ist an meiner Frage blöd?

von Hellou (Gast)


Lesenswert?

1
if(cData & 0x01)

Mhm, von manchen Compilern ist mir bekannt, dass die logische 
Operationen auf 16 Bit erweitern.

probier mal ob das was bringt:
[c]
if ((u8)((cData) & (u8) 0x01 )
[/]

von (prx) A. K. (prx)


Lesenswert?

Hellou schrieb:

> Mhm, von manchen Compilern ist mir bekannt, dass die logische
> Operationen auf 16 Bit erweitern.

Und weshalb sollte das hier ein Problem sein?

Ein dieser Arbeitsweise entsprechendes Ergebnis ist im C Standard sogar 
ausdrücklich vorgeschrieben.

Also logische Operationen gelten in C übrigens && || !, nicht & | ^ ~

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
Noch kein Account? Hier anmelden.