Kombinationen von 1, 2, 4, 8, 16, etc. zurückrechnen

  • Hallo,
    ich bin gerade dabei ein Script zu schreiben, was mir dabei hilft einen Xbox Controller zu konfigurieren und Funktionen zuzuweisen.
    Wenn ich die Buttons abrufe, die (auch gleichzeitig) gedrückt werden, bekomme ich Zahlen zurück die so aussehen: 1, 2, 4, 8, 16, 32, etc.
    Wenn ich dann 2 Buttons gleichzeitig drücke bekomme ich z. B. eine 9 (ergibt sich aus 1 und 8), so ähnlich wie bei den Flags von MsgBox, welche man kombinieren kann.
    Nun muss ich ausrechnen, dass sich in der 9 nur die 1 und 8 befinden kann, wie mache ich das?
    Danke schonmal

  • Jedes dieser Zahlen entspricht einem Bit in einer Binärzahl.
    Man muss also abfragen ob an der jeweiligen Stelle das Bit gesetzt ist oder nicht.
    Auf diese Weise kann man verschiedene Informationen in einer einzigen Zahl kombinieren und diese dann leicht wieder trennen.

    Für dein Beispiel:

    AutoIt
    $Check = 9
    
    
    For $i = 0 To 32
    	If BitAND($Check, 2^$i) Then ConsoleWrite(2^$i & " ist in $Check enthalten" & @CRLF)
    Next
    • Offizieller Beitrag

    Hier mal aus meiner Bsp-Kiste, umgesetzt mit Checkboxen: