LabVIEWForum.de - Dualzahl umwandeln

LabVIEWForum.de

Normale Version: Dualzahl umwandeln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Abend,

Sitze hier an einem, ich denke doch recht einfachem Problem...aber naja, es ist schon spätWink

Grundproblem: Ich möchte eine in einem String repräsentierte Dualzahl mit 16 Stellen in einen dezimalen Wert umrechnen. Dabei symbolisiert Bit15 das Vorzeichen (0 oder 1), Bit14 bis Bit8 stehen für den Vorkommawert (2^6 bis 2^0), die Bits 7-4 für die Nachkommastelle (2^-1 bis 2^-4). Die restlichen Bits sind nicht belegt.

Hab bisher verschiedene kleine Ansätze ausprobiert (u.a. mit einer DLL), allerdings sieht nichts dermaßen vielversprechend aus, dass ich daran weiterarbeiten möchte...
Prinzipiell lese ich den String erstmal Zeichenweise ein und wandel die einzelnen Stellen in einen Integerwert um...nur wie weiter?

Hat jmd. so etwas schonmal gemacht, bzw. gibt es eine relativ einfache Möglichkeit das ganze zu implementieren?

thx und mfg
Schau dir mal diesen Thread an:
http://www.labviewforum.de/index.php?showtopic=18123
Ich denke, da kannst du dir was abschauen.

Gruß, Jens
Tja, die Angaben sind leider nicht eindeutig:[list]
[*]Bit 15 ist das Vorzeichen. Deutet das auf eine Zahl im 2er-Komlement-Format hin, oder ist Bit 15 das Vorzeichen (0 pos., 1 negat. oder umgekehrt?) und der Rest der Zahl der Betrag?<>
[*]Die nicht benutzten Bits 0..3, sind die immer Null?<>
[st]Unten 2 Beispiel wie man es machen könnte. Es wird angenommen, daß die Bits 0..3 immer Null sind.

Oben: Bits 0..14 sind der Betrag, wenn Bit15=1 dann Vorzeichen negativ.
Unten: Zahl ist im 2er Komplement-Format.

[attachment=31518]
Hallo, danke für eure Antworten.

@Lucki: Danke das schaut interessant aus. Bin jetzt nicht 100pro sicher, denke aber mal das dein oberes Bsp. zutreffen müsste. Muss ich morgen mal schauen. Könntest du mir vllt. noch in 1-2 Sätzen die Idee hinter deiner Umsetzung erklären. Steig da grad ehrlich gesagt nicht ganz durchTongue

mfg
Scan Value wandelt den Binärzahlstring in eine Zahl um. Und zwar als Ganzzahl interpretiert. Das Teilen durch 256 verschiebt die Kommastelle; setzt also die Regel Bits 7-4 sind die Nachkommastellen.

Wenn Bit 15 nur das Vorzeichen ist muss die Zahl noch umgerechnet werden entsprechend des oberen Beispiels, da Scan Value Zweierkomplementzahlen erwartet, wenn negative Zahlen auftreten können.
Unicorn hat ja schon etwas erklärt. Ich poste hier noch das VI, dann kannst Du mal selbst mit ein paar Werten experimentieren und das VI evtl. ändern.
Was bei so einer Anfrage extrem hilfreich gewesen wäre: Wenigstens ein Beispiel einer Zahl, und dem was hinten rauskommen muß, posten.
Lv09_img2[attachment=31520]
Offtopic2
17:20 Uhr? Spät? O
Du bist Student, Du bist doch gerade erst aufgestanden..... Big GrinWink

Gruß Markus

' schrieb:...aber naja, es ist schon spätWink
Danke, so funktionierts einwandfrei...Smile

@Markus:Tongue...

mfgWink
Referenz-URLs