Ist >-1 in Der Arduino Sprache eine Investierung?

Gast #3288326
Lesenswert?

Jan R. schrieb:
> Ist >-1 in Der Arduino Sprache eine Investierung?

Also, ich investiere aktuell in Sachwerte und einen IMHO gut verteilten 
Fonds. Keine Ahnung, wie man das in Arduino beschreibt.

Jan R. schrieb:
> if(HTTP_req.indexOf("Var") > -1)

> was bedeutet dieses-1

Naja, steht doch da: Wenn HTTP.xxx größer als minus Eins ist, dann ...

> dass kann doch nur eine Inv sein, als wenn True
> rauskommt false und umgekehrt oder.

Sorry, aber Du brauchst dringend ein gutes C-Buch. Kaufe Dir 
schnellstmöglich das hier regelmäßig empfohlene K&R.
Gast #3288350
Lesenswert?

Wenn Dein Compiler nicht die Fassung verliert, ist:

>>if(HTTP_req.indexOf("Var") > -1)

eine 08/15 Abfrage. Wobei:

HTTP_req.indexOf("Var")

eine Integer Zahl liefert, was auch immer das sein soll und diese wird 
mit:

-1

verglichen. --- Also ganz normales C.
#3288358
Lesenswert?

In solchen Fällen empfiehlt es sich, ganz einfach in der Doku der Klasse 
nachzusehen, von der HTTP_req ein Objekt ist, was in der Beschreibung 
der Methode indexOf steht, welche Werte diese Memberfunktion 
zurückliefert und ob es da spezielle Werte wie zb -1 gibt, die irgendwas 
spezielles bedeuten.

Eigentlich ganz einfach, wie man solche Dinge rauskriegt.

> was bedeutet dieses-1 dass kann doch nur eine Inv sein,
> als wenn True rauskommt false und umgekehrt oder.

Nein, falsch.
-1 ist -1.
Gast #3288382
Lesenswert?

Man sollte bool'sche Vergleiche nicht mit "echten" Integer vergleichen 
mischen. Früher war das Resultat eines Vergleiches eine Integer Zahl. 
Normalerweise aber 0 (false) oder 1 (true). Von einem definierten -1 
habe ich noch nie gehört.
Es gab dann so Krücken wie:
if(integervariable1-integervariable2)
die auch dazu beigetragen haben das Verständnis für C zu fördern.
Gast #3288395
Lesenswert?

Man Leute, das ist ja schlimmer als Kindergarten hier - ein noch weniger 
Ahnung als der nächste.

Die -1 ist der Standard Rückgabe einer jeden vernüftigen PC-Funktion für 
einen ungültigen Wert. Die 0 ist nunmal ein korrekter Wert und ab da 
passt alles.
Gast #3288463
Lesenswert?

Ohje ich glaube ich muss euch mal sagen, wie ich darauf komme, dass das 
nicht bedeuten könnte.
1
digitalWirite(x, x^-1);


Wenn X= False oder Low war, wurde es im Nächten Programmdurchlauf oder 
Interrupt True oder High.

Ich  habe mich einwenig mit Arduinno Webservern beschäftigt für 
Hausautomatisierung und so. In einem Beispiel habe ich dann genau diesen 
Befehl wieder gefunden. Konnte mir aber nicht vorstellen, dass wenn ich 
in eine Checkbox einen Haken setze diese Dann einen False ausgibt.

Deshalb frage ich halt nochmal ob ich mich damals bei dem ^-1 getäuscht 
habe denn eigentlich kenne ich ein Not in C/C++ nur als ! vor der 
Variable.
#3288471
Lesenswert?

Jan R. schrieb:
> Ohje ich glaube ich muss euch mal sagen, wie ich darauf komme, dass das
> nicht bedeuten könnte.
>
1
digitalWirite(x, x^-1);
>

es gibt hier keinen Zusammenhang

Anstatt rumzuraten solltest du lieber die binären Operationen 
untersuchen und was es mit dem 2-er Komplement auf sich hat. Hinweis: -1 
ist in einer 2-er Komplementdarstellung ein int mit lauter 1 Bits. Also 
0xFFFF

Wendet man 0xFFFF XOR-mässig auf ein beliebiges Bitmuster an, dann 
werden alle Bits geflippt (weil in 0xFFFF ja alle Bits 1 sind)


Mit einem NICHT, wie du es da oben in einem Vergleich postulierst, hat 
das alles nicht das geringste zu tun.

> Deshalb frage ich halt nochmal ob ich mich damals bei dem ^-1 getäuscht
> habe denn eigentlich kenne ich ein Not in C/C++ nur als ! vor der
> Variable.


0x0000   ^ 0xFFFF   -> 0xFFFF
0xFFFF   ^ 0xFFFF   -> 0x0000

die XOR Operation dreht die Bits um.
Und: In C gilt: ein Ergebnis von 0 ist logisch falsch. Ein Ergebnis 
ungleich 0 gilt als logisch wahr. 0x0000 ist eine glatte 0 und daher 
gilt dieses Ergebnis als logisch falsch. Ein Ergebnis von 0xFFFF ist 
ungleich 0 und gilt daher als logisch wahr.

C-Buch!


Binäre Operationen:
& (und)
| (oder)
^ (xor)
~ (not)

Logische Operationen
&& (und)
|| (oder)
!  (nicht)


Binäre Operationen verknüpfen ihre Argumente bitweise und liefern wieder 
ein Bitmuster. Logische Operationen verknüpfen wWahrheitswerte und 
liefern wieder einen Wahrheitswert (mit dem Zusatz: 0 ist logisch 
falsch, ungleich 0 ist logisch wahr; der Operator liefert 0 für falsch 
und 1 für wahr)


Und nein: ein xor dreht Bits um. Das bedeutet aber nicht 
notwendigerwiese das aus true false wird oder umgekehrt.

Bsp:  5 ^ -1
1
Das Bitmuster für 5 (8-Bit)      0000 0101
2
Das Bitmuster für -1             1111 1111
3
                      XOR      ------------
4
                                 1111 1010
1111 1010 ist im 2-er Komplement eine negative Zahl. Nämlich welche?
1
    1111 1010       Ausgangspunkt
2
    0000 0101       alle Bits umdrehen
3
    0000 0110       +1
0000 0110 ist das Bitmuster für 6. Also ist 1111 1010 das Bitmuster für 
-6.
1
5 ^ -1  ->  -6
5 ist ungleich 0 und hat daher einen Wahrheitswert von TRUE
-6 ist ungleich 0 und hat daher einen Wahrheitswert von TRUE

Das Ergebnis müsste aber FALSE sein, damit das ein ! (nicht) sein kann. 
Daher
1
  x ^ -1    <!=>    !x
(Selbst dann, wenn es einen bestimmten Zahlenwert für x gibt, für den 
die Operation tatsächlich einer Nicht-Operation gleichkommt. Wir reden 
hier aber vom allgemeinen Fall, der für alle Zahlenwerte und nicht 
einfach nur 'zufällig' gilt)

Moral: schmeiss nicht binäre und logische Operationen durcheinander. Das 
sind 2 verschiedene Paar Schuhe.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren