LabVIEWForum.de
u8-->u4 - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: u8-->u4 (/Thread-u8-u4)



u8-->u4 - ekempf0 - 24.11.2008 15:10

hallo zusammen,

ich habe ein problem mit einer zahlenumwandlung... und zwar möchte ich eine u8-dezimalzahl direkt in eine 4-bit-binärzahl umwandeln, oder alternativ ein boolesches array mit vier zeilen, bei dem jede zahl nacheinander in das array geschrieben wird. als beispiel habe ich die funktion array dezimieren verwendet, jedoch werden die geraden zahlen in eins, die ungeraden ins andere array geschrieben.

vielen dank für eure hilfe


u8-->u4 - RoLe - 24.11.2008 16:11

' schrieb:ich habe ein problem mit einer zahlenumwandlung... und zwar möchte ich eine u8-dezimalzahl direkt in eine 4-bit-binärzahl umwandeln, oder alternativ ein boolesches array mit vier zeilen, bei dem jede zahl nacheinander in das array geschrieben wird.

mit etwas Boolesche Algebra sollte das möglich sein.
Mit einem AND zuerst die Bits ausmaskieren (x0F und xF0) und das U4 High 4 Bit nach rechts schieben.


u8-->u4 - Lucki - 24.11.2008 17:52

Das was RoLe vorschlägt, ist nur eine von mehreren Möglichkeiten, Deine Aufgebenstellung ist überheupt nicht eindeutig.
RoLe nimmt an, daß in der U8-Zahl in Bit 3 (oder 4?) eine Vorzeicheninformation für die neue "I4" Zahl steckt. Kann sein, muß aber nicht. Die Anführungszeichen habe ich verwendet, weil es dieses Zahlenfomat in LabVIEW gar nicht gibt. Eine echte 4-Bit-Zahl (Bereich -8 .. +7) mit Vorzeicheninformation in BIT 3 ist in LabVIEW (und auch in keiner anderen mir bekannten Sprache) als interne Repräsentation nicht möglich.

Du mußt also lückenlos von 0..255 ansagen, (am besten als Tabelle mit 2 Spalten 255 Zeilen, linke Spalte = alt U8-Zahl , rechte Spalte = neue Zahl I8, [I4 ist nicht möglich]), wie die Konvertierung erfolgen soll. Dann ist es ein Leichtes, Deinen Wunsch punktgenau zu erfüllen.
Beispiele:
0..7 --> 0..7
8..15 --> -1..-8
16..23 --> 0..7 (oder was weiß ich)
...
...

oder:
0..7 --> 0..7
8..255 --> 7

Anmerkungen zur Terminologie:
"8 bit Dezimalzahl unwandeln": Die Interne Repräsentation ist immer binär, da gibt es nichts mehr umzuwandeln. Es gibt lediglich als Darstellungmöglichkeiten in den Anzeigen die Optionen Dezimal, Binär usw.

"boolsches Array mit 4 Zeilen": Der Begriff Zeile wird in Verbindung mit 2D-Arrays verwendet. Meintest Du das, oder meintest Du nur einen 1D-Array mit 4 Elementen? (Dafür gibt es die Funktion Boolsches Array in Zahl).


u8-->u4 - olmethn - 24.11.2008 18:32

ich glaube das das Problem daran liegt, das wenn er den Befehl "Zahl in Boolscher Array" verwendet er einen Array mit 8 Elementen bekommt obwohl er einen mit 4 benötigt.
ich würde es dann so machen:
[attachment=15514]


u8-->u4 - ekempf0 - 24.11.2008 18:42

hallo olmethn. danke dir, genauso gehts, super!!!

@lucki: bitte meine schwächen in der terminologie zu entschuldigen, bin lv-noob ;-)