Bitweise ganzzahlige Operationen

Letzte Aktualisierung: 12. Feb. 2025
Bitweise Integer-Operationen (SPSS Modeler)

Diese Funktionen ermöglichen, ganze Zahlen als Bitmuster zu manipulieren, die Komplement-Werte-von-Zweien darstellen, wobei die Bitposition N das Gewicht 2**N hat.

Bits werden von 0 aufwärts nummeriert. Diese Operationen funktionieren so, als ob das Vorzeichenbit einer ganzen Zahl endlos nach links erweitert wird. Daher weisen positive ganze Zahlen überall oberhalb des werthöchsten 0-Bits auf, negative ganze Zahlen 1-Bits.

Tabelle 1. CLEM Bitweise ganzzahlige Operationen
Funktion Ergebnis Beschreibung
~~ INT1 Ganze Zahl Ergibt das bitweise Komplement der ganzen Zahl GANZZ1. Das bedeutet, dass für jede Bitposition, für die INT1 den Wert 0 hat, eine 1 im Ergebnis vorhanden ist. Es ist immer wahr, dass ~~ INT = –(INT + 1).
INT1 || INT2 Ganze Zahl Das Ergebnis dieser Operation ist das bitweise "inklusive Oder" von GANZZ1 und GANZZ2. Im Ergebnis steht also eine 1 für jede Bitposition, bei der bei GANZZ1 und/oder bei GANZZ2 der Wert 1 steht.
INT1 ||/& INT2 Ganze Zahl Das Ergebnis dieser Operation ist das bitweise "exklusive Oder" von GANZZ1 und GANZZ2. Im Ergebnis steht also eine 1 für jede Bitposition, bei der entweder bei GANZZ1 oder bei GANZZ2 der Wert 1 steht, nicht jedoch bei beiden.
INT1 && INT2 Ganze Zahl Ergibt das bitweise "Und" der ganzen Zahlen GANZZ1 und GANZZ2. Im Ergebnis steht also eine 1 für jede Bitposition, bei der sowohl bei GANZZ1 als auch beiGANZZ2 der Wert 1 steht.
INT1 &&~~ INT2 Ganze Zahl Ergibt das bitweise "Und" von GANZZ1 und das bitweise Komplement von GANZZ2. Im Ergebnis steht also eine 1 für jede Bitposition, bei der bei GANZZ1 der Wer 1 und beiGANZZ2 der Wert 0 steht. Dies entspricht INT1 && (~~INT2) und ist nützlich zum Löschen von INT1-Bits, die in INT2 festgelegt sind.
INT << N Ganze Zahl Ergibt das Bitmuster von GANZZ1, um N Positionen nach links verschoben. Ein negativer Wert von N führt zu einer Verschiebung nach rechts.
INT >> N Ganze Zahl Ergibt das Bitmuster von GANZZ1, um N Positionen nach rechts verschoben. Ein negativer Wert von N führt zu einer Verschiebung nach links.
INT1 &&=_0 INT2 Boolesch Entspricht dem booleschen Ausdruck INT1 && INT2 /== 0, ist jedoch effizienter.
INT1 &&/=_0 INT2 Boolesch Entspricht dem booleschen Ausdruck INT1 && INT2 == 0, ist jedoch effizienter.
integer_bitcount(INT) Ganze Zahl Zählt die Anzahl der 1- oder 0-Bits in der Zweierkomplementdarstellung von GANZZ. Wenn GANZZ nicht negativ ist, ist N die Anzahl der 1-Bits. Wenn GANZZ negativ ist, gibt dieser Wert die Anzahl der 0-Bits an. Aufgrund der Vorzeichenerweiterung gibt es unendlich Viele 0-Bits in nicht negativen ganzen Zahlen bzw. 1-Bits in negativen ganzen Zahlen. Folgendes ist immer der Fall: integer_bitcount(INT) = integer_bitcount(-(INT+1)).
integer_leastbit(INT) Ganze Zahl Gibt die Bitposition N des niedrigstwertigen Bits an, das in der ganzen Zahl GANZZ gesetzt wurde. N ist die höchste Potenz von 2, durch die sich GANZZ ohne Rest teilen lässt.
integer_length(INT) Ganze Zahl Ergibt die Länge von GANZZ als ganze Zweierkomplementzahl in Bit. Das heißt, N ist die kleinste ganze Zahl, sodass INT < (1 << N) if INT >= 0 INT >= (–1 << N) if INT < 0. Wenn INT nicht negativ ist, erfordert die Darstellung von INT als Ganzzahl ohne Vorzeichen ein Feld mit mindestens N Bits. Alternativ sind, unabhängig vom Vorzeichen, mindestens N+1 Bit erforderlich, um GANZZ als ganze Zahl mit Vorzeichen darzustellen.
testbit(INT, N) Boolesch Testet das Bit an Position N in der ganzen Zahl GANZZ und ergibt den Status von Bit N als booleschen Wert, der bei 1 "wahr" und bei 0 "falsch" ist.