9.5 Bit-Operatoren

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


Navigation zeigen