INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Formelknoten: Bitweise Verschiebung funktioniert anders als in C?



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

11.04.2015, 09:42 (Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2015 10:06 von buechling.)
Beitrag #1

buechling Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Jan 2015

2013
2010
DE



Formelknoten: Bitweise Verschiebung funktioniert anders als in C?
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 )

   

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;
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.04.2015, 20:55
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C?
mod(x,y) ?!

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.04.2015, 07:03
Beitrag #3

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C?
Mal eine blöde Frage:
Wieso programmierst Du nicht gleich in C? Big Grin

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.04.2015, 07:58 (Dieser Beitrag wurde zuletzt bearbeitet: 14.04.2015 07:59 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C?
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…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.04.2015, 22:31 (Dieser Beitrag wurde zuletzt bearbeitet: 16.04.2015 22:36 von buechling.)
Beitrag #5

buechling Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Jan 2015

2013
2010
DE



RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C?
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2015, 10:20 (Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2015 10:23 von rolfk.)
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Formelknoten: Bitweise Verschiebung funktioniert anders als in C?
(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.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Eigenschaftsknoten in ein SubVI oder anders übersichtlicher machen Philipp_O 3 2.555 29.07.2022 07:42
Letzter Beitrag: Kiesch
  Programmieren im Formelknoten DrHoas 9 12.801 26.06.2021 23:22
Letzter Beitrag: Martin.Henz
  Mischungsverhältnis in Formelknoten umsetzten mikadm 3 3.288 10.08.2020 13:27
Letzter Beitrag: GerdW
  Code für Formelknoten auf dem Frontpanel bearbeiten? spacz 2 3.747 24.09.2018 11:39
Letzter Beitrag: spacz
  Unterschied zw. Formelknoten und Formel VI hansi9990 7 6.280 01.10.2017 12:34
Letzter Beitrag: hansi9990
  Formelknoten "funktioniert nicht" Peppiiii 8 6.018 18.04.2017 17:42
Letzter Beitrag: GerdW

Gehe zu: