Hollywood unterstützt die folgenden Bit-Operatoren:
Mit den Bit-Operatoren können Sie mit Ausdrücken auf Bit Ebene arbeiten. Diese Vorgänge sind alle beschränkt auf 32-Bit Werte. Hier ist eine Beschreibung der Bit Operatoren:
Der Linksverschiebungs-Operator (<<) verschiebt alle Bits des a
-Operanden b
mal
nach links. Die durch diesen Vorgang erzeugten Bitlöcher auf der rechten Seite
der Zahl werden mit Nullen aufgefüllt. b
darf nicht negativ sein. Eine Zahl a
x
-mal nach links verschieben ist dasselbe, wie diese Zahl mit 2^x zu multiplizieren.
Aber natürlich ist die Verschiebung viel schneller als die Multiplikation.
Beispiele:
7 << 1 = %111 << 1 = %1110 = 14 (7 * 2^1 = 14) 256 << 4 = %100000000 << 4 = %1000000000000 = 4096 (256*2^4=4096) |
Der Rechtsverschiebungs-Operator (>>) verschiebt alle Bits des a
-Operanden b
mal
nach rechts. Diesmal werden die Bitlöcher auf der linken Seite der Zahl mit
Nullen aufgefüllt. Wenn Sie eine arithmetische Verschiebung benötigen
(Bitlöcher werden mit dem höchstwertigen Bit aufgefüllt), nutzen Sie bitte
stattdessen den Befehl Sar(). b
darf auch hier nicht negativ sein. Eine Zahl
x
-mal nach rechts verschieben ist gleich, wie diese Zahl 2^x zu dividieren.
Aber natürlich ist die Verschiebung viel schneller als dividieren, wenn eine
Ganzzahlergebnis präzise genug für Ihre Zwecke ist. Hier sind einige Beispiele:
65 >> 1 = %1000001 >> 1 = %100000 = 32 (65\2^1=32) 256 >> 4 = %100000000 >> 4 = %10000 = 16 (256\2^4=16) |
Die bitweise Operatoren And
, Xor
und Or
sind im Grunde dieselben wie die logischen
And-
/ Xor-
/ Or
-Operatoren mit dem Unterschied, dass &, ~ und | auf Bit Ebene
arbeiten. Das heißt, sie vergleichen alle 32-Bit-Operanden a
und b
und setzen
die Bits in der Ergebnismenge nach diesem Vergleich. Der Operator And
wird
das Bit zurückgeben, wenn beide Bits in den Operanden a
und b
auf
dieser Position festgelegt sind. Der Xor
-Operator wird das Bit im Rückgabewert
setzen, wenn eines der beiden Bits 1 ist, aber nicht, wenn beide 1 haben. Der
Or
-Operator setzt dann ein Bit im Rückgabewert, wenn eine oder beide der Operanden
das Bit auf derselben Position gesetzt ist. Eine Tabelle:
Beispiele:
%10011001 & %11101000 = %10001000 ; Bitweise And %10011001 ~ %11101000 = %01110001 ; Bitweise Xor %10011001 | %11101000 = %11111001 ; Bitweise Or |
Der unäre Negation-Operator (~) wird eine bitweise Inversion auf die Zahl verwenden. Alle Bits werden invertiert. Bitte beachten Sie, dass der Wert immer vor der Inversion in ein 32-Bit Ganzzahl umgewandelt wird. So könnte man eine Menge von führenden Einsen bekommen. Beispielsweise:
~%00000000 = %11111111111111111111111111111111 ~%10111001 = %11111111111111111111111101000110 |
Um das richtige Resultat mit diesen nicht eingeplanten 1er zu erhalten, verwenden
Sie einfach zusätzlich den bitweise And
-Operator (&) auf den resultierenden
Wert. Zum Beispiel, wenn Sie nur 8 Bits wie im obigen Beispiel umgekehrt haben
wollen, verwenden Sie das bitweise And
mit 255:
~%00000000 & %11111111 = %11111111 ~%10111001 & %11111111 = %01000110 |