>>

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

Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.