Freigeben über


Schiebeoperatoren: >> und <<

expression << expression
expression >> expression

Hinweise

Die bitweise Schiebeoperatoren lauten wie folgt:

  • Verschiebung nach rechts (>>)

  • Verschiebung nach links (<<)

Beide Operanden des Shift-Operatoren müssen ganzzahlige Typen sein.Integral Angebote erfolgen gemäß den Regeln, die in beschriebenen Ganzzahlige Höherstufungen.Der Typ des Ergebnisses ist der Typ des linken Operanden gefördert.Der Wert eines Ausdrucks UMSCHALT rechts x >> y ist X / 2y, und der Wert eines Ausdrucks UMSCHALT links x << y is x * 2y.

Das Ergebnis ist undefiniert, wenn der rechte Operand eines Ausdrucks UMSCHALT negativ ist oder wenn der rechte Operand größer oder gleich der Anzahl der Bits im linken Operand (heraufgestuften) ist.Keine Shift-Operation wird durchgeführt, wenn der rechte Operand 0 (null) ist.

Left Shift-Operator bewirkt, dass das Bitmuster in den ersten Operanden durch die durch den zweiten Operanden angegebene Bitanzahl nach links verschoben werden.Frei werden, indem Sie die Shift-Operation Bits werden mit Nullen aufgefüllt.Dies ist eine logische Verschiebung statt einer Operation UMSCHALT und drehen.

Der Rechtsschiebeoperator verursacht das Bitmuster in den ersten Operanden durch die durch den zweiten Operanden angegebene Bitanzahl nach rechts verschoben werden.Frei werden, indem Sie die Shift-Operation Bits werden mit Nullen aufgefüllt für nicht signierte Mengen.Für signierte Mengen ist das Vorzeichenbit in die Bitpositionen weitergegeben.Die Verschiebung ist eine logische Verschiebung, wenn der linke Operand eine Menge ohne Vorzeichen ist. Ansonsten ist es eine arithmetische Verschiebung.

Microsoft-spezifisch

Das Ergebnis einer Verschiebung nach rechts eine negative Menge mit Vorzeichen ist implementierungsabhängig.Obwohl MicrosoftC++ überträgt die meisten signifikante Bit Bitpositionen, füllen es gibt keine Garantie, dass andere Implementierungen auch tun werden.

Beispiel

// expre_Shift_Operators.cpp
// compile with: /EHsc
// Demonstrate shift operators
#include <iostream>
using namespace std;

int main() {
   cout   << "5 times 2 is " << (5 << 1) << endl
         << "20 divided by 4 is " << (20 >> 2) << endl;
}

Output

  
  

Siehe auch

Referenz

Ausdrücke mit binären Operatoren

C++-Operatoren

Operatorrangfolge und Assoziativität

Konzepte

Bitweise Schiebeoperatoren