偏移符:>>和<<

expression << expression
expression >> expression

备注

位移位运算符,如下所示:

  • 右移位 (>>)

  • 向左的移位 (<<)

移位运算符的两个操作数必须是整数类型。 不可或缺的促销活动中所述的规则执行整数提升。 已升级的左操作数的类型相同的结果类型。 右移表达式 x 的值 >> y 是 x / 2y,左移表达式 x 的值和 << y is x * 2y.

右移位表达式的操作数为负数或右边的操作数是否大于或等于 (升级) 的左操作数中的位数,则结果为未定义。 如果右边的操作数为零 (0),执行无移位运算。

左移位运算符的位模式会导致第一个操作数向左移动第二个操作数指定的位数。 移位操作空出的数位位用零填充。 这是逻辑移位 shift 和旋转操作而不是。

右移位运算符的位模式会导致第一个操作数向右移动第二个操作数指定的位数。 空出的数位的移位运算的位是用零填充的无符号的数量。 有符号的数量,为符号位传播到空出的位置。 转变是逻辑移位,如果左的操作数是无符号的数量。 否则,它是算术移位。

Microsoft 专用

有符号的负数量的右移位的结果是依赖于实现的。 虽然MicrosoftC++传播以填充空出的位的位置的最高有效位其他实现还将此,不能保证。

示例

// 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

  
  

请参见

参考

与二元运算符的表达式

C++运算符

运算符优先级和结合性

概念

按移位运算符