LabVIEWForum.de - Formelknoten: Bitweise Verschiebung funktioniert anders als in C?

LabVIEWForum.de

Normale Version: Formelknoten: Bitweise Verschiebung funktioniert anders als in C?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe entdeckt, dass man C++ Code recyclen kann, indem man ihn einfach in einen LabView-Formelknoten einfügen kann. Das funktioniert soweit ganz gut. Was aber nicht klappt ist der Verschiebeoperator ( http://de.wikipedia.org/wiki/Bitweiser_Operator )

[attachment=52788]

In C tut dies folgendes: halbiere die Zahl nSubsidy, immer wenn nHeight ein Vielfaches von 525600 ist. Die Ausgabe sollte 40 sein.
In LabView wird aber schon halbiert ab 525600/2= 262800, also ist die Ausgabe hier 20.
irgendwie wird also aus der Zahl "0,5" rechts des Operators eine "1"

wie macht man es richtig mit möglichst wenig Code-Veränderung? Typkonvertierung im Formelknoten? Runden im Formelknoten?

umständliche Lösung wäre das hier:
Code:
int32 i;
for(i = 525600; i <= nHeight; i += 525600) nSubsidy -= nSubsidy/2;
mod(x,y) ?!

Gruß, Jens
Mal eine blöde Frage:
Wieso programmierst Du nicht gleich in C? Big Grin

Gruß Markus
Hallo buechling,

Zitat:irgendwie wird also aus der Zahl "0,5" rechts des Operators eine "1"
Ich kenn mich mit C(++) nicht so genau aus, aber du führst doch da eine Division mit INTs ("nHeight / 525600") durch!?
Wenn ich mich recht erinnere, führt C(++) kein automatisches Coercing/Typecasting wie LabVIEW aus…
Danke für die Tipps.
Ja das wird es wohl sein, C schneidet ab und LabView rundet...

mod(x,y) liefert leider den Rest und nicht den Quotient!
es es gibt wohl ceil(x) und floor(x)...

Code:
int32 nSubsidy = 40;

nSubsidy >>= floor(nHeight/525600);
das ist dann also die Lösung:
abrunden = floor(nHeight/525600) = C-Style
echtes runden = (nHeight/525600)
aufrunden = ceil(nHeight/525600)

ich progammiere ein LabView weil es grafisch einfach mehr Spass machen Smile
aber trotzdem habe ich manchmal alten code aus C-Anwendungen den in gern ohne viel Veränderung übernehmen würde..
und die Werbung versprach "Berechnet mathematische Formeln und Ausdrücke in einer C-ähnlichen Syntax im Blockdiagramm" 2hands
(16.04.2015 22:31 )buechling schrieb: [ -> ]und die Werbung versprach "Berechnet mathematische Formeln und Ausdrücke in einer C-ähnlichen Syntax im Blockdiagramm" 2hands

Naja, sie sagen nicht dass es C ist, sondern nur ähnlich! Cool Und damit lügen sie ja echt nicht! Einen kompletten C Compiler mit allen Spezialitäten und C-Kuriosa in LabVIEW einzubauen ware ja auch ein wenig idiotisch.
Referenz-URLs