Verfügbare Informationen zu "Stufe 2: Bits setzen, löschen, testen, kippen"
Qualität des Beitrags: Beteiligte Poster: antome Forum: Blitz3D Datenbank Forenbeschreibung: Übersichtliche von Mitgliedern erweiterbare Hilfe für Blitz3D Programmierer aus dem Unterforum: Mathematisches, Zeit, Zufall Antworten: 1 Forum gestartet am: Dienstag 31.01.2006 Sprache: deutsch Link zum Originaltopic: Stufe 2: Bits setzen, löschen, testen, kippen Letzte Antwort: vor 17 Jahren, 7 Monaten, 22 Tagen, 44 Minuten
Alle Beiträge und Antworten zu "Stufe 2: Bits setzen, löschen, testen, kippen"
Re: Stufe 2: Bits setzen, löschen, testen, kippen
antome - 16.09.2006, 15:32Stufe 2: Bits setzen, löschen, testen, kippen
Code:
Local x
;Setze die ersten 4 Bits = %1111 = 15
For i = 1 To 4
x = SetBit( x, i)
Next
Print x
;Lösche Bit 4 = wert 8 (15-8=7)
x = DelBit( x, 4)
Print x
;Kippe Bit 4 (Wert 8) um (7+8 = 15 )
x = SwapBit( x, 4)
;Kippe Bit 3 (Wert 4) um (15-4=11)
x = SwapBit( x, 3)
Print x
;Teste ob Bit Nummer 2 gesetzt ist.
If TestBit( x, 2) Then Print "Bit Nummer 2 ist gesetzt"
;Lösche x
x = 0
;Setze in x 2 Bits mit dem Wert 5
x = SetBitField( x, %0101)
Print x
;Lösche wenn gesetzt die ersten beiden Bits Wert 3, da aber nur Bit 1 gesetzt ist wird auch nur Bit 1 gelöscht.
; 5-1=4
x = DelBitField(x ,%0011)
Print x
;Kippe in Variable x das 1. 3. und 4. Bit
;Das erste Bit ist 0 und wird auf 1 gesetzt
;Das 3. Bit ist gesetzt und wird gelöscht
;Das vierte Bit ist 0 und wird auf 1 (8) gesetzt
x = SwapBitField( x, %1101)
Print x
;Teste ob eines der beiden Bits gesetzt ist (Bit 2 und Bit 4)
Print TestBitField( x, %1010, 0)
;Teste ob alle beiden Bits gesetzt sind.
Print TestBitField( x, %1010, 1)
WaitKey()
End
;Int = SetBit( Int , Bitnummer )
;Setzt in einer Integer Variable ein Bit von 1 bis 32
Function SetBit( vx , num)
Local set
set = 1 Shl (num-1)
Return vx Or set
End Function
;Int = DelBit( Int , Bitnummer )
;Löscht in einer Integer Variable ein Bit von 1 bis 32
Function DelBit (vx, num)
Local del
del = 1 Shl (num-1)
del = -1 Xor del
Return vx And del
End Function
;Int = SetBit( Int , Bitnummer )
;Löscht oder Setzt in einer Integer Variable ein Bit von 1 bis 32
;Wenn es vorher gesetzt war ist es nachher gelöscht und umgekehrt.
Function SwapBit(vx, num)
Return vx Xor (1 Shl (num-1))
End Function
;Bool = TestBit( Int , Bitnummer )
;Testet ob ein Bit gesetzt ist von 1 bis 32
;Wenn das Bit gesetzt ist, dann ist der Rückgabewert 1 = True
Function TestBit(vx, num)
Local test
test = 1 Shl (num-1)
test = vx And test
Return test Shr(num-1)
End Function
;Int = SetBitField( int, Bitfield )
;Setzt ein oder mehrere Bit in einer IntegerVariable
Function SetBitField( vx , num)
Return vx Or num
End Function
;Int = DelBitField( int, Bitfield )
;Löscht ein oder mehrere Bit in einer IntegerVariable
Function DelBitField(vx, num)
Return vx And (-1 Xor num )
End Function
;Bool = TestBitField(int, Bitfiled, mode=0)
;Testet eine IntegerVariable darauf ob mehrere Bits gesetzt sind.
;mode = 0 (Standart) -> Ergebnis ist TRUE/Wahr = 1 wenn ein Bit des getesteten Bitfields gesetzt ist.
;mode = 1 -> Ergebnis ist TRUE/Wahr = 1 wenn alle Bits des getesteten Bitfields gesetzt ist, sonst FALSE/Falsch = 0
Function TestBitField(vx, num, mode=0)
Local tmp
tmp = vx And num
If mode = 0
If vx And num = 0
Return 0
Else
Return 1
EndIf
ElseIf mode = 1
If tmp = vx
Return 1
Else
Return 0
EndIf
EndIf
End Function
;int = SwapBitField(int , BitField)
;kippt alle Bytes in der IntegerVariablen um auf der Position in der im BitField eine 1 gesetzt ist
Function SwapBitField(vx, num)
Return vx Xor num
End Function
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum Blitz3D Datenbank
Stufe 2: Bits setzen, löschen, testen, kippen - gepostet von antome am Samstag 16.09.2006
Ähnliche Beiträge wie "Stufe 2: Bits setzen, löschen, testen, kippen"
Fächerwahl Stufe 11 - patrick (Donnerstag 22.03.2007)
Stufe 2 im Forum - riku1997 (Samstag 12.05.2007)
Muss meine mine auf stufe 10 ausbauen...... - champi (Dienstag 15.05.2007)
stufe 2 der namenssuche ^^ - freyja (Freitag 17.03.2006)
Stufe 8 Steigerungen - alanthaniel (Donnerstag 17.02.2005)
Alle Ausbaustufen Stufe [4]: Überlebenskünstler - onkeldude (Mittwoch 27.06.2007)
Wo Leveln mit welcher Stufe und wo farme ich was? - Klotz (Sonntag 13.08.2006)
Traumpaar der Stufe - Devil (Sonntag 03.09.2006)
Karosserie Versteifungssatz, jemand erfahrung - Scooterb7t (Donnerstag 03.06.2010)
41 Talente mit Stufe 60 - Anjun (Dienstag 28.11.2006)