Forum: Mikrocontroller und Digitale Elektronik Was bedeutet dieser C Ausdruck


von Hardware I. (bensen83)


Lesenswert?

Hallo Leute was bedeutet denn diese C Ausdruck?   !=    ist das nicht 
ungleich, wenn ja, was bedeutet das hier:   ^= ???

Helft mir ;-)  Danke

von Justus S. (jussa)


Lesenswert?

A ^= B;

ist

A = A XOR B;

wird zum Toggeln benutzt, siehe
http://www.mikrocontroller.net/articles/Bitmanipulation

von Hardware I. (bensen83)


Lesenswert?

OK, danke, und das !=   ? Ist das ungleich?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> A != B
ist ein Vergleichsoperator und liefert TRUE oder FALSE zurück

> A ^= B
ist eine Kurzschreibweise für
> A = A^B;
und das ist eine kombinatorische Verknüpfung.
Hier speziell die Antivalenz: http://de.wikipedia.org/wiki/XOR-Gatter

Andere Kurzschreibweisen sind z.B.
A += B;   -->   A = A+B;
A -= B;   -->   A = A-B;
A *= B;   -->   A = A*B;
usw. usf.

Das steht aber in jedem brauchbaren C-Buch.
Insbesondere im Standardwerk von K&R Programmieren in C.

von ollibass (Gast)


Lesenswert?

ja. während != mehr zu == gehört (ungleich und gleich), gehört ^= mehr 
zu += und -= (also berechnungen, wo ein teil gleich als ergebnis benutzt 
wird)

von Hardware I. (bensen83)


Lesenswert?

Würde dann das ergebnis bei diesem Code hier nicht andauernd hin und Her 
tockeln?   Soll ne Entprellung von nem taster sein:


  if (hatch_alt!=IO_HATCH_IN)
  {
    if (timer_timespan(hatch_seit)>ENTPRELLZEIT)
    {
      hatch_akt=hatch_alt;
        }
  } else
  {
    hatch_alt^=(u08)1;
        hatch_seit=timer_get_timestamp();
  }

von Hardware I. (bensen83)


Lesenswert?

Ah schon ok, die haben es mit einem low aktiven eingang gemacht denke 
ich.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>... denke ich.
Na dann is gut, denke ich ;-)

Weil (ausser dir) keiner weiß, was timer_timespan und 
timer_get_timestamp machen, und was z.B. IO_HATCH_IN ist, könnte der 
Code alles tun...

von Matthias L. (Gast)


Lesenswert?

>Weil (ausser dir) keiner weiß, was timer_timespan und...


Ich vermute mal, die Fkt nimmt einen Zeitstempel.

von Hardware I. (bensen83)


Lesenswert?

Ja macht sie, hat sich erledigt, danke leute

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.