TIA Umwandlung von Word in Bit

Beiträge
53
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bekomme von einem übergeordneten System ein WORD-Variable z.B. 4097.

Binär wäre dies: 0001000000000001

Ich würde jetzt gerne jede "Bitstelle" einer Boolschen-Variable zuordnen.

In diesem Fall habe ich 16 Bollsche Variablen, von denen dann 2 TRUE sind.
Hat da jemand eine IDEE wie man dies einfach durchführen kann? Gibt es dafür irgendwelche fertigen Funtkionen?

Vielen Dank für eure Hilfe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus,

Falls es deine Steuerung unterstützt, könnetst du mittels Slice-Zugriff die einzelnen Bits des Word deinen Boolschen Variablen zuweisen.

Bsp.:
Code:
Bit_0 := myWord.%X0;
Bit_1 := myWord.%X1;
.
.
.
Bit_15 := myWord.%X15;

Das ganze kannst du in eine Funktion schreiben mit einem Eingangsparameter als WORD und 16 Ausgangsparameter mit Bool oder als Rückgabewert in ein Boolarray, etc.
Dann hast du nur Bausteinintern den Slicezugriff.

Mit freundlichen Grüßen
Piit


Gesendet von iPhone mit Tapatalk
 
Wenn man gar nicht weiß welche CPU man hat/haben wird oder was die kann ---> die Bits "ausmaskieren" kann jede CPU (notfalls in FUP/KOP):
Code:
Bit_0 := (myWord AND 16#0001) <> 0;
Bit_1 := (myWord AND 16#0002) <> 0;
Bit_2 := (myWord AND 16#0004) <> 0;
Bit_3 := (myWord AND 16#0008) <> 0;
Bit_4 := (myWord AND 16#0010) <> 0;
.
.
Bit_15 := (myWord AND 16#8000) <> 0;
Falls Du das Zerlegen in eine Funktion packst, dann zuerst das Eingangsword in ein lokales/temporäres Word umkopieren und dann das lokale Word zerlegen und nicht 16x das Eingangsword lesen (für den Fall daß die Übergabe als Referenz erfolgt, weil da könnte sich das Eingangsword zwischen den Zugriffen ändern). Außerdem ist ein Zugriff auf eine lokale Variable oft effizienter als auf einen Eingangsparameter.

Harald
 
Zurück
Oben