09-20-2025, 10:20 PM
(This post was last modified: 09-21-2025, 12:50 AM by ahenry3068.)
About packing bit's into an INT64.
Code: (Select All)
Function SETBIT64 (INPUTVAR As _Integer64, BIT_TO_SET As _Unsigned Integer)
Dim MASK As _Integer64
If BIT_TO_SET > 63 Or BIT_TO_SET < 0 Then
Print
Print " CANT SET OUT OF RANGE BIT: "; BIT_TO_SET
Print
End
End If
MASK = &B0000000000000000000000000000000000000000000000000000000000000001
MASK = _ShL(MASK, BIT_TO_SET)
INPUTVAR = INPUTVAR Or MASK
SETBIT64 = INPUTVAR
End Function
Function UNSETBIT64 (INPUTVAR As _Integer64, BIT_TO_UNSET As _Unsigned Integer)
Dim MASK As _Integer64
If BIT_TO_UNSET > 63 Or BIT_TO_UNSET < 0 Then
Print
Print " CANT UNSET OUT OF RANGE BIT: "; BIT_TO_SET
Print
End
End If
MASK = &B0000000000000000000000000000000000000000000000000000000000000001
MASK = _ShL(MASK, BIT_TO_UNSET)
MASK = Not MASK
INPUTVAR = INPUTVAR AND MASK
UNSETBIT64 = INPUTVAR
End Function
Function TESTBIT64 (INPUTVAR As _Integer64, BIT_TO_TEST As _Unsigned Integer)
Dim MASK As _Integer64
If BIT_TO_TEST > 63 Or BIT_TO_TEST < 0 Then
Print
Print " CANT TEST OUT OF RANGE BIT: "; BIT_TO_TEST
Print
End
End If
MASK = &B0000000000000000000000000000000000000000000000000000000000000001
MASK = _ShL(MASK, BIT_TO_TEST)
If (INPUTVAR And MASK) = MASK Then
TESTBIT64 = _TRUE
Else
TESTBIT64 = _FALSE
End If
End Function

