Forum: Mikrocontroller und Digitale Elektronik & und && wo sind die Underschiede


von UND-Verknüpfung (Gast)


Lesenswert?

void LED_Anzeige(void)
{
if(Spannung & 0b00000001)
LED_0_an;
else
LED_0_aus;
if(Spannung & 0b00000010)
LED_1_an;
else
LED_1_aus;
if(Spannung & 0b00000100)
LED_2_an;
else
LED_2_aus;
...
}

funktioniert dieses Konstrukt mit dem & , wenn "Spannung" bis zu 8 Bit 
groß ist, oder müsste die Verknüpfung durch ein "&&" realisiert werden?

Wann benutzt man "&"
und wann benutzt man "&&" ?

mfg

von Logger (Gast)


Lesenswert?

if((Spannung & 0b00000100)&&(Spannung & 0b00001000))
  LED_explode();

von Lutz (Gast)


Lesenswert?

C-Buch kaufen. Stehen auch die Antworten auf Deine garantiert nächsten 
Fragen drin.

Kurzform: & => bitweises UND
          && => logisches UND

von ich (Gast)


Lesenswert?

& ist eine Logische, bitweise undverknüpfung
&& ist eine kombination bei Bedingungen... also

0b00000001 & 0b00001111 -> Ergibt 0b00000001

if(var1 == true && var2 == false) -> prüft ob var1 true UND var2 false 
ist.


oft gemachter fehler mit & und = ist:

if(var1 = true) -> springt immer in die If-Klausel, da er erfolgreich 
var1 true zugewiesen hat...

von Knut (Gast)


Lesenswert?

Ich persönlich falle immer und immer wieder darauf rein:

[c]
/* Gucken ob Pin gesetzt */

if (PINX,pxy) {...}

anstatt

if (PINX & (1<<pxy)) {...}




Knut

von Knut (Gast)


Lesenswert?

ach ja
[/c]


:-)

von UND-Verknüpfung (Gast)


Lesenswert?

ok, das hilft schonmal.

Angenommen "Spannung" ist eine 16 Bit Variable.

Sind die obigen Ausdrücke dann zulässig, oder müssten dann 0b... mit 16 
Nullen und Einsen folgen?

mfg

von Knut (Gast)


Lesenswert?

UND-Verknüpfung schrieb:
> Sind die obigen Ausdrücke dann zulässig
Ja, aber warum eigentlich so umständlich?


Knut

von Lukas K. (carrotindustries)


Lesenswert?

ich schrieb:
> da er erfolgreich
> var1 true zugewiesen hat...

Es gibt in C kein 'Zuweisung erfolgreich'. AFAIK gibt
1
foo=bar;
 bar zurück, ich kann mich aber auch irren.

von ich (Gast)


Lesenswert?

Ich glaube das geht nur mit 8 bit. Ich würde aber auch sonst 0x01, 0x02, 
0x04 nehmen. Bzw dann 0x0001, 0x0002, 0x0004...

Ist das so gemeint, dass die 8 bit in "Spannung" angeben, welche LED an 
gehen soll und welche nicht? Dann würde ich ehrlich gesagt die 8 LEDs an 
einen Port vom µC machen und dann "PORTx = Spannung;"......

Luk4s K. schrieb:
> ich schrieb:
>> da er erfolgreich
>> var1 true zugewiesen hat...
>
> Es gibt in C kein 'Zuweisung erfolgreich'. AFAIK gibt

Ich meine das mal gelesen zu haben. Jedenfalls springt er bei "if(var = 
0)" und auch bei "if(var = 1)" erfolgreich in den IF... selbst 
(unfreiwillig) getestet^^

von Lukas K. (carrotindustries)


Lesenswert?

ich schrieb:
> Ich meine das mal gelesen zu haben.

Das ist auf jeden Fall falsch. Hier irgendwo im Forum gibt es einen 
Beitrag dazu.

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.