Bitwert zu Einzelne True/False Werten umwandeln

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Firstdeathmaker

Betreff: Bitwert zu Einzelne True/False Werten umwandeln

BeitragSo, Mai 29, 2005 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ihr kennt das bestimmt, auch bei manchen Befehlen von BB kommt es vor das man nur einen Wert übergibt, der sich danach richtet welche Optionen man aktivieren möchte, z.B. entityfx:

Effekt = Effekt, das zugewiesen werden soll:
+1=leuchtend
+2=Vertexfarbe statt Pinselfarbe benutzen
+4=flache Schattierung
+8=Nebeleffekt deaktivieren
+16=schaltet Backface Culling aus
+32=VertexAlpha aktivieren (ab v1.82)

Meine Frage ist jetzt: Wie kann man schnell gerausfinden welche Werte jetzt true oder false sein sollen? Also wenn ich eine Zuordnung habe:

1=J
2=K
4=Z
8=SZ
16=T

und ich jetzt den Wert 18 übergebe, wie kann ich dann nachher schnell überprüfen das die 2 und die 16 da drin stecken, ohne z.B. das ganze Ding zubtrahieren zu müssen:

T=floor(wert/16)
if T wert=wert-16
SZ=floor(wert/8)
if SZ wert=wert-8

u.s.w., oder gibts da keine einfachere Möglichkeit?
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
  • Zuletzt bearbeitet von Firstdeathmaker am So, Mai 29, 2005 15:35, insgesamt einmal bearbeitet
 

hitokiri

BeitragSo, Mai 29, 2005 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst die zahl doch einfach in binary umwandeln. das ganze sind ja nichts als bitflags.
wandele es mit bin() um und dann lies es als string aus und gehe die liste aufsteigend vom wert 0 bis 128 durch
 

Dreamora

BeitragSo, Mai 29, 2005 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann auch direkt Bitoperationen nehmen (siehe shl, shr sowie die verwendung von AND / OR / NOT in diesem Zusammenhang)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Artemis

BeitragSo, Mai 29, 2005 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
so:BlitzBasic: [AUSKLAPPEN]
If dievriablemitdenwerten And 1 Then ...;also wenn der bit für 1 gesetzt ist dann..
;und so weiter

Firstdeathmaker

BeitragSo, Mai 29, 2005 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Jonas: Es funktioniert, nur, könntest du so nett sein und mir erklären warum das funktioniert? Ich verstehe nicht warum AND so funktionert, ich dachte immer nur, das man mit AND nur zwei logische Aussagen zu einer Verknüfpfen kann:

variable1=1
variable2=1

if variable1 and variable2 then....


Warum kann man auf einmal damit abfragen, das an einer bestimmten Position ein Bit gesetzt ist?
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Dreamora

BeitragSo, Mai 29, 2005 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil die "alten Blitzbasic" (BB3D / BB+) AND für logische und bit operationen benutzen. Oben wird es dabei als Bitoperation genutzt und nicht als logisches AND
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Firstdeathmaker

BeitragSo, Mai 29, 2005 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, Danke, ich habs nun verstanden.


(Für alle die es noch nicht verstanden haben: http://www.oreilly.de/catalog/...r/ch11.pdf, ich hab ein wenig gegoogelt um ne Erklärung zu bekommen).
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

hitokiri

BeitragSo, Mai 29, 2005 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
echt ? hm... das hättense in der command reference aber auch deutlicher erklären können Razz

Firstdeathmaker

BeitragSo, Mai 29, 2005 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Dort habe ich es ja nicht auf Anhieb kapiert. Manchmal ist es so, dass man erst etwas nachschlägt, es nicht versteht, weitere Erklärungen sucht, es versteht, und einem dann auf einmal auch die erste Referenz etwas sagt.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group