Formelknoten: Bitweise Verschiebung funktioniert anders als in C? - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Formelknoten: Bitweise Verschiebung funktioniert anders als in C? (/Thread-Formelknoten-Bitweise-Verschiebung-funktioniert-anders-als-in-C) |
Formelknoten: Bitweise Verschiebung funktioniert anders als in C? - buechling - 11.04.2015 09:42 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; RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C? - jg - 11.04.2015 20:55 mod(x,y) ?! Gruß, Jens RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C? - Y-P - 14.04.2015 07:03 Mal eine blöde Frage: Wieso programmierst Du nicht gleich in C? Gruß Markus RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C? - GerdW - 14.04.2015 07:58 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… RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C? - buechling - 16.04.2015 22:31 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; 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 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" RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C? - rolfk - 20.04.2015 10:20 (16.04.2015 22:31 )buechling schrieb: und die Werbung versprach "Berechnet mathematische Formeln und Ausdrücke in einer C-ähnlichen Syntax im Blockdiagramm" Naja, sie sagen nicht dass es C ist, sondern nur ähnlich! 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. |