Bitwise left and right shift operators << >>
按位移位运算符移动二进制对象的位值。 左操作数指定要移动的值。 右操作数指定要移动值中的位的位置数。 结果不是 lvalue。 两个操作数具有相同的优先顺序,并且是从左到右的关联。
| 运算符 | 使用量 |
|---|---|
| << | 指示要向左移动的位。 |
| >> | 指示要向右移动的位。 |
每个操作数都必须具有整数或枚举类型。 编译器对操作数执行整数提升,然后将右操作数转换为类型 int。 结果具有与左操作数相同的类型 (在算术转换之后)。
右操作数不应具有负值或大于或等于要移动的表达式的宽度 (以位计) 的值。 对这些值进行按位转换的结果是不可预测的。
如果右操作数的值为 0,那么结果为左操作数的值 (在通常的算术转换之后)。
<< 运算符使用零填充空位。 例如,如果 left_op 具有值 4019,那么 left_op 的位模式 (16 位格式) 为:0000111110110011表达式
left_op << 3 生成:0111110110011000表达式
left_op >> 3 生成:0000000111110110