I forgot how you remove bits from flag values.
state = thing | thing3
What is the opposite, to remove a state?
state = thing | thing3
What is the opposite, to remove a state?
SuperStrict Framework BRL.StandardIO Const FLAG_ONE:Byte = 1, FLAG_TWO:Byte = 2, FLAG_THREE:Byte = 4, FLAG_FOUR:Byte = 8, FLAG_FIVE:Byte = 16 Local Flags:Byte = 0 'Add a flag to a variable Flags:| FLAG_THREE 'Check if a variable contains a flag If Flags & FLAG_THREE Then Print "Hello, flag three!" 'Remove a flag from a variable Flags:~ FLAG_THREE 'Check if a variable contains a flag (again...) If Flags & FLAG_THREE Print "Hello, flag three!" Else Print "Flag three has left! :(" End If Flags:| FLAG_ONE | FLAG_TWO | FLAG_THREE 'Invert flags Local Flags_Inverted:Byte = ~Flags If Flags_Inverted & FLAG_ONE Then Print "ONE is here!" If Flags_Inverted & FLAG_TWO Then Print "TWO is here!" If Flags_Inverted & FLAG_THREE Then Print "THREE is here!" If Flags_Inverted & FLAG_FOUR Then Print "FOUR is here!" If Flags_Inverted & FLAG_FIVE Then Print "Five is here!"
Function setBit(flag% Var, bit%) flag :| bit End Function Function clearBit(flag% Var, bit%) flag :& ~bit End Function Function toggleBit(flag% Var, bit%) flag :~ bit End Function Function testBit%(flag%, bit%) If (flag & bit) Then Return True End Function
SuperStrict Local flag% SetBit(flag, 7) Print Bin(flag) Print CheckBit(flag, 7) Print ClearBit(flag, 7) Print Bin(flag) Print CheckBit(flag, 7) Print ToggleBit(flag, 7) Print Bin(flag) Print CheckBit(flag, 7) End Function CheckBit%(value%, bit%) Return (value & (1 Shl bit)) Shr bit End Function Function SetBit%(value% Var, bit%) value :| (1 Shl bit) End Function Function ClearBit%(value% Var, bit%) value :& ~(1 Shl bit) End Function Function ToggleBit%(value% Var, bit%) value :~ (1 Shl bit) End Function