Pages: [1]   Go Down
Author Topic: Boolean invertieren  (Read 898 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 1
Posts: 353
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

jetzt kommt wahrscheinlich die dumme Frage des Tages:
Gibt es einen Befehl um eine boolean zu invertieren? Also aus "true" "false" machen und umgekehrt?
Also mit ifs und so krieg ich das schon hin. Aber das sieht voll unelegant aus.
Habs schon mit "~" probiert, aber das klappt nicht. Wohl, weil eine Boolean bei C nicht nur ein Bit ist. (Hab ich hier mal gehört)

Irgendwie steh ich auf dem Schlauch und find da nichts besseres.

gruß/hk007
Logged

Arduino 1.0.5 | Arduino UNO & MEGA | Arduino 1.54r2 mit DUE

Offline Offline
Edison Member
*
Karma: 21
Posts: 1407
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
boolean state = false;
state= !state;
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Naja in C (nicht Cpp oder C#) ist der Boolean nichtmal "out of the box" enthalten. Ich weiß nicht genau was du vor hast, aber du könntest Beispielsweise mit einer enum arbeiten und dann "WAHR" den Wert 0 und "FALSCH" den Wert 1 zuweisen.
Logged

Offline Offline
Sr. Member
****
Karma: 1
Posts: 353
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
boolean state = false;
state= !state;

Hi,
tja .... funzt. Danke. Doch so einfach smiley-eek-blue

Wobei ich mal zu meiner Ehrenrettung bemerken darf, daß ich mir die Referenz vor der Frage eigentlich genau durchgelesen habe. Da bin ich auch auf das "!" gestossen.
Aber dabei stand folgendes:
Quote
Boolean Operators
These can be used inside the condition of an if statement.
if (!x) {
  // ...
}
Heisst doch, daß man das nur in der Abfrage verwenden darf und nicht in einer Zuweisung.
« Last Edit: October 19, 2012, 01:45:56 pm by hk007 » Logged

Arduino 1.0.5 | Arduino UNO & MEGA | Arduino 1.54r2 mit DUE

im Neckartal
Offline Offline
Jr. Member
**
Karma: 0
Posts: 60
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,
ich würde das eher so interpretieren:

... daß man das nur in der Abfrage verwenden kann darf und nicht in einer Zuweisung.

Grüßle Bernd
Logged

Theoretisch gibt es keinen Unterschied zwischen Theorie und Praxis ...

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20298
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Naja in C (nicht Cpp oder C#) ist der Boolean nichtmal "out of the box" enthalten. Ich weiß nicht genau was du vor hast, aber du könntest Beispielsweise mit einer enum arbeiten und dann "WAHR" den Wert 0 und "FALSCH" den Wert 1 zuweisen.
TRUE und 1 sind das gleiche und auch HIGH.  Übrigens in einer Bedingung auch jeder positive Wert verschieden von 0.
Ebenso ist FALSE, 0 und LOW das gleiche.

Beispiel:

if (A) {...}
ist wahr wenn A =1, oder A=4 ecc ist.
ist falsch wenn A=0 ist.
if (!A){...}
ist falsch wenn A =1, oder A=4 ecc ist.
ist wahr wenn A=0 ist.

Die Negation kann man überall machen; im Bedingungen oder Zuweisungen.
Sogar als Verschieden oder Ungleichzeichen: A!=B (A nicht gleich B). != kann man auch als <> schreiben.

Das ~ negiert bitweise. Das heist jedes Bit eines Bytes einzeln.
Das heißt es invertiert die Zahl B01010101 in B10101010. Das B ist in diesem Fall nur die Darstellungsart der Zahl, nicht die interne Verarbeitung im Controller. Der Controller rechnet immer Binär, die Darstellung erfolgt für den Menschen Dezimal, Binär, Hexadezimal, oktal, als Zeichen oder als Fließkomazahl, je nach Formatierungsanweisung:  siehe http://arduino.cc/en/Serial/Print

Eine Binärzahl ist als eine 1Byte Zahl definiert.

In der Elektronik wird die Negation auch als Strich über der Bezeichnung eines Pins geschrieben.

Grüße Uwe
« Last Edit: October 19, 2012, 06:05:16 pm by uwefed » Logged

Pages: [1]   Go Up
Jump to: