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
Operatorrangfolge und Assoziativität