Domino 9 und frühere Versionen > Entwicklung
Binärarithmetik in LotusScript
(1/1)
flaite:
Hi,
ich habe einen int. Der besteht ja binär aus einer Menge an 1 und 0.
Z.B. (ich spare mir in den folgenden Beispielen eine Menge führender Nullen, da ein int ja größer ist:
Dezimal -> Binär (^= hoch)
1 -> 0001 (2^0)
4 -> 0100 (2^2)
6 -> 0110 (2^2 + 2^1)
7 -> 0111 (2^2 + 2^1 + 2^0)
13->1101 (2^3 + 2^2 + 2^0)
Kann ich mit LotusScript irgendwie rausfinden, dass z.B. das 3. bit (von rechts) eines ints binär den Wert 1 hat?
Axel
Glombi:
Bin$(<integer>) liefert Dir die Binärdarstellung als String zurück.
Die Abfrage sähe dann so aus:
i = 13
bstr = Bin$(13)
If Left$(Right$( bstr, 3), 1 ) = "1" Then
Msgbox "Flag gesetzt"
End If
@MiddleBack gibt es leider nicht in Script, sonst könnte man das schöner schreiben.
Andreas
umi:
Ja, indem du eine Bitmaske mit AND verknüpfst
Beispiel:
--- Code: --- Dim i As Integer
Dim mask As Integer
i= 12
mask = 4
If (i And mask ) = mask Then
Messagebox "Bit 3 war gesetzt"
End If
--- Ende Code ---
flaite:
Danke euch beiden. Wobei Umis Lösung für diesen spezifischen Fall wohl eleganter ist:
Funktioniert:
--- Code: ---Sub Initialize
Dim testVar(3) As Integer
Dim mask As Integer
Dim i As Integer
Dim exponent(3) As Integer
testVar(0) = 7
testVar(1) = 3
testVar(2) = 9
testVar(3) = 12
exponent (0) = 2
exponent (1) = 2
exponent (2) = 2
exponent(3) = 2
Print "Die Bits fangen bei 0 an zu zählen. Das ganz rechte Bit von Bin$ ist Bit 0"
For i = Lbound(testVar) To Ubound(testVar)
mask = 2 ^ exponent(i)
If (testVar(i) And mask) Then
Print "Bit " &Cstr(exponent(i)) & " ist in " & Cstr(testVar(i)) & " gesetzt. (Bin$=" & Bin$(testVar(i))
Else
Print "Bit " & Cstr(exponent(i)) & " ist in " & Cstr(testVar(i)) & " NICHT gesetzt. (Bin$=" & Bin$(testVar(i))
End If
Next
Print "Das 2. rechteste Bit von Bin$ ist Bit 1"
Print "Das 3. rechteste Bit von Bin$ ist Bit 2"
Print " :-) "
End Sub
--- Ende Code ---
Könnte ich direkt für den offenen Userberechtigungen mit LotusScript Fall anwenden. Mach ich aber später.
Gruß Axel
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln