C++ 中的移位运算符是什么?
位移运算符包括右移运算符(>>),它将 shift_expression 的位向右移动,以及左移运算符(<<),它将 shift_expression 的位向左移动。
左移运算符导致 shift-expression 中的位向左移动 additive-expression 指定的位数。移位操作腾出的位位置用零填充。左移是逻辑移位(移出末尾的位将被丢弃,包括符号位)。
右移运算符导致 shift-expression 中的位模式向右移动 additive-expression 指定的位数。对于无符号数,移位操作腾出的位位置用零填充。对于有符号数,符号位用于填充腾出的位位置。换句话说,如果数字为正,则使用 0,如果数字为负,则使用 1。
示例
#include<iostream>
using namespace std;
int main() {
int a = 1, b = 3;
// a right now is 00000001
// Left shifting it by 3 will make it 00001000, ie, 8
a = a << 3;
cout << a << endl;
// Right shifting a by 2 will make it 00000010, ie, 2
a = a >> 2;
cout << a << endl;
return 0;
}输出
这将给出以下输出:
8 2
请注意,这些运算符对负数的行为差异很大。有符号负数的右移结果是实现相关的。如果将有符号数字左移以至于符号位受到影响,则结果是未定义的。
还有两个复杂的运算符可用于将值直接赋值给左边的值。它们是 <<= 运算符和 >>= 运算符。
请参阅 https://msdn.microsoft.com/en-us/library/336xbhcz.aspx 以更详细地检查移位运算符。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP