📅  最后修改于: 2023-12-03 15:13:44.746000             🧑  作者: Mango
C/C++语言中拥有六个按位运算符,它们分别是:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移位(<<)和右移位(>>)。它们用于对二进制位按位进行操作。
按位与运算符(&)是二进制运算符,对两个操作数的每一个二进制位进行取“与”操作,仅当两个运算数的对应二进制位都为1时,结果的对应二进制位才为1,否则为0。
示例代码:
#include <iostream>
using namespace std;
int main() {
int a = 5; // 二进制:101
int b = 6; // 二进制:110
int c = a & b; // 二进制:100,转换为十进制为4
cout << c << endl; // 输出:4
return 0;
}
按位或运算符(|)是二进制运算符,对两个操作数的每一个二进制位进行取“或”操作,仅当两个运算数的对应二进制位都为0时,结果的对应二进制位才为0,否则为1。
示例代码:
#include <iostream>
using namespace std;
int main() {
int a = 5; // 二进制:101
int b = 6; // 二进制:110
int c = a | b; // 二进制:111,转换为十进制为7
cout << c << endl; // 输出:7
return 0;
}
按位异或运算符(^)是二进制运算符,对两个操作数的每一个二进制位进行取“异或”操作,仅当两个运算数的对应二进制位相同时,结果的对应二进制位为0,否则为1。
示例代码:
#include <iostream>
using namespace std;
int main() {
int a = 5; // 二进制:101
int b = 6; // 二进制:110
int c = a ^ b; // 二进制:011,转换为十进制为3
cout << c << endl; // 输出:3
return 0;
}
按位取反运算符(~)是一元运算符,对其操作数进行按位取反,即将二进制数的每一位从0变成1,从1变成0。
示例代码:
#include <iostream>
using namespace std;
int main() {
int a = 5; // 二进制:101
int b = ~a; // 二进制:11111111111111111111111111111010,转换为十进制为-6
cout << b << endl; // 输出:-6
return 0;
}
左移位运算符(<<)是二进制运算符,将其左边的操作数二进制数向左移动指定的位数,右侧用0补齐。移位后,高位溢出,舍弃。
示例代码:
#include <iostream>
using namespace std;
int main() {
int a = 5; // 二进制:101
int b = a << 2; // 二进制:10100,转换为十进制为20
cout << b << endl; // 输出:20
return 0;
}
右移位运算符(>>)是二进制运算符,将其左边的操作数二进制数向右移动指定的位数。移位后,低位溢出,舍弃。对于有符号整数,移位后需要考虑符号位。
示例代码:
#include <iostream>
using namespace std;
int main() {
int a = 20; // 二进制:10100
int b = a >> 2; // 二进制:101,转换为十进制为5
cout << b << endl; // 输出:5
return 0;
}
以上就是C/C++中的按位运算符,需要注意的是,由于操作的是二进制数的每一位,因此操作数为负数时需要注意符号位的影响。