Autor Thema: Binärarithmetik in LotusScript  (Gelesen 1586 mal)

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Binärarithmetik in LotusScript
« am: 25.07.05 - 16:22:21 »
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
« Letzte Änderung: 25.07.05 - 16:39:16 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Glombi

  • Gast
Re: Binärarithmetik in LotusScript
« Antwort #1 am: 25.07.05 - 16:49:24 »
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


Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Binärarithmetik in LotusScript
« Antwort #2 am: 25.07.05 - 16:51:49 »
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
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Binärarithmetik in LotusScript
« Antwort #3 am: 25.07.05 - 18:46:27 »
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

Könnte ich direkt für den offenen Userberechtigungen mit LotusScript Fall anwenden. Mach ich aber später.

Gruß Axel
« Letzte Änderung: 25.07.05 - 18:54:11 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz