C++中的左移(<<)、右移(>>)运算符
在 C++ 中,左移运算符( << )和右移运算符( >> )是位运算符,用于对二进制位进行操作,以下是它们的详细介绍:
1. 左移运算符( << ):左移运算符将一个数的二进制位向左移动指定的位数。移位后,右侧空出的位用 0 填充,左侧超出的位被舍弃。其语法为 a << n ,其中 a 是要进行移位的操作数, n 是移位的位数。左移一位相当于乘以 2,左移 n 位相当于乘以 2 的 n 次方 。例如:
#include <iostream>
using namespace std;
int main() {
int num = 5; // 二进制表示为 00000101
int result = num << 2; // 左移 2 位,结果为 00010100,即 20
cout << result << endl;
return 0;
}
2. 右移运算符( >> ):右移运算符将一个数的二进制位向右移动指定的位数。对于有符号整数,执行算术右移,即如果原来的数是正数,左侧空出的位用 0 填充;如果是负数,左侧空出的位用 1 填充。对于无符号整数,执行逻辑右移,左侧空出的位始终用 0 填充。其语法为 a >> n ,其中 a 是要进行移位的操作数, n 是移位的位数。右移一位相当于除以 2(向下取整),右移 n 位相当于除以 2 的 n 次方 (向下取整)。例如:
#include <iostream>
using namespace std;
int main() {
int num = 20; // 二进制表示为 00010100
int result = num >> 2; // 右移 2 位,结果为 00000101,即 5
cout << result << endl;
return 0;
}
左移和右移运算符在一些位操作、数据压缩、加密算法以及与硬件相关的编程中非常有用。