Diese Seite ist auch in 2 anderen Sprachen verfügbar.
Sprache wechseln  

>>

[Bitwise Operators]

Beschreibung

Der rechte Right-Shift-Operator bewirkt, dass die Bits des linken Operanden um die durch den rechten Operanden angegebene Anzahl von Positionen nach rechts verschoben werden.

Syntax

variable >> number_of_bits

Parameter

variable: Erlaubte Datentypen: byte, int, long.
number_of_bits: Eine Zahl < = 32. Erlaubte Datentypen: int.

Beispielcode

int a = 40;     // Binär: 0000000000101000
int b = a >> 3; // Binär: 0000000000000101, oder 5 dezimal

Anmerkungen und Warnungen

Wenn x um y Bits (x >> y) nach rechts verschoben wird und das höchste Bit in x eine 1 ist, hängt das Verhalten vom genauen Datentyp von x ab. Wenn x vom Typ int ist, ist das höchste Bit das Vorzeichenbit, das bestimmt, ob x negativ ist oder nicht, wie oben diskutiert wurde. In diesem Fall wird das Vorzeichenbit aus esoterischen historischen Gründen in niedrigere Bits kopiert:

int x = -16; // Binär: 1111111111110000
int y = 3;
int result = x >> y; // Binär: 1111111111111110

Dieses Verhalten, das als Zeichenerweiterung bezeichnet wird, ist häufig nicht das gewünschte Verhalten. Stattdessen möchte man möglicherweise, dass Nullen von links nach innen verschoben werden. Es stellt sich heraus, dass die Rechtsverschiebungsregeln für vorzeichenlose int-Ausdrücke unterschiedlich sind. Man kann also eine Typumwandlung verwenden, um zu verhindern, dass die von links kopierten Werte verwendet werden:

int x = -16; // Binär: 1111111111110000
int y = 3;
int result = (unsigned int)x >> y; // Binär: 0001111111111110

Wenn du die Vorzeichenerweiterung sorgfältig vermeidest, kannst du den rechten Umschaltoperator >> verwenden, um die Division durch Potenzen von 2 zu berechnen. Zum Beispiel:

int x = 1000;
int y = x >> 3; // Integer-Division von 1000 durch 8, wodurch y = 125.

Siehe auch