Bits

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Der Eisvogel

Betreff: Bits

BeitragSa, Feb 21, 2009 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
In BB konnte man ja mittels "variable and 8" feststellen, ob das Bit 8 besetzt ist.
Ich hab das jetzt mal in BM versucht und irgendwie geht das aber nicht.
Hier der Code: [AUSKLAPPEN]
If Int(as_game[i,2]) And 1 Then DrawLine 50,70+i*20,450,70+i*20
If Int(as_game[i,2]) And 2 Then DrawLine 50,51+i*20,450,51+i*20
If Int(as_game[i,2]) And 4 Then DrawLine 50,71+i*20,450,71+i*20


Bei diesem Code werden immer alle 3 Linien gezeichnet, obwohl das nicht sein sollte. muss ich das in BM dann anders machen?

Also ich hoffe ihr versteht was ich meine.

Zur Verdeutlichung: Ich möchte soetwas machen wie bei LoadTexture aus BB.
EDIT: Ich meine von diesem Befehl die TextureFlags.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

kog

BeitragSa, Feb 21, 2009 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Sowas?

Code: [AUSKLAPPEN]
Local i:Int=3


If i&1 Print  "ok"
If i&2 Print  "ok2"

Der Eisvogel

BeitragSa, Feb 21, 2009 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop genau. Jetzt gehts. Danke!
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Artemis

BeitragSa, Feb 21, 2009 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Immer daran denken:
And, Or sind logische Operatoren, welche nur mit True und False "rechnen" können
Die Binären Pendants sind & und |.

Vertex

BeitragSa, Feb 21, 2009 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
In BB konnte man ja mittels "variable and 8" feststellen, ob das Bit 8 besetzt ist.

Ich hoffe, du meinst das nicht wörtlich.

Um es nochmal zu verdeutlichen:
Code: [AUSKLAPPEN]
SuperStrict

Framework BRL.Blitz

Const FLAG_ONE   : Int = %00000001 ' Dezimal = 1
Const FLAG_TWO   : Int = %00000010 ' Dezimal = 2
Const FLAG_THREE : Int = %00000100 ' Dezimal = 4

Local flags : Int = 0

' Flags One und Two setzen
flags |: FLAG_ONE ' flags = flags | FLAG_ONE
flags |: FLAG_TWO ' flags = flags | FLAG_TWO
DebugFlags(flags)

' Flag One entfernen
flags &: (~FLAG_ONE) ' flags = flags & ~FLAG_ONE
DebugFlags(flags)

End

Function DebugFlags(value : Int)
   If value & FLAG_ONE Then ..
      DebugLog("Flag One gesetzt")
   If value & FLAG_TWO Then ..
      DebugLog("Flag Two gesetzt")
   If value & FLAG_THREE Then ..
      DebugLog("Flag Three gesetzt")
End Function

(Kann den Code nicht testen. Event. muss "|:" zu "Neutral" ersetzt werden).

Es ist also nicht gut, wenn man hier mit Dezimalwerten wie 5 arbeitet. Das ist nämlich die Kombination aus %100 und %001 bzw. FLAG_ONE und FLAG_TWO. Aus der 5 siehst du nicht sofort heraus, dass es sich um die beiden Flags handelt. Da die Konstanten durch den Compiler am Ende eh durch ihre Werte ersetzt werden, gibt es da auch keine Performancebedenken. Also immer mit Konstanten arbeiten!

mfg olli
vertex.dreamfall.at | GitHub

Der Eisvogel

BeitragSa, Feb 21, 2009 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber irgendwie kostet mich alles ca 5 FPS.
Also immer wenn ich das Abfrage, dann hab ich grad mal eben 5 FPS weniger.
Ist das Normal?

EDIT: Die Drei Zeilen werden im Moment 19 mal in der Schleife ausgeführt. Es soll aber eigentlich bis zu 30 mal ausgeführt werden.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group